入力した行列の「転置行列」を表示する
当ページのリンクには広告が含まれています。
スポンサーリンク
入力した行列の「転置行列」を表示するサンプルプログラムを紹介します。
転置行列
転置行列とは、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
このように入力した行列の「転置行列」を表示します。