设计一个C程序,解线性方程组

来源:百度知道 编辑:UC知道 时间:2024/05/13 09:45:17
请设计一个程序,解线性方程组,如下:
Ax=B
a(1,1)x1+a(1,2)x2+...+a(1,n)xn=b1
a(2,1)x1+a(2,2)x2+...+a(2,n)xn=b2
......
a(n,1)x1+a(n,2)x2+...+a(n,n)xn=bn
我已经有了一个程序,但它是从a(0,0)x0 b0到a(n-1,n-1)xn-1 bn-1的,
那位朋友帮我改成上面所要求的。谢谢!

原来的程序为:(那位朋友帮我改一下)

#include "stdlib.h"
#include "math.h"
#include "stdio.h"

#define MAX 255

int Guass(a,b,n)
int n;
double a[],b[];
{
int *js,l,k,i,j,is,p,q;
double d,t;
js=malloc(n*sizeof(int));
l=1;
for (k=0;k<=n-2;k++)
{
d=0.0;
/*下面是换主元部分,即从系数矩阵A的第K行,第K列之下的部分选出
绝对值最大的元,交换到对角线上。*/
for (i=k;i<=n-1;i++)
for (j=k;j<=n-1;j++)
{
t=fabs(a[i*n+j]); /*fabs()定义在math.h中,含义是求一个浮点数的绝对值。*/
if (t>d) { d=t; js[k]=j; is=i;}
}
if (d+1.0==1.0) l=0; /*主元为0*/
/*主元不为0的时候*/
else
{
if (js[k]!=k)
for (i=0;i<=n-1;i++)
{
p=i*n+k; q=i*n+js[k];
t=a[p]; a[p]=a[q]; a[q]=t;
}
if (is!=k)
{
for (j=k;j<=n-1;j++)
{
p=k*n+j; q=is*n+j;
t=a[p]; a[p]=a[q]; a[q]=t;
}<