#include
#include
using namespace std;
#define MAX 50
void input(double a[MAX][MAX+1],int n)
{
cout<<"输入原方程组的增广矩阵"< for(int i=0;i for(int j=0;j cin>>a[i][j]; } void output(double x[],int n) { cout<<"Gauss 消去法得到的原方程组的解为"< for(int k=0;k cout< } int main() { double a[MAX][MAX+1],x[MAX],sum,max,t; int n,i,j,k,max_i; cout<<"输入原方程组的阶"< input(a,n); for(k=0;k { max=a[k][k]; max_i=k; for(i=k+1;i if(fabs(a[i][k])>fabs(max)) { max=a[i][k]; max_i=i; } if(max==0) break; if(max_i!=k)//交换两行 for(j=k;j { t=a[k][j]; a[k][j]=a[max_i][j]; a[max_i][j]=t; } for(i=k+1;i { a[i][k]=a[i][k]/-a[k][k]; for(j=k+1;j a[i][j]=a[i][j]+a[i][k]*a[k][j]; }//消元 } if(max==0)cout<<"原方程组无解"< else { for(k=n-1;k>=0;k--) { sum=0; for(j=k+1;j sum=sum+a[k][j]*x[j]; x[k]=(a[k][n]-sum)/a[k][k]; }//回代 output(x,n); cout< } return 0; }
解方程用迭代法比较简单,消元的话,先选取主元(主要是为了计算的精度),然后在变换成倒三角矩阵,,然后再回代。就算可以计算出结果,这只是大概,具体的步骤,你可以上网找一找代码研究一下。