Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में तिरछे प्रमुख मैट्रिक्स?

एक मैट्रिक्स को विकर्ण रूप से प्रभावी मैट्रिक्स कहा जाता है यदि प्रत्येक मैट्रिक्स पंक्ति के लिए, पंक्ति का विकर्ण प्रवेश परिमाण उस पंक्ति में प्रत्येक अन्य गैर-विकर्ण प्रविष्टि के परिमाण के योग से बड़ा या बराबर होता है।

आइए पहले मान 3 के साथ एक स्थिर इंट वेरिएबल एन को परिभाषित करें जो हमारे मैट्रिक्स आयामों का प्रतिनिधित्व करता है।

const int N = 3;

isDDM(int mat[N][N], int n) एक बूलियन फ़ंक्शन है जो हमारे मैट्रिक्स और हमारे मैट्रिक्स के आकार की एक प्रति लेता है। अंदर हम लूप के लिए नेस्टेड का उपयोग करके अपने मैट्रिक्स की पंक्तियों और स्तंभों को पुनरावृत्त करते हैं। फिर हम प्रत्येक कॉलम के लिए प्रत्येक पंक्ति का योग पाते हैं और इसे अपने योग चर में जोड़ते हैं।

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]);

इसके बाद, हम जांचते हैं कि कोई विकर्ण तत्व योग से कम है या नहीं। यदि उनमें से कोई भी योग से कम है तो हम झूठे लौटते हैं और हमारे लूप से बाहर निकलते हैं और कार्य करते हैं अन्यथा लूप के पूरा होने के बाद हम सही लौटते हैं क्योंकि कोई भी तत्व योग से कम नहीं होता है।

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

  1. सी++ में सर्पिल मैट्रिक्स III

    मान लीजिए कि हमारे पास आर पंक्तियों और सी कॉलम के साथ एक 2 आयामी ग्रिड है, हम पूर्व की ओर (r0, c0) से शुरू करते हैं। यहां, ग्रिड का उत्तर-पश्चिम कोना पहली पंक्ति और स्तंभ पर है, और ग्रिड का दक्षिण-पूर्व कोना अंतिम पंक्ति और स्तंभ पर है। हम इस ग्रिड में हर स्थिति का दौरा करने के लिए एक दक्षिणावर्त सर

  1. जांचें कि क्या मैट्रिक्स सी ++ में उलटा है

    यहां हम देखेंगे कि कैसे जांचना है कि मैट्रिक्स उलटा है या नहीं। यदि एक मैट्रिक्स M है, तो उलटा मैट्रिक्स M-1 होगा - $$M^-1=\frac{adj(M)}{|M\lvert}$$ अतः यदि M का सारणिक शून्येतर है, तो ही हमें व्युत्क्रम प्राप्त हो सकता है, अन्यथा हमें इसका व्युत्क्रम नहीं मिलेगा। तो यहां हमें यह जांचना होगा कि नि

  1. सी ++ में एक सम ऐरे पहेली?

    यहां हम सरणी से संबंधित एक दिलचस्प समस्या देखेंगे। n तत्वों के साथ एक सरणी है। हमें n तत्वों की एक और सरणी बनानी है। लेकिन दूसरी सरणी की i-वें स्थिति i-वें तत्व को छोड़कर पहले सरणी के सभी तत्वों का योग धारण करेगी। और एक बाधा यह है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते हैं। यदि हम घट