LAB 3

MATRICES

DEFINICIÓN DE MATRIZ
Se llama matriz de orden m×n a todo conjunto rectangular de elementos aij dispuestos en m líneas horizontales (filas) y n verticales (columnas) de la forma:


Abreviadamente suele expresarse en la forma A =(aij), con i =1, 2, ..., m, j =1, 2, ..., n. Los subíndices indican la posición del elemento dentro de la matriz, el primero denota la fila (i) y el segundo la columna (j). Por ejemplo el elemento a25 será el elemento de la fila 2 y columna 5.
Dos matrices son iguales cuando tienen la misma dimensión y los elementos que ocupan el mismo lugar en ambas son iguales.

PRODUCTO DE DOS MATRICES
Dos matrices A y B son multiplicables si el número de columnas de A coincide con el número de filas de B.
Mm x n x Mn x p = M m x p
El elemento cij de la matriz producto se obtiene multiplicandocada elemento de la fila i de la matriz A por cada elemento de lacolumna j de la matriz B y sumándolos.
CALCULAR MATRIZ INVERSA APLICANDO LA DEFINICIÓN
 Uno de los métodos para calcular la matriz inversa es aplicar la definición.
- El método e aconsejable para matrices 2x2 (no aconsejable para matrices de orden 3 o superior)
Paso para calcular la inversa
Supongamos que nos piden calcular la inversa de la matriz 

- 1) Asignamos a los elementos de la matriz inversa (que desconocemos) letras: a, b, c, ..


            
 2) Planteamos la igualdad de la definición:    






- 3) Resolvemos el producto de matrices    



- 4) Igualamos elemento a elemento.
a+c=1
c=0
b+d=0
d=1
- 5) Resolvemos los sistemas de ecuaciones resultantes 


Por tanto la inversa es 
OPERACIONES EN EL PROGRAMA DEV C++
#include<math.h>
#include<iostream>
#include <iomanip> 
using namespace std;



//ZONA DE DECLARACION DE LOS VECTORES

const int TAM_N=3, TAM_M=3;
int i, k, j, Matriz[TAM_N][TAM_M], A[TAM_N][TAM_M], B[TAM_N][TAM_M], x[TAM_N][TAM_M];
double a,b,c,d,total;

int main ()
{
int opcion;
   do{

cout<<"*********** MENU DE FUNCIONES ***********\n\n";
cout<<"1)PRODUCTO DE LA MATRICES\n";
cout<<"1)PRODUCTO DE LA MATRICES otro modo\n";
cout<<"1)OPCION 1\n";
cout<<"1)DIGITE <0> PARA SALIR \n";
cout<<"***************************\n\n";
cout<<"ELIJA UNA OPCION:  ";cin>>opcion;

      switch (opcion)
      {           
                 
                 
                 case 1: {
                        cout<<"****************** PRODUCTO DE LA MATRICES ******************\n\n";
                        cout<<"///// INGRESE VALORES DE LA MATRIZ A /////\n";
        
       
                         for(i=1; i<=TAM_N; i++)
                         for(j=1; j<=TAM_M; j++)
                         {
                         cout<<" INGRESE EL ELEMENTO A[ "<<i<<","<<j<<" ] = "; cin>>A[i][j];
                         }
       
                         cout<<endl;
                         cout<<"///// INGRESE VALORES DE LA MATRIZ B /////\n";
       
                         for(i=1; i<=TAM_N; i++)
                         for(j=1; j<=TAM_M; j++)
                         {
                         cout<<" INGRESE EL ELEMENTO B[ "<<i<<","<<j<<" ] = "; cin>>B[i][j];
                         }
       
                         cout<<endl;
                         cout<<"///// EL PRODUCTO ES /////\n";
       //PROCESO
       
                     for(i=1; i<=TAM_N; i++)                 
                     for(j=1; j<=TAM_M; j++)
                     
                     x[i][j]=0;
                     for (k=1; k<=TAM_N; k++)
                     
                     {
                        
                         
                      x[i][j] = ( x[i][j]+ (A[i][k]*B[k][j]));
                     }
                     
       
       //RESULTADO
       for(i=1; i<=TAM_N; i++)
       for(j=1; j<=TAM_M; j++)
                {
                 cout<<" EL NUEVO ELEMENTO ES M[ "<<i<<","<<j<<" ] = "<<x[i][j]<<endl;        
                }
       cout<<endl;
       cout<<endl;
       cout<<"**********************\n\n";
       
       
       //FIN DEL CASO 1
                        
                        
                         }
                 break;
                 
                 case 2: {
                        
                        
                        //INICIAMOS LAS MATRICES EN 0 
int matrizA[3][3] = {}; 
int matrizB[3][3] = {}; 
int matrizC[3][3] = {}; 
int numero = 0; 

//MATRIZ A 

for(int x = 0; x < 3; x++) 
for(int y = 0; y < 3; y++) 
cout << "INGRESE EL ELEMENTO A[" << x << "]" << "[" << y << "] = "; 
cin >> numero; 
matrizA[x][y] = numero; 

//MATRIZ B 
cout << endl; 

for(int x = 0; x < 3; x++) 
for(int y = 0; y < 3; y++) 
cout << "INGRESE EL ELEMENTO B[" << x << "]" << "[" << y << "] = "; 
cin >> numero; 
matrizB[x][y] = numero; 

//MULTIPLICACION DE MATRICES 

for(int i = 0; i < 3; i++) 
for(int j = 0; j < 3; j++) 
for(int k = 0; k < 3; k++) 
matrizC[i][j] = (matrizC[i][j] + (matrizA[i][k] * matrizB[k][j])); 


//IMPRIME MATRIZ A 
cout << endl << "DISTRIBUCION GRAFICA\n" << "----------------------" << endl << "Matriz A: " << endl; 

for(int i = 0; i < 3; i++) 
{
for(int j = 0; j < 3; j++) 
cout << setw(10) << matrizA[i][j]; 
cout << endl; 

cout << endl << "Matriz B: " << endl; 

//iMPRIME MATRIZ B 
for(int i = 0; i < 3; i++) 
{
for(int j = 0; j < 3; j++) 
cout << setw(10) << matrizB[i][j]; 
cout << endl; 

//iMPRIME RESULTADO 
cout << endl << "\nMultiplicacion de A x B: \n" << endl; 

for(int i = 0; i < 3; i++) 
{
for(int j = 0; j < 3; j++) 
cout << setw(10) << matrizC[i][j]; 
cout << endl; 
 }             
                        
                        
                        
                        
                        }
                 break;
                 
                 case 3: {
                        
                        
 cout<<"INGRESE LOS VALORES DE LA MATRIZ:"<<endl;
cout<<"|a b|" <<endl;
cout<<"|c d|" <<endl;
cout<<endl;
cout<<"a: ";
cin>>a;
cout<<"b: ";
cin>>b;
cout<<"c: ";
cin>>c;
cout<<"d: ";
cin>>d;

total=a*d-b*c;

if(total!=0)
{
    cout<<endl;
    cout<<"LA MATRIZ INVERSA ES : \n"<<endl;
    cout<<d/total<<"  "<<-b/total<<endl;
    cout<<-c/total<<"  "<<a/total<<endl;

}
else{
    cout<<"Error el det. da 0";
}
                        
                        
                        
                         }
                 break;
      }
                
}while (opcion!=0);

system ("pause");
return 0;    
}


No hay comentarios:

Publicar un comentario