Problème lors d'une approximation polynomiale

_Guillaume_

XLDnaute Nouveau
Bonjour à toutes et à tous,

Dans une application, j'ai besoin faire une approximation polynomiale afin de modéliser mes données par un polynôme.
En entrées j'ai mes données X et Y et je cherche les paramètres a0, a0, ..., a5. Suivant le nombres de points en entré, je divise ma courbe en 2 ou 3 "sous-courbes" et je viens calculer les coefficients de ces 2 ou 3 "sous-courbes", cela permet une meilleur approximation.
Pour trouver mes paramètres j'utilise la résolution matricielle à l'aide de la formule: =PRODUITMAT(PRODUITMAT(INVERSEMAT(PRODUITMAT(TRANSPOSE(Ma_matrice);Ma_matrice));TRANSPOSE(Ma_matrice));Mon_vecteur)

Mon problème:
Si je divise ma courbe en deux, tout va bien, mes paramètres sont cohérents. Si je la divise en trois, j'ai des paramètres "erronés" ou pas assez précis pour la dernière sous-courbes.
La seule hypothèse que je voie pour l'instant c'est que j'atteins la limite d'excel en terme de calcul...
Ou alors il y a une grosse erreur que j'ai loupé !!

Qu'en pensez vous??

Merci de votre aide,
Guillaume

PS: Dans une version plus ancienne l'application créait un graphe avec une courbe de tendance puis elle récupérait l'équation, cette version à été abandonnée pour des raisons de rapidité.
 

Pièces jointes

  • Approximation_polynomiale.xlsx
    50.6 KB · Affichages: 124

Misange

XLDnaute Barbatruc
Re : Problème lors d'une approximation polynomiale

Bonjour

j'ai pas compris grand chose à ta méthode mais je te propose un autre truc si ça t'arrange : récupérer les 5 coeffs en un coup
(NB même avec un polynome de degré 3 le r² est = 1... )
Tu sélectionnes 6 cellules contigues (1 de plus que le degré du polynome)
tu saisis
=DROITEREG(tes Y;tes X^{1\2\3\4\5})
validation matricielle

plus de détails ici
Ce lien n'existe plus
 

Pièces jointes

  • Copie de Approximation_polynomiale.xlsx
    54.8 KB · Affichages: 92

_Guillaume_

XLDnaute Nouveau
Re : Problème lors d'une approximation polynomiale

Bonsoir/bonjour Misange et merci pour ta réponse,

J'ai regardé rapidement ta méthode, je t’avoue être débordé ces temps si !
Je l'avais déjà vu mais l'avais mise de côté pour je ne sais plus qu'elle raison!

Bon j'ai visiblement le même problème, c'est à dire que la méthode fonctionne bien pour les deux premières "sous-courbes", mais mes résultats pour la troisième semble faux !

J'ai besoin de ses paramètres afin d'extrapoler par la suite mes données, c'est pour ca que je cherche à avoir une très bonne précision (degré 5).

C'est tout de même bizarre que ces méthodes fonctionnent bien pour les deux premières courbes mais pas pour la troisième??

Merci de ton aide
 

Dranreb

XLDnaute Barbatruc
Re : Problème lors d'une approximation polynomiale

Bonsoir.
Avec mes propres outils de calculs de polynômes (je n'ai jamais rien compris au DROITEREG utilisé comme ça, et je les avais avant de découvrir ça sur XLD), j'obtiens des coefficients très différents des vôtres pour le 3ième polynôme, mais pas une meilleure précision au final. Je soupçonne un problème d'ordre de grandeur trop différents des valeurs X aux différents degrés, qui exigerait une précision de bien plus de 15 chiffres pour avoir un résultat juste. Dans ce cas il faudrait ramener les valeurs x des tronçons dans un intervalle de 0 à 1 par exemple pour garder la précision. Voyez vous ce que je veux dire ?
Pour la petite histoire, je n'aurais pas pensé non plus à votre façon d'obtenir la matrice carrée aux moindre carrés et je crois bien que je n'ai compris que vaguement. Dites moi si mes fonctions VBA vous intéressent, je joindrai alors le truc. Faut juste que j'équipe votre classeur des fonctions adéquates de mon classeur de macro complémentaire.

Et puis je le joins tien.
Ça commence à être chargé.
Mes ajouts sont en police rouge (juste pour distinguer de ce précédait, dont les apports de Misange, que je salue)
Regardez quand même mes coefs par rapport aux vôtres pour le 3ième, les différences sont effarantes, ça suggère même des erreurs de signes, mais à part l'ordre de grandeur des x qui peut gêner, je n'explique rien.

À +
 

Pièces jointes

  • Polynômes.xls
    194 KB · Affichages: 63
Dernière édition:

_Guillaume_

XLDnaute Nouveau
Re : Problème lors d'une approximation polynomiale

Bonjour et merci du coup de main,
Je vais étudier tous ca et me replonger dans les cours d'approximation polynomiale...

Ma méthode utilise le calcul matriciel suivant : b = (X’X)^(-1)X’Y
où b est le vecteur contenant les coefficients de chaque monôme
X mes données en x
Y mes données en y
Je ne me rappel plus trop de la démonstration mais elle doit se trouver assez facilement sur internet...

J'ai tester rapidement l'approximation avec Matlab en utilisant la fonction polyfit (voir PJ) et surprise j’obtiens les même paramètres qu'avec l'outil courbe de tendance d'Excel... Ensuite j'utilise la fonction polyval permettant de calculer les y avec les x et les coefficients en b et je retrouve à peu près mes données de départ.

Est-ce que quelqu'un connaitrait l'algorithme ce cachant derrière l'outil courbe de tendance d'excel dans le cas d'une approximation polynomiale? Ce serait juste pour info, puisque cet outil dans visiblement les "bons" paramètres.

Je continue de chercher une solution qui pourrait s'automatiser, contrairement à la courbe de tendance du graphique.
 

Pièces jointes

  • Approximation_Matlabe-Octave.txt
    1.6 KB · Affichages: 53

Dranreb

XLDnaute Barbatruc
Re : Problème lors d'une approximation polynomiale

Faites une interpolation linéaire de vos valeurs X pour que celles soumises aux polynômes ne dépassent pas 1 en valeur absolue, tant pour la recherche de leurs coefficient que pour les extrapolations ultérieures dont vous aurez besoin.
Il est sûr que si x est de l'ordre de 1000, les degrés 1 et 2 et la constante n'ont plus aucune incidence sur le résultat tant ils sont négligeable face à 1000 ^ 5 et donc vous vous retrouverez toujours avec des erreurs de l'ordre de grandeur des termes de ces degrés inférieurs justement !
 

_Guillaume_

XLDnaute Nouveau
Re : Problème lors d'une approximation polynomiale

Je ne voie pas bien ce que vous voulez dire dans la première partie de votre message.

En tout cas si je modélise seulement la dernière parie de la courbe par un polynôme d'ordre 3, je trouve les bons paramètres, mais je ne sais pas si leur précision est bonne. Tout comme je ne sais pas si cette approximation sera bonne pour chaque série de données.

Je ferais quelques tests ce weekend, car je n'ais pas le temps avant. Mais s'il y a d'autres idées d'ici là, je suis preneur !
 

Dranreb

XLDnaute Barbatruc
Re : Problème lors d'une approximation polynomiale

Je veux dire qu'au lieu de chercher et appliquer pour vos extrapolations ultérieures les polynômes de x, faites le avec des polynômes de ax + b, a et b étant calculés pour donner des valeurs allant de -1 à 1 par exemple dans le tronçon considéré. Alors vous aurez toute la précision désirable au degré 5.
 

Discussions similaires

Statistiques des forums

Discussions
312 169
Messages
2 085 929
Membres
103 047
dernier inscrit
Duuubee