Resolución de sistemas lineales: Clase Matriz

Anteriormente, en este artículo:

Resolucion de sistemas lineales: método de Gauss-Jordan

habiamos señalado la manera de resolver sistemas lineales por el método de Gauss-Jordan. Con el desarrollo de la Clase Matriz que se encuentra en:

Inversa de Matrices: Clase Matriz

podemos hacer también lo mismo pero de una manera más expedita. Lo que tenemos es que determinar la inversa de la matriz del sistema y multiplicarla por los coeficientes que se encuentran del otro lado de las igualdades. El resultado serán las incógnitas del sistema. Si consideramos el ejemplo aquí expuesto:

Estimación de datos acumulados (englobados) de precipitación: caso mensual

la matriz ampliada del sistema será:

   1             1          1          608.9
137.1        -111.5         0           0
171.7            0       -111.5         0

donde las tres primeras columnas representan la matriz del sistema y la última corresponde a los elementos que se encuentran del otro lado de la igualdad. El programa desarrollado fue este:

#include <iostream>

using namespace std; 

#include <cstdlib>
#include <iomanip>
#include <cassert>

#include "Matriz.h"

int main() {

	system ("clear");

	Matriz a(3,3), b(3,1), c(3,1), d(3,3); //Declara objetos de la clase Matriz

	int i, j;

 	double **w, **y;
	
	w = new double* [3]; y = new double* [3];
	
	for (j = 0; j < 3; j++) {

		w[j] = new double [3]; 

	}
	
	y[1] = new double [1];

	cout << "Introduzca la matriz del sistema (3x3)\n\n";

	for(i= 0; i < 3; i++){
                        
		for(j= 0; j < 3; j++){

   			cout << "A[" << i+1 <<"][" << j+1 << "] = ? ";
               
			cin >> w[i][j];
                   
		}
	
	}	

	a.initMatriz(w);

	cout << "\n";	

	cout << "Introduzca el arreglo para ampliar el sistema (matriz 3x1)\n\n";

	cin >> b;
 
	d.invermat(w); // Calcula la inversa

	c = d * b;	// Determina las incognitas del sistema en esta multiplicación de matrices d(3,3) * b(3,1)= c(3,1)

	cout << "\nEstas son las incognitas:\n\n";

	cout << c; // Imprime las incognitas del sistema de ecuaciones

	delete w;

	return 0;

}

Después de compilado y ejecutado el programa, la salida que se expone a continuación:

Introduzca la matriz del sistema (3x3)

A[1][1] = ? 1 
A[1][2] = ? 1
A[1][3] = ? 1
A[2][1] = ? 137.1
A[2][2] = ? -111.5
A[2][3] = ? 0
A[3][1] = ? 171.7
A[3][2] = ? 0
A[3][3] = ? -111.5

Introduzca el arreglo para ampliar el sistema (matriz 3x1)

A[1][1] = ? 608.9
A[2][1] = ? 0
A[3][1] = ? 0

Estas son las incognitas:

 161.53307
 198.62049
 248.74644

produce los resultados esperados.

Entradas relacionadas:

Resolución de sistemas lineales con Lapackpp

Esta entrada fue publicada en Código C++ y etiquetada . Guarda el enlace permanente.

Una respuesta a Resolución de sistemas lineales: Clase Matriz

  1. Pingback: Resolución de sistemas lineales con Lapackpp |

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s