Approximation par la methode de moindre carrés

ust3000 Messages postés 13 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 15 avril 2006 - 2 août 2005 à 13:07
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 11 déc. 2005 à 22:45
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

Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
2 août 2005 à 13:56
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
Vb Lover Messages postés 221 Date d'inscription vendredi 30 novembre 2001 Statut Membre Dernière intervention 13 février 2010 5
2 août 2005 à 14:13
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
ust3000 Messages postés 13 Date d'inscription mardi 2 août 2005 Statut Membre Dernière intervention 15 avril 2006
3 août 2005 à 12:34
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
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
11 déc. 2005 à 22:45
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
Rejoignez-nous