入力した行列の「転置行列」を表示する
当ページのリンクには広告が含まれています。
スポンサーリンク
入力した行列の「転置行列」を表示するサンプルプログラムを紹介します。
転置行列
転置行列とは、mxn行列の要素 \(a_{ij}\) と \(a_{ji}\) を入れ替えたnxm行列のことです。
ちょっと分かりづらいので、転置行列の「例」をみてみましょう。
例①
例えば、行列 \(A\)
$$ A = \left( \begin{array}{ccc} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{array} \right) $$の転置行列 \(A^{\mathrm{T}}\) は
$$ A^{\mathrm{T}} = \left( \begin{array}{ccc} 1 & 4 & 7\\ 2 & 5 & 8\\ 3 & 6 & 9 \end{array} \right) $$になります。
例②
例えば、行列 \(B\)
$$ B = \left( \begin{array}{ccc} 1 & 2 & 3\\ 4 & 5 & 6 \end{array} \right) $$の転置行列 \(B^{\mathrm{T}}\) は
$$ B^{\mathrm{T}} = \left( \begin{array}{cc} 1 & 4\\ 2 & 5\\ 3 & 6 \end{array} \right) $$になります。
サンプルプログラム
それではサンプルプログラムをみてみましょう。
/* * C言語のサンプルプログラム - Webkaru * - 入力した行列の「転置行列」を表示 - */ #include <stdio.h> int main(void){ int i, j; /* 行列と行列 */ int a[10][10], trans[10][10]; /* 行と列 */ int row, column; printf("行数 = "); scanf("%d", &row); printf("列数 = "); scanf("%d", &column); /* 行列の入力 */ printf("\n行列を入力してください\n"); for(i=0;i<row;++i){ for(j=0;j<column;++j){ printf("行列の要素 A[%d][%d] = ", i+1, j+1); scanf("%d", &a[i][j]); } } /* 入力した行列の表示 */ printf("\nA = \n"); for(i=0;i<row;++i){ for(j=0;j<column;++j){ printf("%d ", a[i][j]); if(j==column-1) printf("\n"); } } /* 転置行列 */ for(i=0;i<row;++i){ for(j=0;j<column;++j){ trans[j][i]=a[i][j]; } } /* 転置行列の表示 */ printf("\n転置行列 = \n"); for(i=0;i<column;++i){ for(j=0;j<row;++j){ printf("%d ",trans[i][j]); if(j==row-1) printf("\n"); } } return 0; }
サンプルプログラムで使っている構文
実行結果
いくつかの実行結果です。
行数 = 3 列数 = 3 行列を入力してください 行列の要素 A[1][1] = 1 行列の要素 A[1][2] = 2 行列の要素 A[1][3] = 3 行列の要素 A[2][1] = 4 行列の要素 A[2][2] = 5 行列の要素 A[2][3] = 6 行列の要素 A[3][1] = 7 行列の要素 A[3][2] = 8 行列の要素 A[3][3] = 9 A = 1 2 3 4 5 6 7 8 9 転置行列 = 1 4 7 2 5 8 3 6 9
行数 = 2 列数 = 3 行列を入力してください 行列の要素 A[1][1] = 1 行列の要素 A[1][2] = 2 行列の要素 A[1][3] = 3 行列の要素 A[2][1] = 4 行列の要素 A[2][2] = 5 行列の要素 A[2][3] = 6 A = 1 2 3 4 5 6 転置行列 = 1 4 2 5 3 6
このように入力した行列の「転置行列」を表示します。