用c语言实现高斯消去法,解三元一次方程组。求具体程序!!

2025-01-25 03:01:09
推荐回答(2个)
回答1:

#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<<"输入原方程组的阶"<>n; 

    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; 

}

回答2:

解方程用迭代法比较简单,消元的话,先选取主元(主要是为了计算的精度),然后在变换成倒三角矩阵,,然后再回代。就算可以计算出结果,这只是大概,具体的步骤,你可以上网找一找代码研究一下。