我用c写了一个求逆矩阵的程序,但是所得的结果不对,还请各位大虾帮帮忙检查一下,到底问题出在什么地方?谢谢!!
#include "stdio.h"
#include "conio.h"
main()
{
int i,j,k,n;
double a[3][6],b=0,yz[3][3]={{1,2,3},{2,2,1},{3,4,3}};
for(i=0;i<3;i++)
for(j=0;j<6;j++)
{
if(j<3)
a[i][j]=yz[i][j];
else if(j==i+3)
{
a[i][j]=1;
}
else
a[i][j]=0;
} /* 赋值给a矩阵,组成(A E)结构。 */
for(k=0;k<3;k++)
for(i=2;i>k;i--)
for(j=0;j<6;j++)
{
a[i][j]-=(a[i-1][j]*a[i][k])/a[i-1][k];
} /* 使(A E)左下全为0。 */
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(i==j)
{
b=a[i][j];
break;
}
}
for(k=0;k<6;k++)
a[i][k]/=b; /* 整个第i行都除以对角线元素的值. */
} /* 使(A E)左边对角线为1 */
for(k=2;k>0;k--)
for(i=0;i<k;i++)
{
if(a[i][k]!=0)
{
for(j=0;j<6;j++)
a[i][j]-=a[k][j]*a[i][k];
}
}
printf("\n");
for(i=0;i<3;i++)
for(j=0;j<6;j++)
{
printf("%f ",a[i][j]);
if(j==5)
printf("\n");
}
getch();
}