📄 rect_qiuni.cpp
字号:
////////////////////////////////////////////////////////////////////////
//
// 团结紧张,严肃活泼 -------张佳伟
//
// http://vcroad.6to23.com
//
// ghost_2000@citiz.net
//
// 一个钜阵求逆程序
/////////////////////////////////////////////////////////////////////////
#include<iostream.h>
#include<math.h>
#include<conio.h>
void input(int &);//输入矩阵
float compute(int);//计算x阶矩阵的行列式值
void arrange();
void convert(int,int &,int &);
float a[50][50];
float s[50][50]={0.0};
int x;
float result=1.0;
int main()
{
int i,j,k,l;
float b[50][50];
input(x);
arrange();
for(j=1;j<=x;j++)
for(i=1;i<=x;i++)
{
for(k=1;k<=x;k++)
for(l=1;l<=x;l++)
if(k>=i) s[k][l]=s[k+1][l];//划去i行
for(l=1;l<=x;l++)
for(k=1;k<=x-1;k++)
if(l>=j) s[k][l]=s[k][l+1]; //划去j列
b[j][i]=(float)pow((-1),(i+j))*compute(x-1);
result=1.0;
arrange();
}
float mm=compute(x);
for(i=1;i<=x;i++)
{
for(j=1;j<=x;j++)
cout<<b[i][j]/mm<<" ";
cout<<endl;
}
getch();
return 0;
}
void input(int &rx)
{
unsigned short int i,j;
cout<<"矩求逆运算"<<endl<<endl;
cout<<"请输入矩阵的阶数:";cin>>rx;
for (i=1;i<=rx;i++)
{
cout<<"请输入矩阵的第"<<i<<"行:";
for (j=1;j<=rx;j++)
cin>>a[i][j];
cout<<endl;
}
cout<<endl;
}
float compute(int x)
{
int i,j;
unsigned short int ii,si;
float temp;
for (i=1;i<=x-1;i++)
{
j=i;
if(s[i][j]==0)
{
for(si=i+1;si<=x;si++)
if(s[si][j]!=0) break;
if(si!=x+1)
convert(si,i,j);
else
break;
}
for(ii=i;ii<=x-1;ii++)
{
temp=s[ii+1][i]/s[i][i];
for(j=i;j<=x;j++)
s[ii+1][j]=s[ii+1][j]-s[i][j]*temp;
}
}
for(i=1;i<=x;i++)
result=result*s[i][i];
return result;
}
void convert(int ss,int &i,int &j)
{
float stemp[50];
for(j=i;j<=x;j++)
{
stemp[j]=s[ss][j];
s[ss][j]=s[i][j];
s[i][j]=stemp[j];
}
result=result*(-1);
}
void arrange()
{
int i,j;
for(i=1;i<=x;i++)
for(j=1;j<=x;j++)
s[i][j]=a[i][j];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -