C++语言解多元一次方程组

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include //注意:不能使系数矩阵的行列式为0
#include
#define N 20
using namespace std;
int power(int m,int n)
{
int sum=1;
if(n==0&&m!=0)
return 1;
else
{
for(int i=0;isum*=m;
return sum;
}
}
double det(double a[N][N],int n)
{
double A;
double b[N];
if(n==1)
{
A=a[0][0];
return A;
}
else if(n==2)
{
A=a[0][0]*a[1][1]-a[0][1]*a[1][0];
return A;
}
else if(n==3)
{
A=a[0][0]*a[1][1]*a[2][2]+a[0][1]*a[1][2]*a[2][0]+a[0][2]*a[1][0]*a[2][1]-a[0][2]*a[1][1]*a[2][0]-a[0][1]*a[1][0]*a[2][2]-a[0][0]*a[1][2]*a[2][1];
return A;
}
else
{
A=0;
double c[N][N];
for(int i=0;ib[i]=a[i][0]*power(-1,i+1+1);
for(int i=0;ifor(int j=0;ja[i][j]=a[i][j+1];
for(int i=0;ifor(int j=0;jc[i][j]=a[i][j];
for(int i=0;i{
for(int j=i;j{
for(int k=0;k{
a[j][k]=a[j+1][k];
}
}
A+=b[i]*det(a,n-1);
for(int i=0;ifor(int j=0;ja[i][j]=c[i][j];
}
return A;
}
}
void main()
{
double a[N][N],B[N],xs[N][N],ZJ[N][N],A[N][N],BS[N][N],x[N],hlsz,k=-1;
int m,i,j;
cout<<"请输入方程组的元数:"<cin>>m;
cout<<"请输入输入方程组的系数矩阵:"<for(i=0;ifor(j=0;jcin>>xs[i][j];
cout<<"输入方程组等号右边值矩阵:\n";
for(i=0;icin>>B[i];
for(i=0;ifor(j=0;ja[i][j]=xs[i][j];
hlsz=det(a,m);
for(i=0;ifor(j=0;j{
for(int b=0;bfor(int c=0;ca[b][c]=xs[b][c];
for(int b=0;bfor(int c=0;c{
if(belse if(b=j) ZJ[b][c]=a[b][c+1];
else if(b>=i&&celse ZJ[b][c]=a[b+1][c+1];
}
for(int b=0;bfor(int c=0;ca[b][c]=ZJ[b][c];
A[i][j]=pow(k,i+j)*det(a,m-1);
}
for(i=0;ifor(j=0;jBS[j][i]=A[i][j];
for(i=0;ifor(j=0;jBS[i][j]/=hlsz;
for(i=0;i{
double sum=0;
for(j=0;j{
sum+=BS[i][j]*B[j];
}
x[i]=sum;
}
cout<<"方程组的解为:\n";
for(i=0;icout<<'x'<}

相关文档
最新文档