该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#include
main()
{
int k,i,j,my;
int n=3;
double m=1e-8,mx;
double a[3][3]={{4,2,-2},{2,2,-3},{-2,-3,14}};
double b[3]={10,5,4},det[3];/*定义、输入值*/
for(k=0;k
{mx=0,my=0;
for(i=0;i
if(fabs(a[i][k])>mx)
{mx=fabs(a[i][k]);
my=i;}/*列选最大*/
if(fabs(mx)
printf("It is wrong!\n");/*判断*/
if(my!=k)
{double t,p;
for(i=k;i
{t=a[k][i];
a[k][i]=a[my][i];
a[my][i]=t;}
p=b[k];
b[k]=b[my];
b[my]=p;
}/*交换*/
for(i=k+1;i
{det[i]=a[i][k]/a[k][k];
b[i]=b[i]-det[i]*b[k];
for(j=k+1;j
a[i][j]=a[i][j]-det[i]*a[k][j];
}/*消去*/
}
det[0]=0;
for(i=0;i
{for(j=i+1;j
det[i]=det[i]+a[i][j]*b[j];}
for(i=0;i
b[i]=det[i]/a[i][i];
b[n-1]=b[n-1]/a[n][n];/*回代*/
for(i=0;i
printf("Result is %lf\n",b[i]);/*输出*/
}