एक मैट्रिक्स को विकर्ण प्रभावी मैट्रिक्स कहा जाता है यदि प्रत्येक मैट्रिक्स पंक्ति के लिए, उस पंक्ति के विकर्ण प्रविष्टि का परिमाण उस पंक्ति में हर दूसरी गैर-विकर्ण प्रविष्टि के परिमाण के योग से बड़ा या बराबर होता है।
आइए पहले एक स्थिर int वेरिएबल N को मान 3 के साथ परिभाषित करें जो हमारे मैट्रिक्स आयामों को दर्शाता है।
const int N = 3;
isDDM(int mat[N][N], int n) एक बूलियन फंक्शन है जो हमारे मैट्रिक्स की एक प्रति और मैट्रिक्स का आकार लेता है। अंदर हम नेस्टेड फॉर लूप का उपयोग करके अपने मैट्रिक्स की पंक्तियों और स्तंभों पर पुनरावृति करते हैं। हम फिर प्रत्येक पंक्ति का योग प्रत्येक स्तंभ के लिए निकालते हैं और इसे अपने sum वेरिएबल में जोड़ते हैं।
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]);
अगला, हम जांचते हैं कि क्या कोई विकर्ण तत्व योग से कम है या नहीं। यदि उनमें से कोई भी योग से कम है तो हम false वापस करते हैं और अपना लूप और फंक्शन छोड़ देते हैं अन्यथा लूप पूरा होने के बाद हम true वापस करते हैं क्योंकि कोई भी तत्व योग से कम नहीं है।
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;
}
अंत में, वापस किए गए मान के आधार पर हम अपने मुख्य फंक्शन में प्रदर्शित करते हैं कि यह विकर्ण प्रभावी मैट्रिक्स है या नहीं।
if(isDDM(mat,matSize)){
cout << "yes, its a diagonally dominant matrix";
} else {
cout << "NO, its not a diagonally dominant matrix";
}
उदाहरण
यह जांचने के लिए निम्नलिखित कार्यान्वयन देखें कि मैट्रिक्स विकर्ण प्रभावी है या नहीं।
#include <iostream>
const int N = 3;
using namespace std;
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 matSize = 3;
int mat[N][N] = {
{ 3, -2, 1 },
{ 1, -3, 2 },
{ -1, 2, 4 }
};
if(isDDM(mat,matSize)){
cout << "yes, its a diagonally dominant matrix";
} else {
cout << "NO, its not a diagonally dominant matrix";
}
return 0;
}
आउटपुट
उपरोक्त कोड निम्नलिखित आउटपुट देगा:
yes, its a diagonally dominant matrix