高斯約當法求逆矩陣的演算法實現(C++)
阿新 • • 發佈:2019-02-02
#include"iostream.h" #include"math.h" void main() { float a[10][10],A[10][10],b[10],c[10][10],d=0,f=0; int i=0,j=0,k=1,l=0,m=0,n=0; //------------------------------------------------------------------ cout<<"請輸入你所求矩陣的階數:\n"; cin>>n; cout<<"請輸入原矩陣:\n"; for(int r=1;r<=n;r++) { cout<<"|"; for(int s=1;s<=n;s++){cin>>c;} } //------------------------------------------------------------------ for(m=1;m<=n;m++) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { a=c; } } for(i=1;i<=n;i++) { b=0; } b=1; //******************************************************************************* //************************列選主元************************ for(k=1;k<=n;k++) { d=a; l=k; for(i=k+1;i<=n;i++) { if(fabs(a)>fabs(d)) { d=a; l=i; } } if(l!=k) { for(j=k;j<=n;j++) { f=a; a=a; a=f; } f=b; b=b; b=f; } //************************消元************************ for(j=k+1;j<=n;j++) { a=a/a;//第k行除以主元 } b=b/a;//第k行除以主元 for(i=1;i<=n;i++) { if(i!=k) { for(j=k+1;j<=n;j++) { a=a-a*a; } b=b-a*b; } } } //******************************************************************************* for(i=1;i<=n;i++) { A=b; } } cout<<"該矩陣的逆矩陣為:\n\n"; for(i=1;i<=n;i++) { cout<<"|"; for(j=1;j<=n;j++) { cout<<' '<<A<<' '; } cout<<"|"; cout<<endl<<endl; } //------------------------------------------------------------------ }