如何用编程实现高斯列主元消去法?

如题所述

第1个回答  推荐于2018-11-04
用C语言编制以下程序:
#include <stdio.h>
#include <math.h>
void main()
{
int i,j,k,ik,n;
float max,t,a[10][10],x[10],sum;
printf("请输入方程组的阶数:");
scanf("%d",&n);
printf("请输入增广矩阵\n");
for (i=1;i<=n;i++)
for (j=1;j<=n+1;j++)
scanf("%f",&a[i][j]);
for (k=1;k<=n-1;k++)
{
max=0.0;
for (i=k;i<=n;i++)
if (max<fabs(a[i][k]))
{
max=fabs(a[i][k]);
ik=i;
}
if (max==0)
{
printf("A is singular");
break;
}
if (ik!=k)
for (j=k;j<=n+1;j++)
{
t=a[k][j];
a[k][j]=a[ik][j];
a[ik][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 (a[n][n]==0)
printf("A is singular");
else
x[n]=a[n][n+1]/a[n][n];
for (k=n-1;k>=1;k--)
{
sum=0.0;
for (j=k+1;j<=n;j++)
sum=sum+a[k][j]*x[j];
x[k]=(a[k][n+1]-sum)/a[k][k];
}
for (i=1;i<=n;i++)
printf("x[%d]=%f\n",i,x[i]);
}本回答被网友采纳
第2个回答  2020-12-24

相似回答