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;

    }

    结果: