📄 列主元高斯消去法算法.cpp
字号:
//列主元高斯消去法算法
#include<iostream.h>
#include<math.h>
#include<stdlib.h>
void main()
{
double A[3][3]={ {12 , -3, 3},
{-18, 3, -1},
{ 1 , 1, 1} };
double b[3]={ 15,-15,6 };
double x[3];
double e,T,s;
int i,j,k,m,n;
cout<<"*****列主元高斯消去法算法*****"<<endl;
cout<<"解方程组:"<<endl;
cout<<"( 12 -3 3 ) (x1) ( 15 )"<<endl;
cout<<"|-18 3 -1 | |x2| = |-15 |"<<endl;
cout<<"( 1 1 1 ) (x3) ( 6 )"<<endl;
cout<<"请输入容许误差e:"<<endl;
cin>>e;
for(k=0;k<2;k++)
{ T=fabs(A[0][k]);
n=k;
for(m=1;m<3;m++)
{ if(T<fabs(A[m][k]))
{ T=fabs(A[m][k]);
n=m;
}
}
if(T<e)
{ cout<<"求解失败!"<<endl;
exit(0);
}
else
{ if(n!=k)
{ for(i=0;i<3;i++)
{ T=A[k][i];
A[k][i]=A[n][i];
A[n][i]=T;
}
T=b[k]; b[k]=b[n]; b[n]=T;
}
for(i=k+1;i<3;i++)
{ T=A[i][k]/A[k][k];
b[i]=b[i]-b[k]*T;
for(j=k+1;j<3;j++)
{
A[i][j]=A[i][j]-T*A[k][j];
}
}
}
}
if(fabs(A[2][2])<=e)
{ cout<<"求解失败!"<<endl;
exit(0);
}
else{ x[2]=b[2]/A[2][2];
for(i=1;i>=0;i--)
{ s=0;
for(j=i+1;j<3;j++)
{
s+=A[i][j]*x[j];
}
x[i]=(b[i]-s)/A[i][i];
}
}
cout<<"该方程组的解为: "<<endl;
for(i=0;i<3;i++)
{
cout<<"x"<<i+1<<" = "<<x[i]<<" ";
}
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -