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

Algorithmes et structures de données Discussion :

Sérieux problème matrice mal conditionné


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 49
    Points : 50
    Points
    50
    Par défaut Sérieux problème matrice mal conditionné
    voila j'ai un grand problème meme matlab é déconne
    bon j'ai une matrcie de

    M : 112 ligne , 4 colonne

    je cherche la matrcie inverse !!!!!!!!!!
    pour cela les données de cette matrcie sont les suivants:

    les trois première colonne 1,2,3 : sont de l'ordre de 10 puissance 17 unité 1/mètre

    4 colonne : des données de l'ordre de 10 puissance -2 unité mètre

    objectif : inverser cette matrcie ???!!!!!

    donc si vous avez des méthodes ou algo à resoudre ces cas de situation je suis a l'écoute
    (pas l'algorithme d'inversion je l'est connu tous )
    c des astuce pour homoginisé et bien conditionné cette matrcie apres on applique l'inversion

    des astuces ou qlq chose des idées malgres c faux poster lé parfois on c jamais peut etre la solution

    merci de lire ce message bin ......

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 149
    Points : 28 116
    Points
    28 116
    Par défaut
    Bonjour,

    As-tu essayé avec un autre logiciel que matlab (genre scilab ?) ?

    Sinon, lorsque tu dis que ca plante, quels sont les symptômes ? (erreur d'arrondis, impossibilité pour raison de taille, ...)
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    je croyais que l'on ne pouvait inverser que des matrices carrées
    Sinon, il doit être possible de trouver une matrice "inverse" à une matrice rectangulaire dans le sens A*A^-1=I mais on n'a pas l'unicité de A^-1

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 69
    Points : 61
    Points
    61
    Par défaut
    Je me trompe peut etre mais comment tu fais pour inverser une matrice Mn,p avec n!=p .
    genre tu peux me donner l'inverse de la matrice

    |1 2 3|
    |4 5 6|

    Il me semblais qu'on ne pouvais inverser que les matrices carré

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 69
    Points : 61
    Points
    61
    Par défaut
    desolé guigui a été plus rapide que moi
    mais je vais dans son sens
    tu peux essayer a*a^t = c
    et trouver c*d=I
    et donc on pourrais assimiler la matrice inverse à a^t*d
    et la c est une matrice carré donc il faut esperer qu'elle soit inversible et tu trouve A^-1=A^t*c-1

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Il est impossible d'inverser une matrice non carré
    Mais si tu as un système du genre :

    A.X = B

    A matrice n*m
    X vecteur recherché m
    B vecteur second membre m

    Tu peux utiliser le transposé At de A et prmultiplier les deux membres

    At.A.X = At.B

    puis comme At.A (dimension m*n*n*m = m*m), tu résous le système normalement

    X = (At.A)^(-1).B

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    ya une pseudo inverse apparement:
    http://mathworld.wolfram.com/Moore-PenroseMatrixInverse.html

  8. #8
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Oui c'est bien une pseudo inverse. Au vu du titre du post ça a l'air d'être ce qu'on appelle "problème inverse" cad que la matrice n'est jamais carrée, et il faut pourtant réussir à inverser le système pour trouver les solutions les plus probables...
    "Cultiver les sciences et ne pas aimer les hommes, c'est allumer un flambeau et fermer les yeux." Proverbe chinois

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    ah bien sur
    je normalise ma matrcie

    au fait j'utilise un estimateur de moidre carrée
    pour résolu un système d'équation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X = ((A*A^t)^-1 ) * ((A^t)*B)
    donc moi je cherche à inverser la matrice A*A^t la c'est une matrcie carré

    sachant que lorsqu'il s'agit de une matrcie creuse ou qlq chose comme ca il faut faire un prétraitement , avant de faire l'inversion

    je raconte ce que j'ai fais

    mon but de calculer le vecteur X cité au dessus

    pour cela j'ai une matrcie A(112,4)
    une matrcie B

    il faut normalisé d'abord
    Q = A*A^t

    inverser la matrcie Q ( par matlab)
    P = Q^-1

    tester si l'inversion juste ou pas
    I = Q*P
    d'ou I matrice identité

    resultat sous matlab : I c'est pas une matrcie identité

    resolution de ce problème :

    1. j'ai divisé les colonnes 1,2et 3 sur les valeur de la colonne 4
    but : rendre tous les valeur de cette matrcie meme unité ( m)
    2. je prend le maximum de chaque colonne est je dévise celuici sur les valeur de ca colonne
    but : bien conditionné la matrcie c.a.d pas 10^20 et 10^-5
    3. jusqu'au ici j'obtient une nouvelle matrcie C
    4. je normalise C
    5. je calcule inverse de cette matrice C
    6. je teste mon resultat , j'obtient la matrcie identité

    la question :

    aprés que j'ai la matrcie inverse C comment je puisse faire les opérations (traitement) inverse c.a.d enlever les traitement 1, 2
    autrement
    pour calculer le vecteur
    je vais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X = (C^-1)*A^t*B <> X = ((A*A^t)^-1 ) * ((A^t)*B)
    that the question

  10. #10
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    ce serait pas plutot At*A qu'il faut inverser qui serait pour toi une matrice 4x4 qui sera a coup sur inversible alors que A*At est a coup sur non inversible car matrice 112x112 mais de rang 4

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    ah wai pardon je me suis trompé A^t*A c.a.d une matrice de 4


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A.X = B
    A^t * A  * X = A^t * B
    X = (A^t*A)^-1  *   (A^t * B)
    je ne sais pas qlq1 de vous a essayer ve genre de calcul ou astuce de calcul

  12. #12
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    c'est exactement ce que je vais essayer d'utilliser demain pour calculer l'équation d'une ellipse (système d'équations à 5 inconnues). Donc je verrai si ça donne de bons résultats

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 69
    Points : 61
    Points
    61
    Par défaut

    Attention les matrices carrées ne sont pas toujours inversibles il faut calculer le determinant avant au risque de trouvé des resultats abérents.

    Citation Envoyé par Guigui_
    ce serait pas plutot At*A qu'il faut inverser qui serait pour toi une matrice 4x4 qui sera a coup sur inversible alors que A*At est a coup sur non inversible car matrice 112x112 mais de rang 4

  14. #14
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Citation Envoyé par loutente

    Attention les matrices carrées ne sont pas toujours inversibles il faut calculer le determinant avant au risque de trouvé des resultats abérents.

    Citation Envoyé par Guigui_
    ce serait pas plutot At*A qu'il faut inverser qui serait pour toi une matrice 4x4 qui sera a coup sur inversible alors que A*At est a coup sur non inversible car matrice 112x112 mais de rang 4
    Si A était de rang 4 (ce qui est à priori le cas sauf concours de circonstances), At*A est à coup sur de rang 4 donc inversible)

    Sinon, je viens d'implémenter l'algo (c'était assez rapide, en python, il y avait déjà la fonction pour résoudre ce système d'équations, y'avait plus qu'à mettre les bons paramètres) pour une interpolation d'une ellipse. Et ça marche impeccablement

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    une remarque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    on utilise l'estimateur de moindre carrée lorsque le nombre d'observation est superieur au nombre d'inconnu
    sinon
    on applique directement la formule


Discussions similaires

  1. Matrice 3x3 mal conditionnée
    Par PiRick dans le forum Mathématiques
    Réponses: 21
    Dernier message: 24/08/2012, 12h15
  2. inversion de matrice mal conditionnée
    Par RO_student dans le forum Mathématiques
    Réponses: 12
    Dernier message: 10/04/2008, 11h50
  3. Réponses: 1
    Dernier message: 03/09/2006, 23h35
  4. [Forms]sérieux problème avec forms
    Par med_anis_dk dans le forum Forms
    Réponses: 6
    Dernier message: 21/05/2006, 00h14

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