• ベストアンサー

行列式のプログラム

適当な形式にて初期化された2つの2次元配列により、3×4行列Aと4×3行列Bの要素を表現し、積ABを求めて表示させるプログラムなんです。 ここまでならなんとかなるかもと思ったんですが、行列はAはプログラム中で以下の数値で初期化して、行列Bの要素はキーボードから入力させるようにしないといけないんです。。   2.0 3.0 4.0 5.0 A= 3.0 4.0 5.0 6.0   1.0 2.0 3.0 4.0 なんですけれども、教えていただけたらうれしいです。。 お願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

A= a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 B= b11 b12 b13 b21 b22 b23 b31 b32 b33 b41 b42 b43 C=A*B Aの着目している地点(ピボット)の横の列掛けるBのピボットの縦の列 c11=a11*b11+a12*b21+a13*b31+a14*b41 … cij=Σ(k=1~4)aik*bkj ということを踏まえて -----8<-------8<------8<-----8<------- #include <stdio.h> double A[3][4]={ {2.0, 3.0, 4.0, 5.0}, {3.0, 4.0, 5.0, 6.0}, {1.0, 2.0, 3.0, 4.0} }; double B[4][3]={ {1.1, 1.2, 1.3}, {2.1, 2.2, 2.3}, {3.1, 3.2, 3.3}, {4.1, 4.2, 4.3} }; double C[3][3]; void main(void){ int i,j,k; double sm; for(i=0;i<3;i++){ for(j=0;j<3;j++){ sm=0.0; for(k=0;k<4;k++){ sm+=A[i][k]*B[k][j]; } C[i][j]=sm; } } for(i=0;i<3;i++) printf("[%8.2f %8.2f %8.2f]\n",C[i][0],C[i][1],C[i][2]); }

spider1984
質問者

お礼

こういう計算の仕方もあるんですね!! とてもわかりやすかったです!! ありがとうございます!!

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

で, 何がわからないんでしょうか?

spider1984
質問者

補足

プログラムがわからなくて、、、 線形代数?やったことがなくて、困っています。 勉強してみたんですが、プログラムにどうやって組み込んだらいいかがわかりません。。。

関連するQ&A