grazie ora funziona
codice:
#include <iostream>
using namespace std;
main (){
double a,b,c,d;
double det;
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;
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];
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;
#include <iostream>
using namespace std;
main (){
double a,b,c,d;
double det;
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;
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];
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;
}
funziona, ma non sempre
per esempio
con la matrice
5 2
6 3
quando mi dovrebbe dare l'identita'
scrive
1 4.44089e-16
0 1
mentre con la matrice
3 6
2 8 viene
l-inversa vale
1 0
01
????