资源描述
高斯消元法C语言程序及其输出结果
杨学玉(33)
C语言程序:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 10
double a[N+1][N+1],b[N+1],x[N+1];
/* 用在此处以便可以让下面的程序也调用*/
main()
{ int n,i,j,k;
double temp;
printf("请输入方程组的维数:\n");
scanf("%d",&n);
if(n>N)
{
printf("错误:元素超过初设定的值%d\n",N);
exit(0);
}
printf("开始输入各元素的值:");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("请输入元素[%d][%d]",i,j);
scanf("%lf",&a[i][j]);
}
printf("请输入常数b[%d]",j);
scanf("%lf",&b[i]);
}
for(j=1;j<=n-1;j++)
{
for(i=j+1;i<=n;i++)
{
temp=a[i][j]/a[j][j];
for(k=1;k<=n;k++)
{
a[i][k]=a[i][k]-temp*a[j][k];
}
b[i]=b[i]-temp*b[j];
}
}
fun(n,n,a,b);
x[n]=b[n]/a[n][n];
for(j=n-1;j>=1;j--)
{
x[j]=b[j];
for(k=n;k>=j+1;k--)
{
x[j]=x[j]-x[k]*a[j][k];
}
x[j]=x[j]/a[j][j];
}
for(j=1;j<=n;j++)
{
printf("x[%d]=%f\n",j,x[j]);
}
}
/*列出高斯消元后得到的数组*/
fun(int m,int n,double a[N+1][N+1],double b[N+1])
{
int i,j;
printf("消元后的矩阵是:\n");
for(i=1;i<=m;i++)
{
for(j=1;j<=n;j++)
{
printf("%f",a[i][j]);
}
printf("\n") ;
}
}
C语言输出结果:
Mat-lab程序及输出结果:
展开阅读全文