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

 我来答
ForeverNumen
推荐于2016-03-17 · 一个兴趣使然的单身通信汪
ForeverNumen
采纳数:326 获赞数:1946

向TA提问 私信TA
展开全部

#include<iostream> 

#include<cmath>

using namespace std; 

#define MAX 50 

void input(double a[MAX][MAX+1],int n) 

    cout<<"输入原方程组的增广矩阵"<<endl;

    for(int i=0;i<n;i++) 

        for(int j=0;j<n+1;j++) 

            cin>>a[i][j];

}

void output(double x[],int n) 

    cout<<"Gauss 消去法得到的原方程组的解为"<<endl;

    for(int k=0;k<n;k++) 

        cout<<x[k]<<" "; 

}

int main()

{

    double a[MAX][MAX+1],x[MAX],sum,max,t;

    int n,i,j,k,max_i; 

    cout<<"输入原方程组的阶"<<endl; cin>>n; 

    input(a,n); 

    for(k=0;k<n-1;k++)//选主元素

    { max=a[k][k];

    max_i=k; 

    for(i=k+1;i<n;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<n+1;j++)

            {

                t=a[k][j];

                a[k][j]=a[max_i][j];

                a[max_i][j]=t; 

            } 

            for(i=k+1;i<n;i++)

            { 

                a[i][k]=a[i][k]/-a[k][k];

                for(j=k+1;j<n+1;j++)

                    a[i][j]=a[i][j]+a[i][k]*a[k][j];

            }//消元

    } 

    if(max==0)cout<<"原方程组无解"<<endl;

    else

    {

        for(k=n-1;k>=0;k--) 

        { 

            sum=0; 

            for(j=k+1;j<n;j++) 

                sum=sum+a[k][j]*x[j];

            x[k]=(a[k][n]-sum)/a[k][k];

        }//回代 

        output(x,n); 

        cout<<endl; 

    } 

    return 0; 

}

东莞大凡
2024-11-14 广告
标定板认准大凡光学科技,专业生产研发厂家,专业从事光学影像测量仪,光学投影测量仪.光学三维测量仪,光学二维测量仪,光学二维测量仪,光学三维测量仪,光学二维测量仪.的研发生产销售。东莞市大凡光学科技有限公司创立于 2018 年,公司总部坐落于... 点击进入详情页
本回答由东莞大凡提供
抬头微笑lyq
2012-03-30
知道答主
回答量:13
采纳率:0%
帮助的人:2.1万
展开全部
解方程用迭代法比较简单,消元的话,先选取主元(主要是为了计算的精度),然后在变换成倒三角矩阵,,然后再回代。就算可以计算出结果,这只是大概,具体的步骤,你可以上网找一找代码研究一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式