Inversa de Matrices: Clase Matriz

Continuando con la incorporación de métodos y procedimientos para una Clase Matriz que comencé aquí:

Multiplicación de matrices: Clase Matriz

ahora vamos a desarrollar el ejemplo de la inversión de matrices. No obstante, no fue el único método que incluimos, ya que, también se tomó en cuenta la suma, resta y multiplicación por un escalar de matrices, sobrecargando los operadores +, – y *; respectivamente. También se sobrecargó el operador >> para introducir los elementos de una matriz a través de la cónsola.

La función miembro para la inversión es invermat. La incluimos en el siguiente programa (matriz.c++):

#include <iostream>

using namespace std; 

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

#include "Matriz.h"

int main() {

	system ("clear");

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

	int i, j, k;

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

		w[j] = new double [3]; 

	}
	
    w[0][0]=1, w[0][1]=2, w[0][2]=3, 
    w[1][0]=2, w[1][1]=1, w[1][2]=4,
    w[2][0]=3, w[2][1]=4, w[2][2]=1;

 	a.initMatriz(w); // Inicializa el objeto a

	cout << "Objeto a; Matriz a(3,3)\n";

	a.showMatriz();  // Muestra el objeto a mediante una función miembro de la clase Matriz

	b.invermat(w);   // Determina la inversa de la matriz b(3,3)

	cout << "\n";

	cout << "Inversa de la matriz a(3,3) = b(3,3)\n";

	cout << b;     // Muestra la matriz b

	c = a * b;     // Multiplica la matriz a por su inversa: debería ser la matriz identidad

	cout << "\n";

	cout << "Matriz identidad (I) producto de c = a * b\n";

	cout << c;     // Muestra la matriz c; la matriz identidad (I)

	delete w;

	return 0;

}

cuya salida es esta:

Objeto a; Matriz a(3,3)
   1.00000   2.00000   3.00000
   2.00000   1.00000   4.00000
   3.00000   4.00000   1.00000

Inversa de la matriz a(3,3) = b(3,3)
  -0.75000   0.50000   0.25000
   0.50000  -0.40000   0.10000
   0.25000   0.10000  -0.15000

Matriz identidad (I) producto de c = a * b
   1.00000   0.00000  -0.00000
   0.00000   1.00000   0.00000
   0.00000   0.00000   1.00000

La “nueva” Clase Matriz se encuentra empaquetada aquí:

MATRIZ0.4.zip

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

3 respuestas a Inversa de Matrices: Clase Matriz

  1. Pingback: Resolución de sistemas lineales: Clase Matriz |

  2. banano dijo:

    Cómo hago para que corra el programa en C++. Ayuda, por favor.

    • En Linux, simplemente desempaquetas MATRIZ0.4.zip, te posicionas en dicho directorio (MATRIZ0.4) y ejecutas, en cónsola, con ./matriz. El resultado es este:

      Objeto a; Matriz a(3,3)
         1.00000   2.00000   3.00000
         2.00000   1.00000   4.00000
         3.00000   4.00000   1.00000
      
      Inversa de la matriz a(3,3) = b(3,3)
        -0.75000   0.50000   0.25000
         0.50000  -0.40000   0.10000
         0.25000   0.10000  -0.15000
      
      Matriz identidad (I) producto de c = a * b
         1.00000   0.00000  -0.00000
         0.00000   1.00000   0.00000
         0.00000   0.00000   1.00000
      

      Para tus propósitos particulares modifica y compila con g++ el matriz.c++.

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