Javaで上三角行列を表示するプログラム
この記事では、上三角行列を表示する方法について詳しく解説します。
行列とは、要素を行と列に整然と配置したデータ構造のことです。m行・n列からなる行列は「m × n 行列」と呼ばれます。その中でも上三角行列とは、主対角線(左上から右下にかけての斜めの要素)よりも下側にあるすべての要素が0である三角行列のことを指します。
処理の流れ(入力と出力の例)
以下に入力と出力のイメージを示します。
入力(元の行列):
定義された行列: 2 1 4 1 2 3 3 6 2
出力(上三角行列):
上三角行列: 2 1 4 0 2 3 0 0 2
このように、主対角線より下の要素(行番号が列番号より大きい位置)がすべて0に置き換えられていることが分かります。
アルゴリズム
上三角行列を求めるための手順は以下の通りです。
- 処理を開始する。
- 整数型の二次元配列
input_matrixを宣言する。 - 行列の値を定義する。
- 二重のforループで行列の全要素を走査し、「行番号 > 列番号」の条件を満たす対角線より下の位置
[i][j]に0を代入する。 - 結果として行列を表示する。
- 処理を終了する。
例1:mainメソッド内にすべての処理を記述する場合
まずは、すべての操作を main メソッド内に直接記述するシンプルな例を見てみましょう。
public class UpperTriangle {
public static void upper_triangular_matrix(int input_matrix[][]) {
}
public static void main(String[] args) {
int input_matrix[][] = {
{ 2, 1, 4 },
{ 1, 2, 3 },
{ 3, 6, 2 }
};
int rows = input_matrix.length;
int column = input_matrix[0].length;
System.out.println("定義された行列:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < column; j++) {
System.out.print(input_matrix[i][j] + " ");
}
System.out.println();
}
if (rows != column) {
return;
} else {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < column; j++) {
if (i > j) {
input_matrix[i][j] = 0;
}
}
}
System.out.println("\n上三角行列:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < column; j++) {
System.out.print(input_matrix[i][j] + " ");
}
System.out.println();
}
}
}
}実行結果
定義された行列: 2 1 4 1 2 3 3 6 2 上三角行列: 2 1 4 0 2 3 0 0 2
ポイント解説: このプログラムでは、まず行数と列数を比較して正方行列かどうかを判定しています。正方行列でない場合は処理を中断し、正方行列の場合のみ「i > j」の条件に一致する要素(対角線より下の要素)を0に置き換えています。
例2:オブジェクト指向スタイルで関数にカプセル化する場合
次に、操作を独立したメソッドに切り出し、オブジェクト指向プログラミング(OOP)の考え方に沿って再利用しやすくした例を紹介します。
public class UpperTriangle {
public static void upper_triangular_matrix(int input_matrix[][]) {
int rows = input_matrix.length;
int column = input_matrix[0].length;
if (rows != column) {
return;
} else {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < column; j++) {
if (i > j) {
input_matrix[i][j] = 0;
}
}
}
System.out.println("\n上三角行列:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < column; j++) {
System.out.print(input_matrix[i][j] + " ");
}
System.out.println();
}
}
}
public static void main(String[] args) {
int input_matrix[][] = {
{ 2, 1, 4 },
{ 1, 2, 3 },
{ 3, 6, 2 }
};
int rows = input_matrix.length;
int column = input_matrix[0].length;
System.out.println("定義された行列:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < column; j++) {
System.out.print(input_matrix[i][j] + " ");
}
System.out.println();
}
upper_triangular_matrix(input_matrix);
}
}実行結果
定義された行列: 2 1 4 1 2 3 3 6 2 上三角行列: 2 1 4 0 2 3 0 0 2
このように、変換処理を upper_triangular_matrix メソッドとして独立させることで、main メソッドがすっきりし、他の行列に対しても同じ処理を簡単に適用できるようになります。実務では、このような関数への分割によってコードの可読性と保守性が大きく向上します。
まとめ
本記事では、Javaを使って上三角行列を生成・表示する方法を2通りのスタイルで紹介しました。どちらの方法でも核となるロジックは「二重ループで全要素を走査し、行番号が列番号より大きい要素を0に置き換える」というシンプルなものです。線形代数の計算やLU分解などの応用にもつながる基礎的なテクニックなので、ぜひマスターしておきましょう。
-
C言語で配列の下三角行列と上三角行列を出力するプログラム
プログラムの説明 本記事では、入力された配列(行列)から下三角行列と上三角行列を出力するC言語のプログラムを紹介します。 三角行列とは 三角行列とは、下三角行列または上三角行列のいずれかに該当する行列の総称です。 下三角行列 正方行列において、主対角線より上側のすべての要素が0である行列を「下三角行列」と呼びます。 上三角行列 正方行列において、主対角線より下側のすべての要素が0である行列を「上三角行列」と呼びます。 次のような形状を持つ行列は下三角行列(左三角行列)と呼ばれます。 $${\displaystyle L={\begin{bmatrix}\ell _{1,1}&&&&0\\\e
-
C++で行列が下三角行列かどうかを判定するプログラム
行数 r と列数 c が等しい(r = c)正方行列 M[r][c] が与えられたとき、その行列 M が「下三角行列」であるかどうかを判定する方法を解説します。 下三角行列とは 下三角行列とは、主対角線(およびその下側)の要素が非ゼロであり、主対角線より上側の要素がすべてゼロである行列のことです。 次の図の例を見てみましょう。 上の図で赤く強調されている要素は主対角線より上側の要素で、これらはすべてゼロになっています。それ以外の要素は非ゼロです。 入力例と出力例 Input: m[3][3] = { {1, 0, 0}, {2, 3, 0}, &nbs