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

C++ में मैट्रिक्स व्युत्क्रमणीय (Invertible) है या नहीं जांचें


समस्या विवरण

एक मैट्रिक्स व्युत्क्रमणीय है यदि उसका निर्धारक (determinant) शून्येतर है।

व्युत्क्रम सूत्र: M⁻¹ = adj(M) / |M|

एल्गोरिदम

  1. पुनरावर्ती रूप से निर्धारक की गणना करें
  2. कोफैक्टर मैट्रिक्स बनाएं
  3. यदि निर्धारक ≠ 0 → व्युत्क्रमणीय

उदाहरण कोड

#include <iostream>
#define N 4
using namespace std;

void findCoFactor(int mat[N][N], int mat2[N][N], int p, int q, int n) {
    int i = 0, j = 0;
    for (int row = 0; row < n; row++) {
        for (int col = 0; col < n; col++) {
            if (row != p && col != q) {
                mat2[i][j++] = mat[row][col];
                if (j == n - 1) { j = 0; i++; }
            }
        }
    }
}

int getDeterminant(int mat[N][N], int n) {
    if (n == 1) return mat[0][0];
    int temp[N][N];
    int det = 0, sign = 1;
    
    for (int f = 0; f < n; f++) {
        findCoFactor(mat, temp, 0, f, n);
        det += sign * mat[0][f] * getDeterminant(temp, n - 1);
        sign = -sign;
    }
    return det;
}

bool isMatrixInvertible(int mat[N][N], int n) {
    return getDeterminant(mat, N) != 0;
}

int main() {
    int matrix[N][N] = {
        {1, 0, 2, -1},
        {3, 0, 0, 5},
        {2, 1, 4, -3},
        {1, 0, 5, 0}
    };
    if (isMatrixInvertible(matrix, N))
        cout << "The matrix is invertible";
    else
        cout << "The matrix is not invertible";
    return 0;
}

आउटपुट

The matrix is invertible
  1. C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III) C++ में स्पाइरल मैट्रिक्स III (Spiral Matrix III)

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

  1. C++ में इन्वोल्यूटरी मैट्रिक्स जांचें C++ में इन्वोल्यूटरी मैट्रिक्स जांचें

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

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

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