C++用高斯消元法求解方程组
1个回答

#include

int main()

{

x05int a[3][4]={{1,2,3,1},{2,7,5,6},{1,4,9,-3}};

x05int i,j;

x05//第一行求解,现在第一行第一个参数就为1,所以不用作处理,直接消其它行第一列参数

x05for (i=1;i<3;i++)

x05{

x05x05for (j=3;j>=0;j--)

x05x05{

x05x05x05a[i][j]=a[i][j]-a[i][0]*a[0][j];

x05x05}

x05}

x05//第二行求解,先将第二行参数归一化

x05a[1][3]=a[1][3]/a[1][1];

x05a[1][2]=a[1][2]/a[1][1];

x05a[1][1]=1;

x05//消其它行第二列参数

x05//先消第一行

x05for (j=3;j>0;j--)

x05{

x05x05a[0][j]=a[0][j]-a[0][1]*a[1][j];

x05}

x05//消第三行

x05for (j=3;j>0;j--)

x05{

x05x05a[2][j]=a[2][j]-a[2][1]*a[1][j];

x05}

x05//求解第三行,先将第三行第参数归一化

x05a[2][3]=a[2][3]/a[2][2];

x05a[2][2]=1;

x05//消其它行第三列参数

x05for (i=0;i<2;i++)

x05{

x05x05for (j=3;j>1;j--)

x05x05{

x05x05x05a[i][j]=a[i][j]-a[i][2]*a[2][j];

x05x05}

x05}

x05printf("方程组解为:nx1=%dnx2=%dnx3=%dn",a[0][3],a[1][3],a[2][3]);

x05return 0;

}

结果: