入力した行列の積(掛け算)を計算する
当ページのリンクには広告が含まれています。
スポンサーリンク
行列の差(引き算)を計算するサンプルプログラムを紹介します。
ここでは入力した 2x3 の行列の積を計算します。
行列の積
入力した行列「A」
$$ A = \left( \begin{array}{ccc} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array} \right) $$と行列「B」
$$ B = \left( \begin{array}{ccc} b_{11} & b_{12} & b_{13}\\ b_{21} & b_{22} & b_{23} \end{array} \right) $$の積(掛け算)
\begin{aligned} C & = A \times B \\ & = \left( \begin{array}{ccc} a_{11} b_{11} + a_{12} b_{21} & a_{11} b_{12} + a_{12} b_{22} & a_{11} b_{13} + a_{12} b_{23} \\ a_{21} b_{11} + a_{22} b_{21} & a_{21} b_{12} + a_{22} b_{22} & a_{21} b_{13} + a_{22} b_{23} \end{array} \right) \end{aligned}を計算します。
サンプルプログラム
それではサンプルプログラムをみてみましょう。
/* * C言語のサンプルプログラム - Webkaru * - 入力した行列の積(掛け算)を計算 - */ #include <stdio.h> int main(void){ int i, j, k, term; /* 行列 */ int a[2][2], b[2][3], c[2][3]; printf("\n1つ目の行列 A を入力\n"); for(i=0;i<2;++i){ for(j=0;j<2;++j){ printf("A[%d][%d] = ", i+1, j+1); scanf("%d", &a[i][j]); } } printf("\n2つ目の行列 B を入力\n"); for(i=0;i<2;++i){ for(j=0;j<3;++j){ printf("B[%d][%d] = ", i+1, j+1); scanf("%d", &b[i][j]); } } /* 行列の積(掛け算) */ for(i=0;i<2;++i){ for(j=0;j<3;++j){ c[i][j] = a[i][j] * b[i][j]; // 行列の項を計算 for(i=0;i<2;i++){ for(j=0;j<3;j++){ term = 0; for(k=0;k<2;k++) term = term + a[i][k]*b[k][j]; c[i][j] = term; } } } } printf("\n行列 C = A x B\n"); for(i=0;i<2;++i){ for(j=0;j<3;++j){ printf("C[%d][%d] = %d\n", i+1, j+1, c[i][j]); } } return 0; }
サンプルプログラムで使っている構文
実行結果
実行結果です。
1つ目の行列 A を入力 A[1][1] = 1 A[1][2] = 2 A[2][1] = 3 A[2][2] = 4 2つ目の行列 B を入力 B[1][1] = 5 B[1][2] = 6 B[1][3] = 7 B[2][1] = 8 B[2][2] = 9 B[2][3] = 10 行列 C = A x B C[1][1] = 21 C[1][2] = 24 C[1][3] = 27 C[2][1] = 47 C[2][2] = 54
このように行列の積を計算します。