devo fare un programma che inseriti gli elementi di una matrice 2x2 mi dia l'inversa....facile
il problema sorge quando vado a fare la controprova moltiplicando la matrice originaria per l'inversa....
il programma mi scrive questo nel terminal
questo e' il testo
#include <iostream>
using namespace std;
main (){
double a,b,c,d;
double det=a*d-b*c;
double M1 [2][2]= { {a,b}, {c,d}};
double M2 [2][2]= { {d/det,-b/det}, {-c/det,a/det}};
double MI [2][2]= { {1,0}, {0,1}};
double MII[2][2];
int j,k,l;
do{
cout<<" Inserisci il termine della matrice"<<endl<<" a11=";
cin>>a;
cout<<" Inserisci il termine della matrice"<<endl<<" a12=";
cin>>b;
cout<<" Inserisci il termine della matrice"<<endl<<" a21=";
cin>>c;
cout<<" Inserisci il termine della matrice"<<endl<<" a22=";
cin>>d;
det=a*d-b*c;
if (det==0){
cout<<" il determinante di questa matrice non deve essere nullo, inserisci i valori corretti"<<endl;
}
}
while(det==0);
cout<<" l'inversa vale "<<endl<<(d/det)<<" "<<(-b/det)<<endl<<(-c/det)<<" "<<(a/det)<<endl;
for(j=0; j<2; j++) { /* riga 1 */
for (k=0;k<2;k++){ /* colo2 */
MII[j][k]=0;
for(l=0; l<2; l++){ /* colo 1*/
MII[j][k]+= M1[j][l]*M2[l][k];
}
}
}
for(j=0;j<2;j++){
for(k=0; k<2; k++){
cout<<" "<<MII[j][k];
}
cout<<endl;
}
cout<<"vale "<<(MI==MII)<<endl;
}
credo che il problema nasca quando tenta di fare il prodotto delle matrici, quando va a leggere i valori dell-inversa.
in effetti il risultato e' quasi esatto, dovrebbe venire infatti una matrice identita'
1 0
0 1
invece viene
1 ..............
........... 1
aiutoooooooooooo!!!!!!!