Approximation 2 variables MATLAB
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Approximation 2 variables MATLAB



  1. #1
    invitee38efe6a

    Approximation 2 variables MATLAB


    ------

    Bonjour,

    Je suis novice avec MATLAB mais on m'a recommandé de m'en servir pour modéliser mon problème.


    Je souhaite faire une approximation d'un nuage de point par une droite linéaire.

    Pour cela j'ai un ensemble de données , x , y et f(x,y)

    Ce qui m'intéresse c'est de modéliser f(x,y) quelque soit x et y.

    Normalement j'utiliserai la méthode des moindres carrés.

    Par avance, merci à ceux qui pourront m'aider!

    -----

  2. #2
    invite63e767fa

    Re : Approximation 2 variables MATLAB

    Bonjour,

    pour une régression linéaire par les moindres carrés, beaucoup de logiciels le font et pourquoi pas MATLAB, bien que ce soit le marteau pilon pour écraser une mouche, à mon sens, puisque la moindre calculette le ferait aussi bien.
    Toutefois, selon le problème, on se pose préalablement la question du choix de ce que l'on veut minimiser (soit le carré des écarts d'ordonnées, soit ceux d'abscisses, soit ceux des distances vraies entre points expérimenteaux et droite de régression)
    Explication plus détaillée dans le paragraphe 3 (régressions linéaires à deux paramètres) de l'article "Régressions coniques, quadriques, circulaire, sphérique" par le lien :
    http://www.scribd.com/people/documen...575-jjacquelin

  3. #3
    invite551c2897

    Re : Approximation 2 variables MATLAB

    Bonjour.
    Avec matlab tu peux utiliser [p,S] = polyfit(x,y,n), p étant les coefficients du polynôme p1x^n + p2x^(n-1)....
    Comme le dit JJacquelin il y a bien d'autres méthodes.

  4. #4
    invitee38efe6a

    Re : Approximation 2 variables MATLAB

    Merci,

    Je regarde tout ça et reviendrais vers vous si je ne progresse pas.

    Bonne journée!

  5. A voir en vidéo sur Futura
  6. #5
    invite6f25a1fe

    Re : Approximation 2 variables MATLAB

    Moi sous Matlab, j'utilise plutôt directement l'équation normale pour faire des moindres carrés.

    En gros, je fais l'hypothèse d'un modèle pour f(x, y).
    Par exemple linéaire sans intéractions :

    Tu calcules la matrice X=(1 x y) : tu places x et y en colonne de ta matrice (1 étant le vecteur colonne unité de même dimension que x et y)

    Puis tu calcules les coefficients estimés de ton modèle A=[a0 ; a1 ; a2] (vecteur colonne composée des réels a0, a1 et a2) en utilisant l'équation normale tu obtiens l'estimation de A :
    A=inv(X'*X)*X'*F où F est la matrice colonne des f(x, y)

    Tu as donc tes moindres carrés. L'avantage, c'est que tu peux anticiper le résultat vu que la matrice inv(X'*X) sera proportionnelle à la matrice de covariance de ton estimateur A (tu peux donc savoir si tu as bien choisi tes points afin d'obtenir une bonne régression par moindres carrés). De plus, comme c'est toi qui fais les calculs (et pas une routine cachée de Matlab) tu t'appropis beaucoup mieux le problème.

    Enfin, tu peux travailler ton modèle avec stepwise() qui permet de faire de la régression multiple. Cela te permettra de savoir si tu as fais le bon choix de modèle au début (peut être que y ou x ne joue aucune role en fait, stepwise te le dira, et tu pourras donc enlever ce paramètre de ton modèle, donc l'alléger en termes de calculs et stockages de données)

    Il y a aussi rstool() qui peut être utile je crois

    Pour le coup, ca te permet vraiment d'utilise Matlab (sinon c'est claire q'une calculette suffit)

  7. #6
    invitee38efe6a

    Re : Approximation 2 variables MATLAB

    Bonjour,

    Après un peu d'absence j'ai repris mon problème en suivant un peu vos indications. Malheureusement je n'arrive pas bien loin!

    j'ai déclaré mes valeurs expérimentales comme ceci :

    >> x = [19,5 22,5 19 20,5 21,5 17 24 19,5]

    >> y = [22,5, 27,5 21 21,5 23,5 17 19 17]

    >> z = [18,5 21 17,5 18,5 19 15 21 17 17]

    >>p = polyfit (x, y, z, n) %j'ai mis n = 4


    j'ai l'erreur :
    ??? Error using ==> polyfit
    Too many input arguments.



    Je rappel que je cherche à approximer f(x,y) = ax + by
    Expérimentalement j'ai les valeurs de x, de y et de f(x,y). Mais sur un certain intervalle. Je cherche à trouver l'équation qui définie cette fonction afin d'avoir f(x,y) quelques soient x et y.

    N'hésitez pas à donner des conseils qui vous paraissent basique, je n'ai jamais utilisé Matlab auparavant.

    Merci à ceux qui auront une réponse pour moi

  8. #7
    invite551c2897

    Re : Approximation 2 variables MATLAB

    Bonjour.
    - polyfit n'accepte que x,y
    - les vecteurs x et y doivent avoir même longueur.

  9. #8
    invitee38efe6a

    Re : Approximation 2 variables MATLAB

    Salut,

    alors en fait j'ai solutionné mon problème en passant par des matrices comme l'avait très bien suggéré Scorp. Mais j'avais pas vraiment compris son explication et je me suis fait aidé par un prof pour l'utilisation de mathlab.

    Je vous laisse le programme :

    Ta=[17 19.5 23 28...]';
    Te=[19.5 23 28.5 27...]';
    Ts=[17 18.5 21.5 21...]';

    X=[Ta Te ones(size(Ta))];

    V=inv(X'*X)*X'*Ts

    V me donne donc mes valeurs pour a, b et c
    avec Ts = aTa + bTe + c


    Merci à tous, mon problème est résolu!

  10. #9
    invite6f25a1fe

    Re : Approximation 2 variables MATLAB

    Oui, en fait tu fais une regression linéaire brutale. Matlab ne t'a pas mis un warning par hasard lorsque tu as fait le calcul ???

    En fait, il faut se méfier de la régression sans contrôle. Essaye de regarder ce que donne la matrice X'*X et inv(X'*X). Pour que la régression marche bien, il faut que ce soient des matrices diagonales (ou en tout cas à diagonale dominante), sinon c'est risqué. Dans tous les cas, il te faut calculer le coefficients R² associé à ta régression : cela permet de savoir si ta solution trouvée est vraiment solution, ou si ta régression est parti dans les clous (notamment si les matrices calculées si dessus sont très loins de matrice diagonale).

    Si tu ne veux pas te galérer à faire les calculs, utilise directement stepwise(X, Y), ca te donnera tous les coeffcients dont tu as besoin + le calcul du R². Ensuite, met "step all" et il te sélectionnera tous les coeffcients jugés importants (les autres serton à considérer comme non influents, donc à sortir du modèle.

Discussions similaires

  1. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par inviteafe1cd13 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 11h12
  2. [MATLAB]Génération de variables aléatoires
    Par Tony78 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 09/02/2010, 10h18
  3. Créer N variables symboliques sous Matlab
    Par invitebf68775b dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 24/03/2009, 04h17
  4. Influence des variables d'une fonction à 2 variables
    Par invitee2a62e92 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 18/07/2008, 02h54
  5. Approximation (Moindre carrés) sous Matlab
    Par invite4f164cf2 dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 24/03/2004, 12h38