ust3000
Messages postés13Date d'inscriptionmardi 2 août 2005StatutMembreDernière intervention15 avril 2006
-
2 août 2005 à 13:07
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 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 @+.
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 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 :
Vb Lover
Messages postés221Date d'inscriptionvendredi 30 novembre 2001StatutMembreDernière intervention13 février 20105 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.
ust3000
Messages postés13Date d'inscriptionmardi 2 août 2005StatutMembreDernière intervention15 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é?