【Java入門】行列の転置を求めるプログラムの書き方とサンプルコード
この記事では、Javaを使って行列の転置(転置行列)を求める方法について詳しく解説します。行列とは、数値などの要素を行と列の形式で配置したものであり、m行n列の行列は「m × n 行列」と呼ばれます。
行列の転置とは、元の行列の行と列を入れ替えて作られる新しい行列のことです。具体的には、元の行列の [i][j] 位置にある要素が、転置行列では [j][i] の位置に移動します。
処理内容のイメージ
以下に具体例を示します。
入力(元の行列):
定義された行列は次の通りです: 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
出力(転置後の行列):
行列の転置は次の通りです: 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
アルゴリズム
転置行列を求める手順は以下の通りです。
ステップ1 - 処理を開始する ステップ2 - 整数型の二次元配列 input_matrix と result_matrix を宣言する ステップ3 - input_matrix に値を設定する ステップ4 - 二重のforループで行列の各要素を走査し、input_matrix の [i][j] の値を result_matrix の [j][i] に代入する ステップ5 - result_matrix を表示する ステップ6 - 処理を終了する
例1:mainメソッド内にすべての処理を記述する場合
まずは、すべての操作を「main」メソッド内にまとめて記述するシンプルな例です。
public class MatrixTranspose {
static final int matrix_size = 4;
public static void main (String[] args) {
int input_matrix[][] = {
{1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}
};
System.out.println("定義された行列は次の通りです: \n");
for (int i = 0; i < matrix_size; i++) {
for (int j = 0; j < matrix_size; j++) {
System.out.print(input_matrix[i][j] + " ");
}
System.out.println();
}
int result_matrix[][] = new int[matrix_size][matrix_size];
for (int i = 0; i < matrix_size; i++)
for (int j = 0; j < matrix_size; j++)
result_matrix[i][j] = input_matrix[j][i];
System.out.println("\n行列の転置は次の通りです: ");
for (int i = 0; i < matrix_size; i++) {
for (int j = 0; j < matrix_size; j++) {
System.out.print(result_matrix[i][j] + " ");
}
System.out.println();
}
}
}出力結果
定義された行列は次の通りです: 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 行列の転置は次の通りです: 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
例2:オブジェクト指向スタイルでメソッドに分割する場合
次に、転置の処理を独立したメソッドとして切り出し、オブジェクト指向プログラミング(OOP)の考え方に沿って実装した例です。処理をメソッドに分離することで、コードの再利用性と可読性が向上します。
public class MatrixTranspose {
static final int matrix_size = 4;
static void transpose(int input_matrix[][]) {
int result_matrix[][] = new int[matrix_size][matrix_size];
for (int i = 0; i < matrix_size; i++)
for (int j = 0; j < matrix_size; j++)
result_matrix[i][j] = input_matrix[j][i];
System.out.println("\n行列の転置は次の通りです: ");
for (int i = 0; i < matrix_size; i++) {
for (int j = 0; j < matrix_size; j++) {
System.out.print(result_matrix[i][j] + " ");
}
System.out.println();
}
}
public static void main (String[] args) {
int input_matrix[][] = {
{1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}
};
System.out.println("定義された行列は次の通りです: \n");
for (int i = 0; i < matrix_size; i++) {
for (int j = 0; j < matrix_size; j++) {
System.out.print(input_matrix[i][j] + " ");
}
System.out.println();
}
transpose(input_matrix);
}
}出力結果
定義された行列は次の通りです: 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 行列の転置は次の通りです: 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
まとめ
行列の転置は、二重のforループを使って [i][j] と [j][i] の要素を入れ替えるだけで簡単に実装できます。小規模なプログラムではmainメソッドに直接記述しても問題ありませんが、規模が大きくなる場合は例2のように処理をメソッドに分割することで、保守性の高いコードになります。ぜひ実際にコードを動かして、挙動を確認してみてください。
-
正方形の面積を求めるJavaプログラムの書き方【初心者向け解説】
この記事では、Javaを使って正方形の面積を求める方法をわかりやすく解説します。正方形の面積は、次の公式で計算できます。辺 × 辺つまり s2正方形の面積の計算式正方形の1辺の長さを s とすると、その面積は s2(辺の2乗)で表されます。下図のように、縦と横が同じ長さの図形であるため、辺同士を掛け合わせるだけで面積が求まります。入力例1辺の長さ : 4出力例正方形の面積 : 16アルゴリズム処理の流れは以下の手順になります。Step 1 - 開始Step 2 - 整数型の変数 my_side(辺の長さ)と my_area(面積)を宣言するStep 3 - ユーザーから値を読み込む、または値を
-
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] # ドライ