高斯消元法解线性方程组 各位请进 一起研究下哈
RT 关于用高斯消元法解线性方程组这个方法有几个环节 其中一个是要求:通过调换各行的顺序来将矩阵对角线上的元素弄为非零
于是 我就编了一个小程序
但是 发现达不到效果……
郁闷了两天 现在 贴出来
请各位仁兄侠姐帮忙研究下哈 共同进步!不胜感激!
PS:红色部分是我为了看效果放上去的程序;蓝色部分是循环的主体。
#include<math.h>
void main()
{
int n,i,j,k,g,h,m,c;float d,e;
scanf("%d",&n);
printf("n=%d",n);
float A[n][n]; float B[n][1];float C[1][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)scanf("%f",&A[i][j]);
};
for(k=0;k<n;k++)scanf("%f",&B[k][0]);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)printf("%f ",A[i][j]);
printf("\n");
};
for(k=0;k<n;k++)printf("%f\n",B[k][0]);
h=n-1;
for(g=0;g<h;g++)
{
while(A[g][g]=0)
{
for(j=0;j<n;j++)C[0][j]=A[g][j];
for(m=g+1;m<n;m++)
{
c=m;
if(A[m][g]!=0)break;
}
for(j=0;j<n;j++)A[g][j]=A[c][j];
for(j=0;j<n;j++)A[c][j]=C[0][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)printf("%f ",A[i][j]);
printf("\n");
};
}