📄
字号:
#include<iostream>
#include<math.h>
using namespace std;
#define n 3 //以三阶矩阵为例
void interchangerow(double *p,double *q)
{
int i;
double temp;
for(i=0;i<n;i++)
{
temp=*(p+i);
*(p+i)=*(q+i);
*(q+i)=temp;
}
}
//交换行元素的函数
void exchange(double x,double y)
{
double temp;
temp=x;
x=y;
y=temp;
}
//交换两个数的函数
void main()
{
int i,j,k,m,r;
double A[n][n],b[n],u[n][n],l[n][n],p3=0,p4=0,p5=0,p6=0,max=0,S[n],x[n],y[n],temp0=0;
cout<<"Please input the matrix of coefficients:"<<"\n";
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>A[i][j];
cout<<"Please input the right part:"<<"\n";
for(i=0;i<n;i++)
cin>>b[i];
//输入系数矩阵和右边矩阵
for(i=0;i<n;i++)
l[i][i]=1;
for(k=0;k<n;k++)
{
for(i=k;i<n;i++)
{
p3=0;
for(m=0;m<=k-1;m++)
p3+=l[i][m]*u[m][k];
S[i]=A[i][k]-p3;
}
max=fabs(S[k]);
r=k;
for(i=k;i<n;i++)
if(max<fabs(S[i])) r=i; //记录主元的行数
u[k][k]=S[r];
if(r!=k)
{
interchangerow(*(A+k),*(A+r));
exchange(b[k],b[r]);
} //交换行元素和右边矩阵的相应元素
for(i=k+1;i<n;i++)
{
p4=0;
for(m=0;m<=k-1;m++)
p4+=l[k][m]*u[m][i];
u[k][i]=A[k][i]-p4; //计算u矩阵
}
for(i=k+1;i<n;i++)
{
l[i][k]=S[i]/S[r]; //计算l矩阵
}
}
y[0]=b[0];
for(i=1;i<n;i++)
{
p5=0;
for(j=0;j<=i-1;j++)
p5+=l[i][j]*y[j];
y[i]=b[i]-p5;
}
x[n-1]=y[n-1]/u[n-1][n-1];
for(i=n-2;i>=0;i--)
{
p6=0;
for(j=i+1;j<n;j++)
p6+=u[i][j]*x[j];
x[i]=(y[i]-p6)/u[i][i];
}
cout<<"The result is:\n";
for(i=0;i<n;i++)
cout<<"x"<<i+1<<"="<<x[i]<<"\n";
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -