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

C++ प्रोग्राम: ग्राफ मैट्रिक्स का व्युत्क्रम (Inverse) ज्ञात करना


यह एक C++ प्रोग्राम है जो ग्राफ मैट्रिक्स का व्युत्क्रम ज्ञात करता है। मैट्रिक्स का व्युत्क्रम केवल तभी मौजूद होता है जब मैट्रिक्स नॉन-सिंगुलर हो यानी डिटरमिनेंट 0 नहीं होना चाहिए। मैट्रिक्स का व्युत्क्रम कई तरीकों से ज्ञात किया जा सकता है। यहां हम एडजॉइंट मैट्रिक्स और उसके डिटरमिनेंट का उपयोग करके ग्राफ मैट्रिक्स का व्युत्क्रम ज्ञात करते हैं। उदाहरण में शामिल चरण:

Begin    function INV() मैट्रिक्स का व्युत्क्रम प्राप्त करने के लिए:    DET() फंक्शन को कॉल करें।    ADJ() फंक्शन को कॉल करें।    सूत्र का उपयोग करके मैट्रिक्स का व्युत्क्रम ज्ञात करें;    Inverse(matrix) = ADJ(matrix) / DET(matrix) End.

उदाहरण

#include<bits/stdc++.h> using namespace std; #define N 5 void getCfactor(int M[N][N], int t[N][N], int p, int q, int n) {    int i = 0, j = 0;    for (int r= 0; r< n; r++) {       for (int c = 0; c< n; c++) // केवल उन एलिमेंट को कॉपी करें जो दिए गए रो r और कॉलम c में नहीं हैं: {          if (r != p && c != q) { t[i][j++] = M[r][c]; // यदि रो भर गया है तो r इंडेक्स बढ़ाएं और c इंडेक्स रीसेट करें             if (j == n - 1) {                j = 0; i++;             }          }       }    } } int DET(int M[N][N], int n) // डिटरमिनेंट ज्ञात करने के लिए {    int D = 0;    if (n == 1)       return M[0][0];    int t[N][N]; // कोफैक्टर संग्रहीत करें    int s = 1; // साइन मल्टीप्लायर संग्रहीत करें //    पहली रो के प्रत्येक एलिमेंट पर पुनरावृति करें    for (int f = 0; f < n; f++) {       // M[0][f] का कोफैक्टर प्राप्त करने के लिए getCfactor(M, t, 0, f, n); D += s * M[0][f] * DET(t, n - 1);       s = -s;    }    return D; } void ADJ(int M[N][N],int adj[N][N]) // एडजॉइंट मैट्रिक्स ज्ञात करने के लिए {    if (N == 1) {       adj[0][0] = 1; return;    }    int s = 1,    t[N][N];    for (int i=0; i<N; i++) {       for (int j=0; j<N; j++) {          // M[i][j] का कोफैक्टर प्राप्त करने के लिए          getCfactor(M, t, i, j, N);          s = ((i+j)%2==0)? 1: -1; // adj[j][i] का साइन पॉजिटिव यदि रो और कॉलम इंडेक्स का योग सम है।          adj[j][i] = (s)*(DET(t, N-1)); // कोफैक्टर मैट्रिक्स का ट्रांसपोज़ प्राप्त करने के लिए रो और कॉलम को इंटरचेंज करें       }    } } bool INV(int M[N][N], float inv[N][N]) {    int det = DET(M, N);    if (det == 0) {       cout << "can't find its inverse";       return false;    }    int adj[N][N]; ADJ(M, adj);    for (int i=0; i<N; i++) for (int j=0; j<N; j++) inv[i][j] = adj[i][j]/float(det);    return true; } template<class T> void print(T A[N][N]) // मैट्रिक्स प्रिंट करें। {    for (int i=0; i<N; i++) { for (int j=0; j<N; j++) cout << A[i][j] << " "; cout << endl; } } int main() {    int M[N][N] = {       {1, 2, 3, 4,-2}, {-5, 6, 7, 8, 4}, {9, 10, -11, 12, 1}, {13, -14, -15, 0, 9}, {20 , -26 , 16 , -17 , 25}    };    float inv[N][N];    cout << "Input matrix is :\n"; print(M);    cout << "\nThe Inverse is :\n"; if (INV(M, inv)) print(inv);    return 0; }

आउटपुट

Input matrix is : 1 2 3 4 -2 -5 6 7 8 4 9 10 -11 12 1 13 -14 -15 0 9 20 -26 16 -17 25 The Inverse is : 0.0811847 -0.0643008 0.0493814 -0.0247026 0.0237006 -0.126819 -0.0161738 0.0745377 -0.0713976 0.0151639 0.0933664 0.0028245 -0.0111876 -0.0220437 0.0154006 0.143624 0.0582573 -0.0282371 0.0579023 -0.0175466 -0.15893 0.0724272 0.0259728 -0.00100988 0.0150219
  1. - चतुर्भुज की चौथी भुजा ढूंढने के लिए C++ प्रोग्राम

    मान लीजिए हमारे पास तीन संख्याएं a, b और c हैं। हम एक मनमाना गैर-अपक्षयी सरल चतुर्भुज के आकार में एक बंद बाड़ बनाना चाहते हैं। हमारे पास पहले से ही a, b और c लंबाई की तीन भुजाएं हैं। हमें दूसरी भुजा d ढूंढनी है। उदाहरण के लिए, यदि इनपुट a = 12; b = 34; c = 56 है, तो आउटपुट 42 होगा, अन्य उत्तर भी संभ

  1. ग्राफ में सुपर वर्टेक्स खोजने का C++ प्रोग्राम ग्राफ में सुपर वर्टेक्स खोजने का C++ प्रोग्राम

    मान लीजिए n वर्टेक्स वाला एक ग्राफ दिया गया है। वर्टेक्स 1 से n तक संख्याबद्ध हैं और edges सरणी में दी गई एज्स से जुड़े हैं। प्रत्येक वर्टेक्स का एक x मान है जो 1 से n के बीच होता है, यह values सरणी में दिया गया है। हमें ग्राफ में सुपर वर्टेक्स खोजने हैं। एक वर्टेक्स i को सुपर वर्टेक्स कहा जाता है

  1. C++ में इडेम्पोटेंट मैट्रिक्स जांचें C++ में इडेम्पोटेंट मैट्रिक्स जांचें

    एक मैट्रिक्स M[r][c] दिया गया है, r पंक्तियों की संख्या दर्शाता है और c कॉलम की संख्या दर्शाता है जैसे कि r = c एक स्क्वायर मैट्रिक्स बनाता है। हमें जांचना है कि दिया गया स्क्वायर मैट्रिक्स इडेम्पोटेंट मैट्रिक्स है या नहीं।इडेम्पोटेंट मैट्रिक्सएक मैट्रिक्स M को इडेम्पोटेंट मैट्रिक्स कहा जाता है यदि