高斯列主元消去法,求解齐次线性方程组的C语言实现

RT... RT 展开
 我来答
akak18183
2012-03-05 · TA获得超过1139个赞
知道小有建树答主
回答量:543
采纳率:0%
帮助的人:690万
展开全部
C/C++ code #include<stdio.h> #include <math.h> #define N 20 int main() { int n,i,j,k; int mi,tmp,mx; float a[N][N],b[N],x[N]; printf("\nInput n:"); scanf("%d",&n); if(n>N) { printf("The input n should in(0,N)!\n");     getch();     return 1; } if(n<=0) { printf("The input n should in(0,N)!\n");     getch();     return 1; } printf("Now input a(i,j),i,j=0...%d:\n",n-1); for(i=0;i<n;i++) { for(j=0;j<n;j++)     scanf("%f",&a[i][j]);} printf("Now input b(i),i,j=0...%d:\n",n-1); for(i=0;i<n;i++) scanf("%f",&b[i]); for(i=0;i<n-2;i++) { for(j=i+1,mi=i,mx=fabs(a[i][j]);j<n-1;j++)     if(fabs(a[j][i])>mx)     { mi=j;       mx=fabs(a[j][i]);     }     if(i<mi)     { tmp=b[i];b[i]=b[mi];b[mi]=tmp;       for(j=i;j<n;j++)       { tmp=a[i][j];         a[i][j]=a[mi][j];         a[mi][j]=tmp;       }     }     for(j=i+1;j<n;j++)     { tmp=-a[j][i]/a[i][i];       b[j]+=b[i]*tmp;       for(k=i;k<n;k++)       a[j][k]+=a[i][k]*tmp;     } } x[n-1]=b[n-1]/a[n-1][n-1]; for(i=n-2;i>=0;i--) { x[i]=b[i];     for(j=i+1;j<n;j++)     x[i]-=a[i][j]*x[j];     x[i]/=a[i][i]; } for(i=0;i<n;i++) printf("Answer:\n x[%d]=%f\n",i,x[i]); getch(); return 0; } #include<math.h> #include<stdio.h> #define NUMBER 20 #define Esc   0x1b #define Enter 0x0d float A[NUMBER][NUMBER+1] ,ark; int flag,n; exchange(int r,int k); float max(int k); message(); main() {    float x[NUMBER];        int r,k,i,j;    char celect;    clrscr();      printf("\n\nUse Gauss.");    printf("\n\n1.Jie please press Enter.");    printf("\n\n2.Exit press Esc.");    celect=getch();    if(celect==Esc)      exit(0);    printf("\n\n input n=");    scanf("%d",&n);      printf(" \n\nInput matrix A and B:");    for(i=1;i<=n;i++)    {     printf("\n\nInput a%d1--a%d%d and b%d:",i,i,n,i);            for(j=1;j<=n+1;j++)        scanf("%f",&A[i][j]);    }    for(k=1;k<=n-1;k++)                         {    ark=max(k);     if(ark==0)                      {       printf("\n\nIt's wrong!");message();     }     else if(flag!=k)      exchange(flag,k);      for(i=k+1;i<=n;i++)      for(j=k+1;j<=n+1;j++)      A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k];    }    x[n]=A[n][n+1]/A[n][n];    for( k=n-1;k>=1;k--)    {      float me=0;      for(j=k+1;j<=n;j++)      {        me=me+A[k][j]*x[j];      }        x[k]=(A[k][n+1]-me)/A[k][k];    }    for(i=1;i<=n;i++)    {      printf(" \n\nx%d=%f",i,x[i]);    }    message(); } exchange(int r,int k)      { int i; for(i=1;i<=n+1;i++)     A[0][i]=A[r][i]; for(i=1;i<=n+1;i++)     A[r][i]=A[k][i]; for(i=1;i<=n+1;i++)     A[k][i]=A[0][i]; } float max(int k)         { int i; float temp=0; for(i=k;i<=n;i++)     if(fabs(A[i][k])>temp)     {       temp=fabs(A[i][k]);       flag=i;     } return temp; } message()                                    { printf("\n\n Go on Enter ,Exit press Esc!"); switch(getch()) {    case Enter: main();    case Esc: exit(0);    default:{printf("\n\nInput error!");message();} } }
百瑞环保
2025-10-15 广告
百瑞环保科技(上海)有限公司,是中美团队合作的科技企业,有着丰富的国际资源和技术优势。自成立以来,百瑞一直保持着快速和有质量的发展,目前客户已经遍及中国的每个省份并出口一些其他国家。我们的团队在中国五个中心城市为客户提供优质的服务。百瑞的实... 点击进入详情页
本回答由百瑞环保提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式