麻烦一下懂L-U分解的C高手

来源:百度知道 编辑:UC知道 时间:2024/06/08 17:49:16
麻烦一下高手给我一个现成的程序,用来解n维方程组,要求必须用L-U分解法
还要高斯迭代法解n维方程的C程序,不要C++的,谢谢了!

高斯-赛德尔 迭代法:

头文件和原型
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N_limit 100
float *GauseSeidel(float *a,int n);

高斯-赛德尔 通用子程序:
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_limit)
{
printf("iter divergence\n");
exit(1);
}
nu++;
}
while(fabs(dx)>1e-6);
return x;
}

调用方法:
void main()
{
int i,j,m,n;
float *x;
float c[20] = {4,-1,0,2,-1, -1,4,-1,0,-7.,