IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Calcul de déterminant d'une matrice non carrée


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Points : 65
    Points
    65
    Par défaut Calcul de déterminant d'une matrice non carrée
    Bonsoir,

    Je suis en train de reprendre un peu avec matlab, et la fonction det() ne permet de calculer le déterminant que pour des matrices carrées.

    Savez-vous comment calculer avec Matlab le déterminant d'une matrice non carrée ?

    Merci,

    Rouliane

  2. #2
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Je ne sais pas calculer le déterminant d'une matrice non carrée...
    A quoi ça peut servir ??
    On peut savoir ce que tu essaies de faire ?
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par progfou
    Je ne sais pas calculer le déterminant d'une matrice non carrée...
    Surtout que ce n'est pas définie Cf ici
    Je ne répondrai à aucune question technique en privé

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Points : 65
    Points
    65
    Par défaut
    Effectivement, ça n'est pas défini, j'suis vraiment bête

  5. #5
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Ma remarque était ironique
    Le but était de lui faire dire que ça n'existe pas.
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  6. #6
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    pas tout à fait d'accord avec vous:
    voici ma référence:
    [1] Press, W.H., Teukolsky, S.A., Vetterling, W.T., and B.P. Flannery, Numerical Recipes in C, Cambridge University Press, 1992.

    The determinant is defined only for square matrices. However, the determinant of an LU-decomposed matrix of any size as defined in [1] is the product of the diagonal elements of the upper triangular matrix "U".
    En effet la fonction DET est seulement capable de determiner le déterminant d'une matice carrée.
    Pour trouver le déterminant d'une matrice non carrée
    il faut faire une factorisation LU pour obtenir "L" et "U".
    Le déterminant est alors le produit des éléments de la diagonale de U
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [L,U] = lu(A);	    
    d = prod(diag(U));
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Points : 65
    Points
    65
    Par défaut
    Merci pour ces précisions.

    Je ne sais même pas ce qu'est une décomposition LU, je vais aller voir ça de suite

    Sinon, savez-vous comment on calcule l'inverse d'une matrice non carrée ? ( Pour moi ça n'existe pas, mais bon, on ne apprend tous les jours )

  8. #8
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    oui c'est possible dans ce cas là au lieu d'utilser inv tu utilises l'opérateur slash comme indiqué dans la note technique ci dessous:
    http://www.mathworks.com/support/sol...lution=1-19BE2
    MATLAB 8.2 (R2013b)

    le blog des MATLAB geeks

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Points : 65
    Points
    65
    Par défaut
    Merci.

    Par contre, apparemment l'opérateur '\' s'utilise dans le cadre de la résolution de Ax=b.
    Mais par exemple, pour une matrice A carrée, si je tappe B=inv(A), Matlab me sort la matrice B, qui est l'inverse de A.

    Est-il possible de la même façon d'avoir l'inverse du matrice non carrée ? ( de telle façon que je puisse avoir à la fin la matrice inverse écrite )
    J'ai essayé d'écrire B=A.\ ou A\ mais ça ne fonctionne...

    EDIT : j'ai fait avec B=A\eye(4) et ça semble marcher.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Il y a plusieurs choses que je ne comprends pas dans tout ce que vous dites

    1) déterminant = produit des valeurs propres. Supposons que la matrice A soit diagonlisable, alors détermiant(A)=produit des coefficients sur la diagonale principale.
    Si la matrice n'est pas carré, elle n'est pas inversible ! et le déterminant d'une matrice non carrée n'existe pas !

    2) Si A est inversible (et donc carrée) alors l'inverse de A s'écrit A^-1 et A*A^-1 = identité.
    Mais, A doit être carrée. donc l'inverse d'une matrice non carrée n'existe pas !
    Calculer l'inverse d'une matrice revient à résoudre un système linéaire. Et pour que ce système ait une unique solution, il faut que le nombre d'équations soit égal au nombre d'inconnues, c'est-à-dire que la matrice doit être carrée !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Points : 65
    Points
    65
    Par défaut
    Avec Matlab, on peut calculer le déterminant et l'inverse de matrices non carrée, j'avais que je n'ai toujours pas compris pourquoi, mais bon

    Voici un exemple d'une matrice A non carrée, dont on trouve l'inverse avec Matlab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    A =
     
         1     3     2
        -5     3     1
       -10     0     3
         1     0    -2
     
    inv1 =
     
        0.0718   -0.0718   -0.0627   -0.0581
        0.1189    0.2145   -0.0856    0.0978
        0.1914   -0.1914    0.0875   -0.2730
    De même, avec la décomposition LU, on peut trouver le déterminant de A :


    Etrange, n'est ce pas

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Il y a une théorie en math, l'algèbre linéaire, qui dit que seule une matrice carrée peut être inversée et que l'on peut calculer un détermiant d'une matric carrée (cf les endomorphismes).

    Avec Matlab, on peut calculer le déterminant et l'inverse de matrices non carrée, j'avais que je n'ai toujours pas compris pourquoi, mais bon

    Voici un exemple d'une matrice A non carrée, dont on trouve l'inverse avec Matlab :
    Ce n'est pas l'inverse, mais la pseudo-inverse de A. Et comment as-tu fait pour calculer l'inverse de A ? j'ai refais ton code, et voici ce que me sors Matlab

    ??? Error using ==> inv
    Matrix must be square.
    ça confirme bien que A doit être carrée pour calculer son inverse !

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    De même, avec la décomposition LU, on peut trouver le déterminant de A :

    detA=-13
    si det(A) != 0 alors A est diagonalisable et inversible. Or A n'est pas carré donc pas diagonaliable. Et elle n'est pas inversable (cf mon post précédent)

    Ton résultat est faux !

    N'utilises pas un logiciel comme une boîte noire. Quels sont les algos de matlab ?

    Quant à la décomposition LU, une condition nécessaire et suffisante est que A doit etre inversible. En math, il faut se poser deux questions

    1) existante de la solution
    2) unicité de la solution

    A n'est pas inversible donc tu ne peux pas calculer sa décomposition LU et son déterminant. Revois tes cours d'algèbre linéaire (endomorphisme, automorphisme, diagonalisation, trigonalisation, ...)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 180
    Points : 65
    Points
    65
    Par défaut
    mais je suis tout à fait d'accord, je le dis moi-même que je ne comprends pas d'où ça sort alors que ça n'existe pas.
    Toujours est-il qu'avec Matlab on peut calculer la décomposition LU d'une matrice non carré, après je ne sais pas quel est l'algorithme utilisé.
    Faut pas croire que je gobbe tout ce que me raconte Matlab


    Et effectivement, c'est bien la pseudo-inverse que Matlab calcule.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul de la distance Mahalanobis pour une matrice
    Par mihaispr dans le forum MATLAB
    Réponses: 9
    Dernier message: 14/06/2011, 22h50
  2. [Débutant] Calcul de la forme échelonnée d'une matrice
    Par manuel92310 dans le forum MATLAB
    Réponses: 1
    Dernier message: 27/05/2011, 08h51
  3. Calcul rapide des valeurs propres d'une matrice creuse
    Par gsagnol dans le forum Mathématiques
    Réponses: 3
    Dernier message: 21/12/2007, 23h37
  4. calculer le nombre de colonnes d'une matrice
    Par setsuko974 dans le forum Langage
    Réponses: 5
    Dernier message: 06/02/2007, 22h00
  5. Passage en parametre d'une matrice NON carrés
    Par Steffane dans le forum C
    Réponses: 11
    Dernier message: 02/08/2006, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo