C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で行列の転置を求めるプログラムの書き方【サンプルコード付き解説】

行列とは、数値を行と列の形式に整理して並べた長方形の配列のことです。そして「転置行列」とは、元の行列の行を列に、列を行に入れ替えて作られる新しい行列を指します。

転置行列のイメージ

例として、次のような3×3の行列を見てみましょう。

1 2 3
4 5 6
7 8 9

この行列を転置すると、次のようになります。

1 4 7
2 5 8
3 6 9

元の行列の1行目(1, 2, 3)が、転置後には1列目になっていることが分かります。このように、元の行列の要素 a[i][j] は、転置後には a[j][i] の位置へ移動します。

C++による転置行列を求めるプログラム

以下が、C++で行列の転置を求めるプログラムの全体像です。

サンプルコード

#include<iostream>
using namespace std;
int main() {
    int transpose[10][10], r=3, c=2, i, j;
    int a[3][3] = { {1, 2} , {3, 4} , {5, 6} };
    cout<<"行列:"<<endl;
    for(i=0; i<r; ++i) {
        for(j=0; j<c; ++j)
        cout<<a[i][j]<<" ";
        cout<<endl;
    }
    cout<<endl;
    for(i=0; i<r; ++i)
    for(j=0; j<c; ++j) {
        transpose[j][i] = a[i][j];
    }
    cout<<"転置行列:"<<endl;
    for(i=0; i<c; ++i) {
        for(j=0; j<r; ++j)
        cout<<transpose[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

出力結果

行列:
1 2
3 4
5 6

転置行列:
1 3 5
2 4 6

プログラムの解説

① 行列の初期化と表示

まず、2次元配列 a に元の行列(3行2列)の値を設定し、二重のforループで各要素を順番に表示しています。

int a[3][3] = { {1, 2} , {3, 4} , {5, 6} };
cout<<"行列:"<<endl;
for(i=0; i<r; ++i) {
    for(j=0; j<c; ++j)
    cout<<a[i][j]<<" ";
    cout<<endl;
}

② 転置の計算

続いて、ネストされたforループを使って転置を計算します。ここがこのプログラムの核心部分です。

for(i=0; i<r; ++i)
for(j=0; j<c; ++j) {
    transpose[j][i] = a[i][j];
}

ポイントは transpose[j][i] = a[i][j]; の一行です。行と列の添字(インデックス)を入れ替えて代入することで、行と列が反転した新しい行列が作られます。

③ 結果の表示

最後に、求まった転置行列を画面に出力します。

cout<<"転置行列:"<<endl;
for(i=0; i<c; ++i) {
    for(j=0; j<r; ++j)
    cout<<transpose[i][j]<<" ";
    cout<<endl;
}

表示時のループでは、外側のループが c(元の列数=転置後の行数)、内側のループが r(元の行数=転置後の列数)になっている点に注意してください。

まとめ

行列の転置は、「行と列のインデックスを入れ替えてコピーする」だけで実現できます。計算量は O(r×c) とシンプルで、正方行列だけでなく長方形の行列にもそのまま適用可能です。線形代数の基礎となる重要な操作なので、ぜひ自分でもコードを書いて動きを確認してみてください。

  1. Pythonで行列の転置を求める方法をわかりやすく解説

    本記事では、Pythonを使って行列の転置(transpose)を求める方法について、2つのアプローチを交えながら詳しく解説します。 問題の概要 問題設定: 与えられた行列に対して、その転置行列を求めて表示します。 行列の転置とは、行列Aの要素 A[i][j] を A[j][i] と入れ替えることで得られる行列のことです。つまり、行と列を入れ替えた新しい行列が転置行列となります。 それでは、実際のコード実装を見ながら概念を確認していきましょう。 方法1:新しい行列を作成して転置を格納する 1つ目の方法は、入力行列とは別に新しい行列を用意し、そこに転置結果を格納するアプローチです。元の行列を保持

  2. Pythonで行列の転置を求めるプログラム

    この記事では、与えられた問題に対する解法とアプローチについて詳しく解説します。 問題文 ある行列が与えられたとき、その転置を同じ行列に格納し、結果を表示する必要があります。 行列の転置とは、行を列に、列を行に入れ替えたものです。言い換えれば、行列Aの転置は、要素A[i][j]をA[j][i]と入れ替えることで得られます。 実装例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): A[i][j], A[j][i] = A[j][i], A[i][j] # ドライ