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 :

solution d'un systeme mal conditionné


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut solution d'un systeme mal conditionné
    salut tous,

    voici ce que j'ai fais calculer à notre ami matlab:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A=[-3.849e6,1.7757e-11,-3.4483e9;-3.394e7,2.632e-11,3.4483e9;-7.3e7,3.299e-11,3.4483e9];
    B=[2e-10;2e-10;3e-10];
    X=inv(A)*B
    et voici ce qu'il me dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Warning: Matrix is close to singular or badly scaled.
             Results may be inaccurate. RCOND = 1.848558e-021. 
    > In Untitled at 8
     
    X =
       -0.0000
        8.0601
       -0.0000
    il n'y a pas moyen de resoudre ce systeme d'une autre façon afin d'avoir des solutions plus sures ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Les méthodes de résolution des systèmes A.x = b ne manquent pas.
    Je t'invite à regarder le cours Résolution des systèmes linéaires

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    dans le lien que tu m'as donné il n'y a que la methode SVD qui pourrait s'appliquer à mon cas ?

    par contre je ne comprends pas vraiment comment appliquer cette methode pour resoudre un systeme lineaire...

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    La première chose à faire est de comprendre pourquoi ton système est mal conditionné. Alors, on commence par l'écrire de manière plus lisible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A=[-3.849e6,1.7757e-11,-3.4483e9;
       -3.394e7,2.6320e-11,3.4483e9;
       -7.300e7,3.2990e-11,3.4483e9];
    B=[2e-10;2e-10;3e-10];
    Comme tu le vois, les termes de la deuxième colonne sont 10^-20 fois plus petits que ceux de la troisième. Or, dans ton ordinateur, les nombres sont traités avec environ 16 chiffres significatifs; les termes de la deuxième colonne sont donc considérés comme nuls. Pour remédier à ce problème, tu dois faire en sorte que les termes des trois colonnes soient plus ou moins du même ordre de grandeur, par exemple en écrivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    C=[-3.849e6,1.7757e9,-3.4483e9;
       -3.394e7,2.6320e9,3.4483e9;
       -7.300e7,3.2990e9,3.4483e9];
    Ensuite, il ne faut pas passer par la matrice inverse pour résoudre le système, mais écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    X=C\B;
    X(2)=1e20*X(2);
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci beaucoup!!

    as tu deja essayé ce genre de solution ? ça marche bien comme ceci ?

    en fait j'ai un peu de mal à saisir pourquoi a la fin on ne modifie que la deuxieme valeur de X car lorsqu'on a consideré C on a engendré des modifications meme sur les autres composantes de X ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par 21did21 Voir le message
    en fait j'ai un peu de mal à saisir pourquoi a la fin on ne modifie que la deuxieme valeur de X car lorsqu'on a consideré C on a engendré des modifications meme sur les autres composantes de X ?
    Il te suffit pour cela de simplement poser les calculs:
    C.X = B

    -3.849e6 *X(1) + 1.7757e-11 *X(2) - 3.4483e9 *X(3) = B(1)
    -3.394e7 *X(1) + 2.6320e-11 *X(2) + 3.4483e9 *X(3) = B(2)
    -7.300e7 *X(1) + 3.2990e-11 *X(2) + 3.4483e9 *X(3) = B(3)
    Jean Marc te propose alors de ramener ta deuxième colonne de C à des valeurs du même ordre que les deux autres en la multipliant par 10^20.
    Il vient donc:
    -3.849e6 *X(1) + 1.7757e9 *X(2)*10^-20 - 3.4483e9 *X(3) = B(1)
    -3.394e7 *X(1) + 2.6320e9 *X(2)*10^-20 + 3.4483e9 *X(3) = B(2)
    -7.300e7 *X(1) + 3.2990e9 *X(2)*10^-20 + 3.4483e9 *X(3) = B(3)
    
    Ce qui revient à résoudre le système C.Y = B Avec Y = [X(1) ; X(2)*10^-20 ; X(3)]; .
    Soit au final X = [Y(1) ; Y(2)*10^20 ; Y(3)]

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    j'avais fais le calcul de tete mais je m'etais planté
    en effet en posant les choses ça va beaucoup mieux

    merci tous

    ps: au fait matlab à pas une fonction qui permet de prendre en compte un systeme mal conditionné et de le resoudre directement comme vous m'avez montré ? (j'ai bien compris la methode mais si j'ai une matrice plus grande c'est pas toujours facile de faire ceci...)

  8. #8
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    prendre en compte un systeme mal conditionné
    En général, un problème de calcul numérique résulte de la modélisation d'un processus physique. Dans la majorité des cas (mais pas dans tous!), un système mal conditionné provient d'un problème mal posé ou d'une modélisation maladroite.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci pour ce complément

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

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. solutions contournement pour System.setProperty
    Par pascoal31 dans le forum Java EE
    Réponses: 1
    Dernier message: 25/02/2011, 14h30
  3. Programmer en langage C ,une solution pour realiser ce systeme en utilisant le
    Par alilociano dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 08/06/2008, 20h20
  4. inversion de matrice mal conditionnée
    Par RO_student dans le forum Mathématiques
    Réponses: 12
    Dernier message: 10/04/2008, 11h50
  5. Sérieux problème matrice mal conditionné
    Par maamar dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 29/05/2005, 23h57

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