#include<conio.h>
#include<math.h>
#include <stdio.h>
#include <assert.h>
#define A(j,k) (*(A+(n+1)*j+k))
#define B(j,k) (*(B+n*j+k)) int GS(double *A, double *result , int n) //ç¼åé«æ¯æ¶å»æ³æ±çº¿æ§æ³
{ double t;
int i,j,k,tj;
for(k=0;k<n-1;k++)
{t=A(k,k);<br> tj=k;<br> for(j=k+1;j<n;j++) //A(j,k)=*(*(A+j)+k)<br> if(fabs(A(j,k))>fabs(t)){t=A(j,k);tj=j;}
if(tj!=k)
{ for(i=0;i<=n;i++)
{ t=A(tj,i);A(tj,i)=A(k,i);A(k,i)=t;}
}
for(i=k+1;i<n;i++)
{ if(A(k,k)==0) return 0;
t=A(i,k)/A(k,k);//t=i/k±�0�6
for(j=k;j<n;j++) A(i,j)-=t*A(k,j);
A(i,n)-=t*A(k,n);
}
}
for(i=n-1;i>=0;i--)
{ t=A(i,n);
for(j=n-1;j>i;j--) t-=A(i,j)*A(j,n);//X[j]=A(j,n);
if(A(i,i)==0) return 0;
A(i,n)=t/A(i,i);// X[i]=A(i,n);
}
for(i=0;i<n;i++)
result[i]=A(i,n); return 1;
}
main()
{ double *A,*result;
int i,k,n,r;
double rd;
printf("Input N: "); //è¾å
¥æå 个æ¹ç¨
scanf("%d",&n);
A=new double[n*(n+1)];
result=new double[n];
assert(A&&result);
printf("Input Matrix[%d][%d] In Row Order\n",n,n+1);
for(k=0;k<n*(n+1);k++) //ä¾æ¬¡è¾å
¥æ¯ä¸ªæ¹ç¨ç左边çç³»æ°åå³è¾¹çå¼
scanf("%lf",A+k);
r=GS(A, result, n);
if(r==0) printf("æ 解ææ 穷解\n");
else for(i=0;i<n;i++) printf("X%d=%.15g\n",i,result[i]);
delete[] A;
delete[] result;
getch();
}
温馨提示:答案为网友推荐,仅供参考