谁帮我看看这个怎么改才能求解矩阵的解,用的是高斯消元法。
#include <stdio.h>#include<stdlib.h>
#include <math.h>
float *Colpivot(float*c,int n)
{
int i,j,t,k,r;
float *x,p;
x=(float*)malloc(n*sizeof(float));
for(r=0;r<n;r++)
x[r]=0;
for(i=0;i<=n-2;i++)
{
k=i;
for(j=j+1;j<=n-1;j++)
if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))
k=j;
if(k !=i)
for(j=i+1;j<=n-1;j++)
{
p=*(c+i*(n+1)+j);
*(c+i*(n+1)+j)=*(c+k*(n+1)+j);
*(c+k*(n+1)+j)=p;
}
for(j=i+1;j<=n-1;j++)
{
p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
for(t=i;t<=n;t++)
*(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
}
}
for(i=n-1;i>=0;i--)
{
for(j=n-1;j>=i+1;j--);
(*(c+i*(n+1)+n))-=x[j]*(*(c+i*(n+1)+j));
x[i]=(*(c+i*(n+1)+n))/(*(c+i*(n+1)+i));
}
return x;
}
int main()
{
int i,c;
int j,k;
float x;
int c{4}{5}={{2,-1,10,0,-11},{0,3,-1,8,-11},{10,1,2,0,6},{-1,11,-1,3,25}};
for(j=0;j<=3;j++)
for(k=0;k<=4;k++)
printf("c[%d][%d]=%f\n",j,k,c[j][k]);
x=Colpivot(c[0],4);
for(i=0;i<=3;i++)
printf("x[%d]=%f\n",i,x[i]);
return 0;
}