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

सी ++ प्रोग्राम यह जांचने के लिए कि क्या मैट्रिक्स उलटा है

मैट्रिक्स के निर्धारक का उपयोग यह पता लगाने के लिए किया जा सकता है कि यह उलटा है या नहीं। सारणिक गैर-शून्य है, तो मैट्रिक्स उलटा है। इसलिए यदि सारणिक शून्य हो जाता है, तो मैट्रिक्स उलटा नहीं होता है। उदाहरण के लिए -

The given matrix is:

4 2 1
2 1 1
9 3 2
The determinant of the above matrix is: 3
So the matrix is invertible.

एक प्रोग्राम जो यह जांचता है कि मैट्रिक्स उलटा है या नहीं, इस प्रकार है।

उदाहरण

#include<iostream>
#include<math.h>
using namespace std;
int determinant( int matrix[10][10], int n) {
   int det = 0;
   int submatrix[10][10];
   if (n == 2)
   return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));
   else {
      for (int x = 0; x < n; x++) {
         int subi = 0;
         for (int i = 1; i < n; i++) {
            int subj = 0;
            for (int j = 0; j < n; j++) {
               if (j == x)
               continue;
               submatrix[subi][subj] = matrix[i][j];
               subj++;
            }
            subi++;
         }
         det = det + (pow(-1, x) * matrix[0][x] * determinant( submatrix, n - 1 ));
      }
   }
   return det;
}
int main() {
   int n, d, i, j;
   int matrix[10][10];
   cout << "Enter the size of the matrix:\n";
   cin >> n;
   cout << "Enter the elements of the matrix:\n";
   for (i = 0; i < n; i++)
   for (j = 0; j < n; j++)
   cin >> matrix[i][j];
   cout<<"The entered matrix is:"<<endl;
   for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++)
      cout << matrix[i][j] <<" ";
      cout<<endl;
   }
   d = determinant(matrix, n);
   cout<<"Determinant of the matrix is "<< d <<endl;
   if( d == 0 )
   cout<<"This matrix is not invertible as the determinant is zero";
   else
   cout<<"This matrix is invertible as the determinant is not zero";
   return 0;
}

आउटपुट

Enter the size of the matrix: 3
Enter the elements of the matrix:
1 2 3
2 1 2
1 1 4
The entered matrix is:
1 2 3
2 1 2
1 1 4
Determinant of the matrix is -7
This matrix is invertible as the determinant is not zero

उपरोक्त कार्यक्रम में, मैट्रिक्स के आकार और तत्वों को मुख्य () फ़ंक्शन में प्रदान किया गया है। तब फ़ंक्शन निर्धारक () कहा जाता है। यह मैट्रिक्स के निर्धारक को लौटाता है जो d में संग्रहीत होता है। यदि सारणिक 0 है, तो मैट्रिक्स उलटा नहीं है और यदि सारणिक 0 नहीं है, तो मैट्रिक्स उलटा है। यह निम्नलिखित कोड स्निपेट के साथ प्रदर्शित होता है।

cout << "Enter the size of the matrix:\n";
cin >> n;
cout << "Enter the elements of the matrix:\n";
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
cin >> matrix[i][j];
cout<<"The entered matrix is:"<<endl;
for (i = 0; i < n; i++) {
   for (j = 0; j < n; j++)
   cout << matrix[i][j] <<" ";
   cout<<endl;
}
d = determinant(matrix, n);
cout<<"Determinant of the matrix is "<< d <<endl;
if( d == 0 )
cout<<"This matrix is not invertible as the determinant is zero";
else
cout<<"This matrix is invertible as the determinant is not zero";

फ़ंक्शन निर्धारक () में, यदि मैट्रिक्स का आकार 2 है, तो निर्धारक की सीधे गणना की जाती है और मान वापस कर दिया जाता है। यह इस प्रकार दिखाया गया है।

if (n == 2)
return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]));

यदि मैट्रिक्स का आकार 2 नहीं है, तो निर्धारक की गणना पुनरावर्ती रूप से की जाती है। लूप चर x, i और j के साथ उपयोग किए जाने वाले लूप के लिए 3 नेस्टेड हैं। इन लूपों का उपयोग निर्धारक की गणना करने के लिए किया जाता है और फ़ंक्शन निर्धारक () को आंतरिक निर्धारक की गणना करने के लिए पुनरावर्ती रूप से कहा जाता है और फिर इसे बाहरी मान से गुणा किया जाता है। यह निम्नलिखित कोड स्निपेट द्वारा प्रदर्शित किया जाता है।

for (int x = 0; x < n; x++) {
   int subi = 0;
   for (int i = 1; i < n; i++) {
      int subj = 0;
      for (int j = 0; j < n; j++) {
         if (j == x)
         continue;
         submatrix[subi][subj] = matrix[i][j];
         subj++;
      }
      subi++;
   }
   det = det + (pow(-1, x) * matrix[0][x] * determinant( submatrix, n - 1 ))
}

  1. C++ में idempotent मैट्रिक्स की जांच करने का कार्यक्रम

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

  1. सी ++ में विकर्ण मैट्रिक्स और स्केलर मैट्रिक्स की जांच करने का कार्यक्रम

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

  1. सी ++ प्रोग्राम एडजेंसी मैट्रिक्स को लागू करने के लिए

    एक ग्राफ का आसन्न मैट्रिक्स आकार V x V का एक वर्ग मैट्रिक्स है। V ग्राफ G के शीर्षों की संख्या है। इस मैट्रिक्स में प्रत्येक पक्ष में V कोने चिह्नित हैं। यदि ग्राफ़ में i से j कोने तक कुछ किनारे हैं, तो ith पर आसन्न मैट्रिक्स में पंक्ति और जम्मूवें कॉलम में यह 1 (या भारित ग्राफ़ के लिए कुछ गैर-शून्