นิยาม
เมทริกซ์เป็น Diagonally Dominant ถ้าทุกแถว ค่าสัมบูรณ์ของสมาชิกแนวทแยง มากกว่าหรือเท่ากับผลรวมค่าสัมบูรณ์ของสมาชิกอื่นในแถวเดียวกัน
|aᵢᵢ| ≥ Σ|aᵢⱼ| (สำหรับ j ≠ i)
อัลกอริธึม
- วนลูปทุกแถว i
- คำนวณผลรวมค่าสัมบูรณ์ทั้งแถว
- ลบ |aᵢᵢ| ออก
- ตรวจสอบ |aᵢᵢ| < ผลรวมที่เหลือ → ไม่ใช่ Diagonally Dominant
โปรแกรมตัวอย่าง
#include <iostream>
#include <cmath>
using namespace std;
const int N = 3;
bool isDDM(int mat[N][N], int n) {
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 0; j < n; j++) sum += abs(mat[i][j]);
sum -= abs(mat[i][i]);
if (abs(mat[i][i]) < sum) return false;
}
return true;
}
int main() {
int mat[3][3] = {{3, -2, 1}, {1, -3, 2}, {-1, 2, 4}};
if (isDDM(mat, 3))
cout << "Yes, diagonally dominant matrix";
else
cout << "No, not diagonally dominant matrix";
return 0;
}
ผลลัพธ์
Yes, diagonally dominant matrix