プログラミングに関しては初心者です。
ここの皆様の力をお借りしたく、書き込みさせていただきました。
今、行列の積とその行列式を出すプログラムを作っています。
以下のコードで一応動作確認しました。(visual basic2008?を使っています)
#include <stdio.h>
void matrix(const int ma[3][3],const int mb[3][3],int mc[3][3])
{
int i,j,k;
for(i = 0; i < 3; i++)
for(j = 0;j < 3;j++)
for(k=0;k<3;k++)
mc[i][j]+=ma[i][k]*mb[k][j];
}
int main(void)
{
int i,j;
int ma[3][3] ={{1,3,4},{7,3,2},{9,11,2}};
int mb[3][3] ={{4,6,7},{6,7,3},{8,2,3}};
int mc[3][3] ={0};
matrix(ma,mb,mc);
for(i = 0;i < 3; i++)
{
for(j = 0;j < 3;j++)
printf("%4d",mc[i][j]);
printf("\n");
}
printf("Cの行列式は");
int det=0.0;
det=mc[0][0]*mc[1][1]*mc[2][2];
det+=mc[1][0]*mc[2][1]*mc[0][2];
det+=mc[2][0]*mc[0][1]*mc[1][2];
det-=mc[2][0]*mc[1][1]*mc[0][2];
det-=mc[1][0]*mc[0][1]*mc[2][2];
det-=mc[0][0]*mc[2][1]*mc[1][2];
printf("%4d",det);
printf("です。");
printf("\n\n");
return(0);
}
あまり詳しい仕組みまでは理解できないまでも、結果の数値はあっているようです。
そこで質問なのですが・・・。
今、行列の積については、関数matrixで表しています。
行列式も関数detaminantで表したいのですが、どのようにすればいいでしょうか?
また、上のプログラムについても、「ここはおかしい」「ここはこうしたほうがよい」などあればご教授願います。