C++ Program za izracunavanje Inverzne matrice matrici dimenzija 3×3.
#include <iostream> #include <cstdlib> #include <cmath> using namespace std; int main (){ int matricaA[3][3],matricaAT[3][3],kofaktor[3][3]; int sp_d,gl_d,D; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { cout<<"matrica ("<<i+1<<","<<j+1<<"): "; cin>>matricaA[i][j]; } } //racunanje determinante gl_d=(matricaA[0][0]*matricaA[1][1]*matricaA[2][2]) +(matricaA[0][1]*matricaA[1][2]*matricaA[2][0]) +(matricaA[0][2]*matricaA[1][0]*matricaA[2][1]); sp_d=(matricaA[0][2]*matricaA[1][1]*matricaA[2][0]) +(matricaA[0][0]*matricaA[1][2]*matricaA[2][1]) +(matricaA[0][1]*matricaA[1][0]*matricaA[2][2]); D=glavna_d-sporedna_d; //ako je D=0,nema smisla traziti inverz if(D!=0) { //transponovanje for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { matricaAT[j][i]=matricaA[i][j]; } } //racunanje kofaktora kof[0][0]=(matricaAT[1][1]*matricaAT[2][2]) -(matricaAT[1][2]*matricaAT[2][1]); kof[0][1]=((matricaAT[1][0]*matricaAT[2][2]) -(matricaAT[1][2]*matricaAT[2][0]))*(-1); kof[0][2]=(matricaAT[1][0]*matricaAT[2][1]) -(matricaAT[1][1]*matricaAT[2][0]); kof[1][0]=((matricaAT[0][1]*matricaAT[2][2]) -(matricaAT[0][2]*matricaAT[2][1]))*(-1); kof[1][1]=(matricaAT[0][0]*matricaAT[2][2]) -(matricaAT[0][2]*matricaAT[2][0]); kof[1][2]=((matricaAT[0][0]*matricaAT[2][1] -matricaAT[0][1]*matricaAT[2][0]))*(-1); kof[2][0]=(matricaAT[0][1]*matricaAT[1][2] -matricaAT[0][2]*matricaAT[1][1]); kof[2][1]=((matricaAT[0][0]*matricaAT[1][2] -matricaAT[1][0]*matricaAT[1][2]))*(-1); kof[2][2]=(matricaAT[0][0]*matricaAT[1][1] -matricaAT[0][1]*matricaAT[1][0]); cout<<"Inverzna matrica: "<<endl; cout<<"1/"<<D<<" * "<<endl; for(int i=0;i<3;i++) { if(i!=0) {cout<<endl;} for(int j=0;j<3;j++) { //samo radi ljepseg izgleda ispisa imamo if if(kof[i][j]>=0) {cout<<" "<<kofaktor[i][j]<<" ";} else {cout<<kofaktor[i][j]<<" ";} } } } else {cout<<"Determinanta je 0. Ne mogu izracunati inverz matrice!";} cout<<endl; system("pause"); return 0; } [/code]
Kao sto se vidi iz primjera zbog teh razloga inv. matrica nije mnozena faktorom 1/det(M)
(u programiranju nema razlomaka vec samo decimalni)
ali se moze primjetiti da je u biti zadatak izvrsen.
Isto tako ako je det(M)=0,nema smisla traziti inverznu matricu.
I taj slucaj je predvidjen.
Pozdrav!