Annonce

Réduire
Aucune annonce.

Matrice mal conditionné sous matlab

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Matrice mal conditionné sous matlab

    Bonjour

    sous matlab je procède à un calcul matriciel par moindre carrée, et quand je veux inverser une matrice sa me dit que la matrice est mal conditionné , la matrice en question c'est la matrice normale N ( N=A'xPxA)
    avec A': A transposé
    P : matrice des poids
    A : matrice des coefficients


    savez vous comment on peut résoudre ce problème ?

  • #2
    coucou tenebre,

    ça fait au moins 6 ans que je n'ai pas touché à matlab donc je ne peux t'aider d'une façon explicite
    mais regardes ce lien avec des calculs simple de matrice sous Matlab, tu as peut etre mal écrit tes fonctions

    http://w3.gel.ulaval.ca/~fortier/MAT19961/matrices.html

    Commentaire


    • #3
      Salut téno,
      tu as vérifié les dimensions de tes matrices avec size?

      et utilises pinv au lieu de inv pour calculer la matrice inverse
      Dernière modification par obladioblada, 19 mai 2013, 19h19.
      All we are saying is give peace a chance. John Lennon.

      Commentaire


      • #4
        @soltana

        bonsoir soltana

        merci pour le lien, je vais y jetter un coup d'oeil !


        @obladioblada

        bonsoir obladi !

        j'ai déjà essayé le pinv mais sa ne marche pas ! :22:

        ma matrice c'est une 7x7

        je veux résoudre une équation matriciel Ax=B
        ma matrice A fait 18x7
        ma matrice B fait 18x1

        je calcule ma matrice normale N=A'*P*A

        le probleme c'est quand je veux calculer l'inverse de N , sa me dit que le problème est mal conditionné
        Dernière modification par tenebre, 19 mai 2013, 19h35.

        Commentaire


        • #5
          Tu peux poster l'erreur qu'affiche matlab?

          Sinon tu peux résoudre le système par une autre méthode pour éviter d'utiliser la matrice inverse.
          All we are saying is give peace a chance. John Lennon.

          Commentaire


          • #6
            c'est ce que je fais obladi

            l'erreur que m'affiche matlab est celle là :

            Warning: Matrix is close to singular or badly scaled.
            Results may be inaccurate. RCOND = 1.951293e-022.

            Commentaire


            • #7
              A moins d'une erreur dans tes matrices A et B , tu n'as d'autres choix que d'utiliser une autre méthode pour résoudre le système; jacobi, gauss seidel,..etc
              All we are saying is give peace a chance. John Lennon.

              Commentaire


              • #8
                c'est les deux méthodes que je suis entrain d'utiliser à l'instant même !
                je n'ai pas eu de probleme de conditionnement ! mais juste que ces méthodes sont des méthodes itératives , et moi je n'ai pas de valeurs approché, du coup je mets le compteur à zero

                je ne sais pas si c'est juste de mettre ma première valeurs approché à zero ou pas
                Dernière modification par tenebre, 19 mai 2013, 22h46.

                Commentaire


                • #9
                  Tenebreux, j’espère que ton déterminant n'est pas égale à zéro

                  peux tu afficher ta matrice avec ses valeurs ?

                  bon j'ai fait une petite recherche concernant l'erreur que tu viens d'avoir , c'est bien expliqué et ils te donnent les solutions à faire , j'espere que tsselek'ha chouia English

                  Problem Description:

                  Why do I get the following warning message:
                  Warning: Matrix is close to singular or badly scaled.


                  Solution:

                  Explanation:
                  A matrix used in a computation is singular or is very close to being singular (ill conditioned). Trying to solve a system of linear equations whose coefficient matrix is singular can lead to incorrect answers.

                  Common causes:
                  A program you called is using a matrix that is badly conditioned as one of the arguments to the backslash (\) or forward slash (/) operators, which are commonly used to solve systems of linear equations.

                  Solution:
                  Stop MATLAB on the line where the warning occurs. Examine the line for instances of the two slash operators. If you find one, determine the condition number of the coefficient matrix (the matrix on the left side of the backslash (\) or on the right side of the forward slash (/) using the COND function. Large results for the condition number indicate the matrix is extremely ill-conditioned. You should verify (using the matrix multiplication operator (*)) that the result of solving the system is numerically reliable. For more information about condition numbers of matrices, see Chapter 2: Linear Equations of the Cleve Moler's Numerical Computing with MATLAB book, which discusses solving systems of linear equations.
                  Source :
                  http://www.mathworks.com/support/sol...ution=1-FA9A48
                  Dernière modification par absente, 20 mai 2013, 03h00.

                  Commentaire


                  • #10
                    Il me semble qu'il y a une condition de convergence pour ces méthodes , la matrice A doit être définie positive te et la valeur absolue de chaque élément de la diagonale doit être supérieur à la somme des éléments de la ligne correspondante ( idha maranich ghalta). Si la convergence est vérifiée tu peux prendre n'importe quelle valeur initiale.

                    Sinon il y a aussi la résolution de système par SVD (décomposition en valeurs singulières), cette fonction existe en Matlab
                    Voila un tuto: http://jmblanc.developpez.com/algori...s/?page=page_3
                    All we are saying is give peace a chance. John Lennon.

                    Commentaire


                    • #11
                      Normalement ça devrait marché avec inv(matrice)
                      Un pied dans le superficiel et l'autre dans le Din

                      Commentaire


                      • #12
                        merci les amis pour votre aide




                        non evi, sa ne marche pas avec "inv"

                        Commentaire


                        • #13
                          Et enfin de compte ton problème est résolu ou pas??
                          All we are saying is give peace a chance. John Lennon.

                          Commentaire


                          • #14
                            oui c'est bon !

                            merci obladioblada , et merci à vous tous pour votre contribution dans mon topic

                            Commentaire

                            Chargement...
                            X