高斯消去法解方程组:
程序流程图如下:
代码如下:
/*------------解线性方程组----------------
***************高斯消去法******************
*-------------Analysis---------------------
*1.a存放方程组系数,b存放方程组值
*2.高斯消去法分消元与回代两个过程
**********************************/
#include<iostream>
using namespace std;
int main()
{
unsigned k=0;
int i=0;
int j=0;
double a[4][4]={{0,0,0,0},{0,2,-1,3},{0,4,2,5},{0,1,2,0}};
double b[4]={0,1,4,7};
unsigned n=3;
cout<<"-------------Gauss Elimination--------------"<<endl;
cout<<"---------Procedure of calculating------------"<<endl;
cout<<"-----------------------------------------------------"<<endl;
for(k=1;k<=n;k++)
{
for(j=k+1;j<=n;j++)
{
a[k][j]=a[k][j]/a[k][k];
cout<<"a["<<k<<"]["<<j<<"]:"<<a[k][j]<<endl;
}
b[k]=b[k]/a[k][k];
for(i=k+1;i<=n;i++)
{
for(j=k+1;j<=n;j++)
{
a[i][j]=a[i][j]-a[i][k]*a[k][j];
cout<<"a["<<i<<"]["<<j<<"]:"<<a[i][j]<<endl;
}
}
for(i=k+1;i<=n;i++)
{
b[i]=b[i]-a[i][k]*b[k];
cout<<"b["<<i<<"]:"<<b[i]<<endl;
}
}
for(i=n-1;i>=1;i--)
{
for(j=i+1;j<=n;j++)
{
b[i]=b[i]-a[i][j]*b[j];
cout<<"b["<<i<<"]:"<<b[i]<<endl;
}
}
cout<<"-----------------------------------------------------"<<endl;
cout<<"Eliminating successfully..."<<endl;
cout<<"-----------Results--------------"<<endl;
cout<<"b[1]:"<<b[1]<<" b[2]:"<<b[2]<<" b[3]:"<<b[3]<<endl;
cout<<"Hello,Boker"<<endl;
system("pause");
return 0;
}
运行结果如下: