2017-10-20 15 views
-5

j'ai trouvé un programme sur Internet qui calculent le déterminant d'une matrice:compréhension d'un facteur déterminant de la fonction spécifique d'une matrice

/* 
* C++ Program to Find the Determinant of a Given Matrix 
*/ 
#include<iostream> 
#include<math.h> 
#include<conio.h> 
using namespace std; 
double d = 0; 
double det(int n, double mat[10][10]) 
{ 
    int c, subi, i, j, subj; 
    double submat[10][10]; 
    if (n == 2) 
    { 
     return((mat[0][0] * mat[1][1]) - (mat[1][0] * mat[0][1])); 
    } 
    else 
    { 
     for(c = 0; c < n; c++) 
     { 
      subi = 0; 
      for(i = 1; i < n; i++) 
      { 
       subj = 0; 
       for(j = 0; j < n; j++) 
       {  
        if (j == c) 
        { 
         continue; 
        } 
        submat[subi][subj] = mat[i][j]; 
        subj++; 
       } 
       subi++; 
      } 
     d = d + (pow(-1 ,c) * mat[0][c] * det(n - 1 ,submat)); 
     } 
    } 
    return d; 
} 
int main() 
{ 
    int n; 
    cout<<"enter the order of matrix" ; 
    cin>>n; 
    double mat[10][10]; 
    int i, j; 
    cout<<"enter the elements"<<endl; 
    for(i=0;i<n;i++) 
    { 
     for(j=0;j<n;j++) 
     { 
      cin>>mat[i][j]; 
     } 
    } 
    cout<<"\ndeterminant"<<det(n,mat); 
    getch(); 
} 

source: http://www.sanfoundry.com/cpp-program-find-determinant-given-matrix/

Je voulais apprendre de lui mais je ne Je ne comprends pas. Est-ce un lien avec l'élimination de Gauss? Sinon, savez-vous quel processus utilise cet algorithme?

Nous vous remercions à l'avance à toute personne qui peut être en mesure de me aider

+0

C'est un problème mathématique d'algèbre linéaire. La réponse est certainement dans votre livre d'algèbre linéaire ou [ici] (https://en.wikipedia.org/wiki/Determinant): –

+0

si vous voulez apprendre à mieux écrire votre propre code, celui-ci est franchement inutile comme il ne fonctionne que pour les matrices avec seulement une taille particulière (10x10) – user463035818

+0

@ tobi303 pas tout à fait, cela fonctionne pour les matrices de 1x1 à 10x10. –

Répondre

0

Ceci est un algorithme qui utilise des extensions, qui calcule de Laplace récursive le déterminant d'une matrice n x n en calculant les déterminants n de (n-1) x (n-1) subminors. Le déterminant de la matrice 2 x 2 devrait être évident.

Il existe de meilleurs moyens de le faire, comme la décomposition LU.

+1

Merci beaucoup pour votre réponse rapide – Muclos

0

Le programme utilise une fonction récursive pour créer une sous-matrice et calculer le déterminant lorsque la sous-matrice est 2x2. Lorsque le programme a le déterminant de la sous-matrice, il somme et soustraire comme vous pouvez le voir sur Wikipedia page sur le déterminant. A la fin, la fonction récursive renvoie le déterminant de la matrice complète.

+1

Merci beaucoup pour votre réponse rapide – Muclos