?? 矩陣逆.cpp
字號:
//programm juzhenni.cpp
#include <iostream.h>
#include<iomanip.h>
void main()
{
const int N=100;
float a[N][N],b[N][N],l;
int i,j,k,m,s,B=1;
do
{
cout<<"請輸入矩陣的維數m:"<<endl;
cin>>m;
}while(!(m>0&&m<=100));
cout<<"Enter the elements of matrix a("<<m<<"*"<<m<<"):"<<endl;
for(i=0;i<m;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
for(i=0;i<m;i++)
for(j=0;j<m;j++)
{
if(i==j)
b[i][j]=1;
else
b[i][j]=0;//單位矩陣
}
for(k=0;B!=0&&k<m;k++)
{
if(a[k][k]==0)
{
for(i=k;i<m;i++)
{
if(a[i][k])
{
l=a[i][k];
for(j=k;j<m;j++)
{
a[i][j]=a[i][j]/l;
a[k][j]=a[k][j]+a[i][j];
}
for(j=0;j<m;j++)
{
b[i][j]=b[i][j]/l;
b[k][j]=b[k][j]+b[i][j];
}
for(j=0;j<m;j++)
{
if(j!=k)
{
l=a[j][k];
for(s=0;s<m;s++)
{
a[j][s]=a[j][s]-a[k][s]*l;
b[j][s]=b[j][s]-b[k][s]*l;
}
}
else
continue;
}
break;
}
else if(i==m-1&&a[i][k]==0)
{
B=0;
cout<<"該矩陣沒有逆!"<<endl;
}
}
}
else
{
l=a[k][k];
for(j=k;j<m;j++)
a[k][j]/=l;
for(j=0;j<m;j++)
b[k][j]/=l;
for(j=0;j<m;j++)
{
if(j!=k)
{
l=a[j][k];
for(s=0;s<m;s++)
{
a[j][s]=a[j][s]-a[k][s]*l;
b[j][s]=b[j][s]-b[k][s]*l;
}
}
else
continue;
}
}
}
if(B)
{
cout<<setiosflags(ios::fixed)<<setprecision(4);
cout<<"現在我們可得到逆矩陣:"<<endl;
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
cout<<setw(8)<<b[i][j];
cout<<endl;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -