谁能帮我设计一个C语言程序,求解方程组的,急啊,哪位高手帮下咯,万分感谢

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:50:44

假定你要的是线性方程组,下面的
float *GauseSeidel(float *a,int n)
是高斯赛德尔法求解线性方程组的通用子程序。
N 是 迭代次数极限。

main()里写了调用的例子。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 100
float *GauseSeidel(float *a,int n)
{
int i,j,nu=0;
float *x,dx;
x=(float *)malloc(n*sizeof(float));
for(i=0;i<=n-1;i++)
x[i]=0.0;
do {
for(i=0;i<=n-1;i++) {
float d=0.0;
for(j=0;j<=n-1;j++)
d+=*(a+i*(n+1)+j)*x[j];
dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));
x[i]+=dx;
}
if(nu>=N)
{
printf("iter divergence\n");
exit(1);
}
nu++;
}
while(fabs(dx)>1e-6);
return x;
}
void main()
{
int i;
float *x;
float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};
float *GauseSeidel(float *,int);
x=GauseSeidel(c,3);
for(i=0;i<=2;i++)
printf("x[%d]=%f\n",i,x[i]);