宿題とか手伝えます
■ このスレッドは過去ログ倉庫に格納されています
0271212
NGNG逆行列を表示して、行列と逆行列の掛け算を表示するように作ったのですが、
どこが間違っているかわりますか?
float mat2[3][3],e[3][3];
int a[3][3],mat[3][3],i,j,x,y,z;
for(i=0;i<3;i++)
{for(j=0;j<3;j++){
scanf("%d",&a[i][j]);}}
for(i=0;i<3;i++){for(j=0;j<3;j++){mat[i][j]=0;mat2[i][j]=0.0;}}
x=0;y=0;z=0;
y=a[0][0]*a[1][1]*a[2][2]+a[0][1]*a[1][2]*a[2][0]+a[0][2]*a[1][0]*a[2][1];
z=a[0][2]*a[1][1]*a[2][0]+a[0][1]*a[1][0]*a[2][2]+a[0][0]*a[2][1]*a[1][2];
x=y-z;
for(i=0;i<3;i++){
printf("%4d %4d %4d \n",a[i][0],a[i][1],a[i][2]);}
printf("行列aの行列式は%dです。\n",x);
else{
mat[0][0]=a[1][1]*a[2][2]-a[1][2]*a[2][1];
mat[0][1]=a[0][1]*a[2][2]-a[0][2]*a[2][1];
mat[0][2]=a[0][1]*a[1][2]-a[0][2]*a[1][1];
mat[1][0]=a[1][0]*a[2][2]-a[1][2]*a[2][0];
mat[1][1]=a[0][0]*a[2][2]-a[0][2]*a[2][0];
mat[1][2]=a[0][0]*a[1][2]-a[0][2]*a[1][0];
mat[2][0]=a[1][0]*a[2][1]-a[1][1]*a[2][0];
mat[2][1]=a[0][0]*a[2][1]-a[0][1]*a[2][0];
mat[2][2]=a[0][0]*a[1][1]-a[0][1]*a[1][0];
for(i=0;i<3;i++){for(j=0;j<3;j++)
mat2[i][j]=mat[j][i] / x;}
or(i=0;i<3;i++)
{printf("%4d %4d %4d \n",mat[0][i],mat[1][i],mat[2][i]);}
printf("逆行列a^-1です。\n");
for(i=0;i<3;i++){
printf("%4.2f %4.2f %4.2f \n",mat2[i][0],mat2[i][1],mat2[i][2]);}
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
e[i][j]=0.0;}
for(i=0;i<3;i++){for(j=0;j<3;j++){
e[i][0]+=a[i][j]*mat2[j][0];
e[i][1]+=a[i][j]*mat2[j][1];
e[i][2]+=a[i][j]*mat2[j][2];}}
printf("aの行列と逆行列の計算です。\n");
for(i=0;i<3;i++)
{printf("%4.2f %4.2f %4.2f \n",e[i][0],e[i][1],e[i][2]);}
■ このスレッドは過去ログ倉庫に格納されています