1. 程式人生 > >高斯約當法求逆矩陣的演算法實現(C++)

高斯約當法求逆矩陣的演算法實現(C++)

#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;
}
//------------------------------------------------------------------
}