我这个程序是一个矩阵运算:三个3*3矩阵。a,b,c.A是a的逆矩阵,求逆的方法是用伴随矩阵的笨办法。
现在是要算A*b*c
结果只能运行到输入矩阵a。然后就出错,请教高人我要怎么修改程序?
#include <iostream.h>
#include <iomanip.h>
void main()
{
int i,j;
double a[3][3],A[3][3],a1,a2,a3,a4,a5,a6,a7,a8,a9,a0;
cout<<"enter the elements of matrix a:"<<endl;
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
cin>>a[i][j];
a1=a[0][0];a2=a[0][1];a3=a[0][2];a4=a[1][0];a5=a[1][1];a6=a[1][2];a7=a[2][0];
a8=a[2][1];a9=a[2][2];
a0=a1*a5*a9+a2*a6*a7+a3*a4*a8-a3*a5*a7-a1*a6*a8-a2*a4*a9;
A[0][0]=a1*(a5*a9-a6*a8)/a0;A[0][1]=-a4*(a2*a9-a3*a8)/a0;
A[0][2]=a7*(a2*a6-a3*a5)/a0;A[1][0]=-a2*(a4*a9-a6*a7)/a0;
A[1][1]=a5*(a1*a9-a3*a7)/a0;A[1][2]=-a8*(a1*a6-a3*a4)/a0;
A[2][0]=a3*(a4*a8-a5*a7)/a0;A[2][1]=-a6*(a1*a8-a2*a7)/a0;
A[2][2]=a9*(a1*a5-a2*a4)/a0;
double b[3][3],c[3][3],d[3][3],e[3][3];
int k,l,m;
double n,q;
cout<<"enter the elements of matrix b:"<<endl;
for (k=1;k<=3;k++)
for (l=1;l<=3;l++)
cin>>b[k][l];
cout<<"enter the elements of matrix c:"<<endl;
for (l=1;l<=3;l++)
for (m=1;m<=3;m++)
cin>>c[l][m];
for (k=1;k<=3;k++)
{
for (m=1;m<=3;m++)
{
n=0;
for (l=1;l<=3;l++)
n+=b[k][l]*c[l][m];
d[k][m]=n;
}
}
for (i=1;i<=3;i++)
{
for (m=1;m<=3;m++)
{
q=0;
for (j=1;j<=3;j++)
q+=A[i][j]*d[k][m];
e[i][m]=q;
}
}
for (i=1;i<=3;i++)
{
for (m=1;m<=3;m++)
{
cout<<setw(10)<<q;
}
cout<<endl;
}
}