C语言编程中,进行矩阵求逆的计算,运用初等变换的原理,为什么我最后的结果中,后3列的数字一直不变呢?0
如题:最后的结果一直都是
1 0 0 1 0 0
0 1 0 0 1 0
0 0 1 0 0 1
就是说AE=EB中,后三列的数字一直都是E,即1 0 0
0 1 0
0 0 1
就像是后三列的数据不参与运算似的。求解~~~~!
/* 矩阵求逆 */
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
int n=2;
float aa[3][3];
float bb[3][6];
main()
{
int i,j,k,l,s,g,f;
float h;
/*输入3*3矩阵*/
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
{
printf("Please input a(%d,%d):",i,j);
scanf("%f",&h);
aa[i][j]=h;
}
}
/*在原矩阵后加E,变成3*6矩阵*/
for(i=0;i<=n;i++)
{
for(j=0;j<=n;j++)
{
bb[i][j]=aa[i][j];
}
}
for (i=0;i<=n;i++)
{
for(j=3;j<=5;j++)
{
if(j==i+3) bb[i][j]=1;
else bb[i][j]=0;
}
}
/*高斯消去法约化1*/
for(k=0;k<=n;k++)
{
for(j=k;j<=5;j++)
{
bb[k][j]=bb[k][j]/bb[k][k];
}
if(k==n) break;
for(i=k+1;i<=n;i++)
{
for(l=k;l<=5;l++)
{
bb[i][l]=bb[i][l]-bb[i][k]*bb[k][l];
}
}
}
/*高斯消去法约化2*/
for(k=n;k>0;k--)
{
for(i=k-1;i>=0;i--)
{
for(g=k;g<=5;g++)
{
bb[i][g]=bb[i][g]-bb[i][k]*bb[k][k];
}
}
}
/*输出[EB]*/
for(i=0;i<=n;i++)
{
for(j=0;j<=5;j++)
{
printf("%f ",bb[i][j]);
}
printf("\n");
}
printf("\n");
/*输出B*/
for(i=0;i<=n;i++)
{
for(f=3;f<=5;f++)
{
printf("%f ",bb[i][f]);
}
printf("\n");
}
}