全部版块 我的主页
论坛 数据科学与人工智能 IT基础 C与C++编程
1751 0
2021-10-24
#include<stdio.h>
#include<math.h>
#define MAX 3
void input(double a[MAX][MAX+1],long n);
void output(double x[MAX],long n);
int main(){
        double a[MAX][MAX+1],x[MAX],s,max,t;
        long n,i,j,k,maxi;printf("请输入方程组阶数\n");
        scanf("%ld",&n);input(a,n);
        for(k=0;k<=n-2;k++){
                max=a[k][k];maxi=k;
                for(i=k+1;i<=n-1;i++)
                        if(fabs(a[i][k])>fabs(max))
                                {max=a[i][k];maxi=i;}
                if(max==0) break;
                if(max!=k)
                        for(j=k;j<=n;j++)
                        {t=a[k][j];a[k][j]=a[maxi][j];a[maxi][j]=t;}
                for(i=k+1;i<=n-1;i++){
                        a[i][k]/=-a[k][k];
                        for(j=k+1;j<=n;j++)
                                a[i][j]+=a[i][k]*a[k][j];
                }
        }
        if(max==0) printf("无解。");
        else{
                for(k=n-1;k>=0;k--){
                        s=0;
                        for(j=k+1;j<=n-1;j++) s+=a[k][j]*x[j];
                        x[k]=(a[k][n]-s)/a[k][k];
                }
                output(x,n);
        }
        return 0;
}
void input(double a[MAX][MAX+1],long n){
        long i,j;
        printf("请输入增广矩阵:\n");
        for(i=1;i<=n;i++)
                for(j=1;j<=n+1;j++)
                        scanf("%lf",&a[i-1][j-1]);
}
void output(double x[MAX],long n){
        long k;printf("原方程的解为:\n");
        for(k=1;k<=n;k++)
                printf(" %lf",x[k-1]);
}

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群