如何在Java中檢查對角佔優矩陣?
在Java中,陣列是一個物件。它是一種非原始資料型別,用於儲存相同資料型別的多個值。Java中的矩陣只不過是一個多維陣列,它表示多行和多列。
如果矩陣中對角元素的絕對值大於等於該行中其他元素絕對值之和,則稱該矩陣為對角佔優矩陣。線上性方程組的數值分析求解中,此特性非常有用。即使方程的係數不精確已知,它也能保證求解方法會收斂到正確的答案。
這裡我們給出一個包含一組元素的矩陣,根據題目要求,我們必須檢查它是否是對角佔優矩陣。
讓我們深入研究這篇文章,瞭解如何使用Java程式語言來實現。
舉幾個例子
例1
給定矩陣:
45 22 23 24 99 26 27 28 79
對角元素為:45、29和79
行1:45 >= (22+23)
行2:99 > (24+26)
行3:79 > (27+28)
因此,給定矩陣是對角佔優矩陣。
例2
給定矩陣:
5 1 2 2 9 7 5 1 7
對角元素為:5、9和7
行1:5 > (1+2)
行2:9 > (2+7)
行3:7 > (5+1)
因此,給定矩陣是對角佔優矩陣。
例3
給定矩陣:
45 22 23 24 19 26 27 28 79
對角元素為:45、19和79
行1:45 >= (22+23)
行2:19 < (24+26)
行3:79 > (27+28)
在行2中,可以看到對角線值小於該行其他兩個元素的和。因此,給定矩陣不是對角佔優矩陣。
演算法
(針對第二種方法 - 使用者自定義方法的解釋)
步驟1 - 函式isDiagonallyDominant接受由二維整數陣列matrix表示的二維矩陣。
步驟2 - 變數n設定為矩陣的長度,假設它是一個方陣。
步驟3 - 外部for迴圈迭代矩陣的每一行。
步驟4 - 變數sum用於跟蹤當前行中元素絕對值之和,不包括對角元素。
步驟5 - 內部for迴圈迭代當前行的每一列。
步驟6 - 如果當前行和列索引(i和j)不相等,則將該位置元素的絕對值新增到sum中。
步驟7 - 如果對角元素的絕對值小於sum,則矩陣不是對角佔優矩陣,函式返回false。
步驟8 - 如果所有行都處理完畢而沒有找到非對角佔優行,則函式返回true,表示矩陣是對角佔優矩陣。
語法
Java中的Math.abs()方法返回數字的絕對值,即給定數字的非負值,與符號無關。
以下是它的語法:
Math.abs(inputMatrix[i][j])
其中,“inputMatrix”指的是給定的矩陣。
多種方法
我們提供了不同的方法來解決這個問題。
使用矩陣元素的靜態初始化
使用使用者自定義方法
讓我們一一檢視程式及其輸出。
方法1:使用矩陣元素的靜態初始化
在這種方法中,矩陣元素將在程式中初始化。然後根據演算法檢查給定的矩陣是否是對角佔優矩陣。
示例
public class Main {
public static void main(String[] args) {
int n = 3;
int[][] inputMatrix = {{7, 2, 1}, {3, 8, 2}, {1, 1, 10}};
//print the given matrix
System.out.println("The given matrix is: ");
for (int i = 0; i < inputMatrix.length; i++) {
for (int j = 0; j < inputMatrix[0].length; j++) {
System.out.print(inputMatrix[i][j] + " ");
}
System.out.println();
}
boolean isDiagonalDominant = true;
for (int i = 0; i < inputMatrix.length; i++) {
int sum = 0;
for (int j = 0; j < inputMatrix[0].length; j++) {
if (i != j) {
sum += Math.abs(inputMatrix[i][j]);
}
}
if (Math.abs(inputMatrix[i][i]) < sum) {
isDiagonalDominant = false;
break;
}
}
if (isDiagonalDominant) {
System.out.println("The given matrix is a diagonal dominant matrix.");
} else {
System.out.println("The given matrix is not a diagonal dominant matrix.");
}
}
}
輸出
The given matrix is: 7 2 1 3 8 2 1 1 10 The given matrix is a diagonal dominant matrix.
方法2:使用使用者自定義方法
在這種方法中,矩陣元素將在程式中初始化。然後呼叫使用者自定義方法,並將矩陣作為引數傳遞,並在方法內部根據演算法檢查給定的矩陣是否是對角佔優矩陣。
示例
public class Main {
public static void main(String[] args) {
int n = 3;
int[][] inputMatrix = {{11, 22, 33}, {44, 55, 66}, {77, 88, 99}};
//print the given matrix
System.out.println("The given matrix is: ");
for (int i = 0; i < inputMatrix.length; i++){
for (int j = 0; j < inputMatrix[0].length; j++){
System.out.print(inputMatrix[i][j] + " ");
}
System.out.println();
}
boolean result = isDiagonalAbsoluteValueGreaterThanSum(inputMatrix);
if(result==false)
System.out.println("The given matrix is not a diagonal dominant matrix.");
else
System.out.println("The given matrix is a diagonal dominant matrix.");
}
//user defined method
public static boolean isDiagonalAbsoluteValueGreaterThanSum(int[][] mat) {
int n = mat.length;
for (int a = 0; a < n; a++) {
int sum = 0;
// Sum the absolute values of elements in the current row excluding the diagonal element
for (int b = 0; b < n; b++) {
if (a != b) {
sum += Math.abs(mat[a][b]);
}
}
// Check if the absolute value of the diagonal element is less than the sum
if (Math.abs(mat[a][a]) < sum) {
return false;
}
}
return true;
}
}
輸出
The given matrix is: 11 22 33 44 55 66 77 88 99 The given matrix is not a diagonal dominant matrix.
在這篇文章中,我們探索了使用Java程式語言檢查對角佔優矩陣的不同方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP