Approximation par la methode de moindre carrés

Signaler
Messages postés
13
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
15 avril 2006
-
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
-
Salut à tous et à toutes.
Dans le cadre d'un projet étudiant, je cherche à mettre en oeuvre une méthode d'approximation style moindre carrés afin de determiner les coefficients d'un polynome de degré 5, le tout sous VB6.
Si je pouvais avoir quelques eclaircissement sur la méthode, je vous en serez très reconnaissant. Et puis si vous avez eu affaire a un projet similaire sous VB6, ce serai royale!!!
Merci et @+.

4 réponses

Messages postés
221
Date d'inscription
vendredi 30 novembre 2001
Statut
Membre
Dernière intervention
13 février 2010
4
soit (x_n, y_n), n=1,2,...,N tes données et f(x)=a x^5+b x^4+ c x^3+ d x^2 + e x + f ton polynôme de degré 5.

Tu cherches à minimiser la somme :

S = Somme de n=1 à N de (y_n - f(x_n))^2

ça c'est la méthode des moindres carrés. Pour un polynôme de degré 2,
après quelques petits calculs, tu peux trouver explicitement la valeur
des coefficients. Pour le degré 5, ça doit être possible aussi, mais
j'imagine que ça donne qqch de très moche (je vais quand même voir si
on peut le faire, et du coup y'aurait plus de programme VB, seulement
une formule à appliquée).

En gros, le principe c'est que pour minimiser ta somme, il faut que la
dérivée partielle de S par rapport à chaque coefficients a,b,c,d,e,f
soit nulle. Sans avoir la réponse exacte (formule), tu peux appliquer
un procédé itératif, càd tu prends des conditions initiales, puis tu
calcules les dérivées partielles, et tu trouves de nouveaux
coefficients meilleurs (méthode du gradient). Tu devrais avoir qqch du
style :

new_a = a - (dS/da) * step

new_b = b - (dS/db) * step

...



bonne chance!
0
Messages postés
221
Date d'inscription
vendredi 30 novembre 2001
Statut
Membre
Dernière intervention
13 février 2010
4
en fait, je viens de voir une erreur d'orthographe trop moche dans mon ancien message, désolé:)

Sinon, je viens de faire 2-3 petits calculs, c'est vraiment trop lourd!
voici cependant un coefficient en fonction des autres (résultat
exacte!):

f=(1/N) * Somme(y_n-a x_n^5-b x_n^4-c x_n^3-d x_n^2- e x_n)

Ce résultat vient de dS/df = 0 (tu peux faire le calcul, tu comprendras comment ça marche).

Ensuite, si tu as la motivation, tu fais dS/de = 0, tu remplaces f par
le résultat d'avant, tu isoles le "e" et tu trouves ça valeur, puis
rebelote avec les autres coefficients, et le tour est joué!

Je te conseille finalement d'utiliser la valeur de "f" ci-dessus, ce
qui te fait une inconnue de moins, puis de faire la méthode itérative
(tu peux réduire "step" jusqu^à la précision souhaitée) pour les 5
inconnues restantes.



voilà, cette fois c'est à toi de jouer!
0
Messages postés
13
Date d'inscription
mardi 2 août 2005
Statut
Membre
Dernière intervention
15 avril 2006

Merci,pour ton aide mais j'arrive pas vraimment a trouver l'algorithme
j'ai un autre probleme dans le cas ou la dérivé n'admet pas de solution je dois faire des itérations,j'ai oublié la méthode du moindre carré?
0
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Hum... si je peux me permettre de citer mon modeste site, tu trouveras la réponse à ton problème, déjà tout codé... htpp:\\fordom.free.fr

Amicalement,
Us.
0