计算方法中高斯列主元消去编程
/*******运算过程*******/
flag=1;
for (k=0;k<n;k++)
{
/*---选主元素---*/
d=a[k][k];
h=k;
for(l=k;l<n;l++)
{
if(fabs(a[l][k])>fabs(d))
{
d=a[l][k];
h=l;
}
}
if(h!=k)
{
for(j=k;j<n;j++)
{
t=a[h][j];
a[h][j]=a[k][j];
a[k][j]=t;
}
t=b[k];
b[k]=b[h];
b[h]=t;
}
if(a[k][k]==0)
flag=0;
/*---具体运算---*/
for (i=k+1;i<n;i++)
{
if(flag==0)
break;
m[i][k]=a[i][k]/a[k][k];
for(j=k;j<n;j++)
{
a[i][j]=a[i][j]-m[i][k]*a[k][j];
}
b[i]=b[i]-m[i][k]*b[k];
}
}
/*******回代过程*******/
if(flag!=0)
{
x[n-1]=b[n-1]/a[n-1][n-1];
for(i=n-2;(i>0)||(i==0);i--)
{
y[i]=0;
for(j=i+1;j<n;j++)
{
y[j]=y[j-1]+a[i][j]*x[j];
}
x[i]=(b[i]-y[j-1])/a[i][i];
}
/*******输出结果*******/
for(i=0;i<n;i++)
{
printf("x[%d]=%f\n",i,x[i]);
}
}
else
printf("oh my god!\n");
}