OVH Cloud OVH Cloud

Interpolation polynamiale

12 réponses
Avatar
Sylvain
Bonjour tout le monde,

Voila je cherche a trouver une fonction Excel qui me permette de recuperer
les coefficients de la fonction d'interpolation d'un graphe.

Je m'explique : j'ai 3 colonnes et 1 graphe. Le graphe est ColB vs ColA, ce
qui me donne une courbe. Je cherche ensuite graphiquement la fonction
d'interpolation qui sied le mieux a cette courbe et affiche sur le graphe
l'equation correspondante. Or apres j'aimerais pouvoir recuperer les
coefficients pour pouvoir calculer les valeurs de ma ColC . Et j'aimerais que
cela se fasse automatiquement bien sur lorsque je fais varier les valeurs des
colonnes A et B.

C'est facile de le faire lorsque la fonction d'interpolation est
exponentielle, logarithmique ou lineaire (fonctions TREND et LOGEST en
anglais) mais je n'arrive pas a trouver de fonction Excel lorsque la courbe
d'interpolation est de type polynomiale (degre 3 dans mon cas).

Savez vous si il en existe une ?

Merci d'avance,

Sylvain.

10 réponses

1 2
Avatar
Michel41
Bonsoir

Si les Y en colonne A
Si les X en colonnes B

2 méthodes

1) Utiliser la fonction d'ajustement polynomial optionnelle du graphique lui
même en choisissant le degré 3 et l'option d'affichage de la fonction ;
attention si les coefficients nécessitent beaucoup de chiffres significatifs
dans l'hypothèse où on souhaiterait les récupérer ; on peut aussi écrire une
macro VBA qui récupère la fonction incrustée dans le graphe et en faire une
analyse textuelle pour en récupérer les coefficients (je l'ai fait ; mais
problème si la fonction est écrite sur 2 lignes car il faudra traiter un
code machine de retour à la ligne... : je déconseille cette reprise
textuelle de la formule)

2) Colonne C, calculer X*X (²*B2) ; colonne D, calculer X^3 (Â*B2) ;
ensuite utiliser la régression d'ajustement par la méthode des moindres
carrés à 3 variables explicatives Y = f(X1, X2 et X3) ; où X1=X ; X2=X² ;
X3=X^3
Regarder dans les fonctions statistiques de régression (matricielles :
attention à la validation !) de l'aide du tableur.

Si on souhaite simplement une information : méthode 1 avec affichage direct
sur le graphe (polynôme de degré 6 maxi avec Excel)
Si on souhaite utiliser cette fonction avec des coefficients calculés
précisément : méthode 2
On peut aussi faire les 2

Danger : il y a des compromis à trouver !
Avec les polynômes on peut interpoler, si on se limite dans le degré car
sinon arte facte curieux
On ne peut pas extrapoler : validité entre le minimum et le maximum observés
Si l'étendu entre Xmin et Xmax est importante, il faudra souvent des
coefficients avec beaucoup de chiffres significatifs, surtout si le degré
est élevé
Le degré du polynôme joue le rôle d'un filtre "fréquentiel" des détails : il
faut augmenter le degré du polynôme pour tenir compte des détails de la
courbe
On a empiriquement une idée du degré du polynôme en comptant le nombre de
détails qualitatifs (inflexions, creux, bosses... +1)
Les résultats sont meilleurs si les X sont en progression arithmétique ;
dans ce cas il existe aussi d'autres méthodes de calculs... mais c'est une
autre histoire

Fin de digression.
@+
M41










"Sylvain" a écrit dans le message de
news:
Bonjour tout le monde,

Voila je cherche a trouver une fonction Excel qui me permette de recuperer
les coefficients de la fonction d'interpolation d'un graphe.

Je m'explique : j'ai 3 colonnes et 1 graphe. Le graphe est ColB vs ColA,
ce
qui me donne une courbe. Je cherche ensuite graphiquement la fonction
d'interpolation qui sied le mieux a cette courbe et affiche sur le graphe
l'equation correspondante. Or apres j'aimerais pouvoir recuperer les
coefficients pour pouvoir calculer les valeurs de ma ColC . Et j'aimerais
que
cela se fasse automatiquement bien sur lorsque je fais varier les valeurs
des
colonnes A et B.

C'est facile de le faire lorsque la fonction d'interpolation est
exponentielle, logarithmique ou lineaire (fonctions TREND et LOGEST en
anglais) mais je n'arrive pas a trouver de fonction Excel lorsque la
courbe
d'interpolation est de type polynomiale (degre 3 dans mon cas).

Savez vous si il en existe une ?

Merci d'avance,

Sylvain.


Avatar
Trirème
Salut,
Là c'est du lourd. on entre dans le domaine de l'analyse numérique...
Début de piste ?

Si dans ta colonne tu n'as que 4 données (une donnée de plus que le
degré du polynôme), tu peux trouver une fonction passant exactement par
les quatre points : interpolation polynomiale de Lagrange.

Si tu as un nuage de points et que la courbe de tendance doit passer
"aux environs" des points, il faut voir du côté des fonctions spline.

Dans les 2 cas l'internet te fournira toutes les formules souhaitées

Salut cordial

Pascal

Bonjour tout le monde,

Voila je cherche a trouver une fonction Excel qui me permette de recuperer
les coefficients de la fonction d'interpolation d'un graphe.

Je m'explique : j'ai 3 colonnes et 1 graphe. Le graphe est ColB vs ColA, ce
qui me donne une courbe. Je cherche ensuite graphiquement la fonction
d'interpolation qui sied le mieux a cette courbe et affiche sur le graphe
l'equation correspondante. Or apres j'aimerais pouvoir recuperer les
coefficients pour pouvoir calculer les valeurs de ma ColC . Et j'aimerais que
cela se fasse automatiquement bien sur lorsque je fais varier les valeurs des
colonnes A et B.

C'est facile de le faire lorsque la fonction d'interpolation est
exponentielle, logarithmique ou lineaire (fonctions TREND et LOGEST en
anglais) mais je n'arrive pas a trouver de fonction Excel lorsque la courbe
d'interpolation est de type polynomiale (degre 3 dans mon cas).

Savez vous si il en existe une ?

Merci d'avance,

Sylvain.


--
Cordialement.
Pascal (Trirème)

Avatar
D.Schneider
Salut,
Il faut utiliser une matrice de type:

={DROITEREG(D$36:D$44;C$36:C$44^{12};VRAI;VRAI)}

Points X: C$36:C$44
Points Y: D$36:D$44
{1/2} correspond au degré de l'équation: ici ax2+bx+c , mais tu peux
l'augmenter.

...et ainsi tu peux extraire tous les coéfficients de l'équation:
a b c
0.02850517 0.69921192 -0.30179771
0.05488738 0.16443691 0.12025668
Rsq= 0.99845424 0.00981858 #N/A


Si mon explication n'est pas assez claire, je peux t'envoyer un exemple.
Denis

"Sylvain" a écrit dans le message de
news:
Bonjour tout le monde,

Voila je cherche a trouver une fonction Excel qui me permette de recuperer
les coefficients de la fonction d'interpolation d'un graphe.

Je m'explique : j'ai 3 colonnes et 1 graphe. Le graphe est ColB vs ColA,
ce

qui me donne une courbe. Je cherche ensuite graphiquement la fonction
d'interpolation qui sied le mieux a cette courbe et affiche sur le graphe
l'equation correspondante. Or apres j'aimerais pouvoir recuperer les
coefficients pour pouvoir calculer les valeurs de ma ColC . Et j'aimerais
que

cela se fasse automatiquement bien sur lorsque je fais varier les valeurs
des

colonnes A et B.

C'est facile de le faire lorsque la fonction d'interpolation est
exponentielle, logarithmique ou lineaire (fonctions TREND et LOGEST en
anglais) mais je n'arrive pas a trouver de fonction Excel lorsque la
courbe

d'interpolation est de type polynomiale (degre 3 dans mon cas).

Savez vous si il en existe une ?

Merci d'avance,

Sylvain.


Avatar
Michel NOLF
Je suis interessé par ta réponse. Mais qu'est-ce-qu'il se passe si une des
cellules C contient une valeur négative?

"D.Schneider" a écrit dans le message de
news:
Salut,
Il faut utiliser une matrice de type:

={DROITEREG(D$36:D$44;C$36:C$44^{12};VRAI;VRAI)}

Points X: C$36:C$44
Points Y: D$36:D$44
{1/2} correspond au degré de l'équation: ici ax2+bx+c , mais tu peux
l'augmenter.

...et ainsi tu peux extraire tous les coéfficients de l'équation:
a b c
0.02850517 0.69921192 -0.30179771
0.05488738 0.16443691 0.12025668
Rsq= 0.99845424 0.00981858 #N/A


Si mon explication n'est pas assez claire, je peux t'envoyer un exemple.
Denis

"Sylvain" a écrit dans le message de
news:
Bonjour tout le monde,

Voila je cherche a trouver une fonction Excel qui me permette de
recuperer
les coefficients de la fonction d'interpolation d'un graphe.

Je m'explique : j'ai 3 colonnes et 1 graphe. Le graphe est ColB vs ColA,
ce

qui me donne une courbe. Je cherche ensuite graphiquement la fonction
d'interpolation qui sied le mieux a cette courbe et affiche sur le graphe
l'equation correspondante. Or apres j'aimerais pouvoir recuperer les
coefficients pour pouvoir calculer les valeurs de ma ColC . Et j'aimerais
que

cela se fasse automatiquement bien sur lorsque je fais varier les valeurs
des

colonnes A et B.

C'est facile de le faire lorsque la fonction d'interpolation est
exponentielle, logarithmique ou lineaire (fonctions TREND et LOGEST en
anglais) mais je n'arrive pas a trouver de fonction Excel lorsque la
courbe

d'interpolation est de type polynomiale (degre 3 dans mon cas).

Savez vous si il en existe une ?

Merci d'avance,

Sylvain.






Avatar
Sylvain
Okay merci a tous,

je vais essayer vos differentes propositions demain (apres tout c'est pour
le boulot quoi ;-) ) et je vous tiens au courant !! :)

Sylvain
Avatar
Sylvain
Bonjour,

Alors en ce qui concerne la suggestion de D. Schneider, j'avoue avoir du mal
a l'implementer. En effet outre les problemes de syntaxes (differences
versions anglaise-francaise) j'ai fait un essai tres simple avec:

colonne A: valeurs de 1 a 10
colonne B: valeurs de 1^3 a 10^3

ensuite je cherche a obtenir le premier coefficient (qui doit donc etre 1)
avec la formule suivante :

=INDEX(LINEST(B1:B10,A1:A10^(1/2/3),,TRUE),1,1)

Le resultat n'est pas tres concluant : 1864.11 !! A noter que l'utilisation
{} est tres mal percu par Excel de meme que le . Donc un exemple me ferait
effectivement bien plaisir :)

Passons ensuite a Trireme. Il est evident qu'il y a toujours la methode
lourde de l'analyse numerique en repartant du debut. Mais ma question etait
justement destine a eviter ce genre de calcul qui me ferait perdre pas mal de
temps vu que je ne suis pas tres expert avec Excel et que cela fait quelques
annees maintenant que je n'ai plus relu mes cours d'AN. Bref cette solution
sera vraiment le dernier recours je crois.

Enfin Michel. Votre premiere methode faisant appel a VBA me parait assez
fastidieuse et de plus mon cahier des charges stipule une "utilisation
minimale de VBA" ! Bref je vais essayer de voir comment appliquer votre 2e
methode qui m'a l'air en seconde lecture plutot interessante !

Je vous re-tiens au courant dans la journee !

PS @Michel Nolf: d'un point de vue strictement mathematique il n'y a aucun
probleme a ce qu'une valeur en x soit negative a priori !

Sylvain
Avatar
Michel NOLF
Ce que j'en disais c'était qu'a priori si $c$36 = -4, quelle la valeur de
racine carrée de -4????
;)
amicalement Michel

"Sylvain" a écrit dans le message de
news:
Bonjour,

Alors en ce qui concerne la suggestion de D. Schneider, j'avoue avoir du
mal
a l'implementer. En effet outre les problemes de syntaxes (differences
versions anglaise-francaise) j'ai fait un essai tres simple avec:

colonne A: valeurs de 1 a 10
colonne B: valeurs de 1^3 a 10^3

ensuite je cherche a obtenir le premier coefficient (qui doit donc etre 1)
avec la formule suivante :

=INDEX(LINEST(B1:B10,A1:A10^(1/2/3),,TRUE),1,1)

Le resultat n'est pas tres concluant : 1864.11 !! A noter que
l'utilisation
{} est tres mal percu par Excel de meme que le . Donc un exemple me
ferait
effectivement bien plaisir :)

Passons ensuite a Trireme. Il est evident qu'il y a toujours la methode
lourde de l'analyse numerique en repartant du debut. Mais ma question
etait
justement destine a eviter ce genre de calcul qui me ferait perdre pas mal
de
temps vu que je ne suis pas tres expert avec Excel et que cela fait
quelques
annees maintenant que je n'ai plus relu mes cours d'AN. Bref cette
solution
sera vraiment le dernier recours je crois.

Enfin Michel. Votre premiere methode faisant appel a VBA me parait assez
fastidieuse et de plus mon cahier des charges stipule une "utilisation
minimale de VBA" ! Bref je vais essayer de voir comment appliquer votre 2e
methode qui m'a l'air en seconde lecture plutot interessante !

Je vous re-tiens au courant dans la journee !

PS @Michel Nolf: d'un point de vue strictement mathematique il n'y a aucun
probleme a ce qu'une valeur en x soit negative a priori !

Sylvain


Avatar
Sylvain
Oui effectivement en fait j'avais mal compris la formule de D.Schneider.

Donc au final j'ai essaye en mettant juste 1/3 plutot que 1/2 et cela ne
marche toujours pas. Et donc oui ca plante a mon avis si une des valeurs est
negative avec le '1/2'.

Pour finir j'ai essaye d'utiliser la seconde methode de Michel41 et j'avoue
ne pas avoir saisie comment entre les 3 differentes valeurs pour les x1 x2 x3
dans la formule. Un probleme de syntaxe sans aucun doute !

"Michel NOLF" wrote:

Ce que j'en disais c'était qu'a priori si $c$36 = -4, quelle la valeur de
racine carrée de -4????
;)
amicalement Michel

"Sylvain" a écrit dans le message de
news:
Bonjour,

Alors en ce qui concerne la suggestion de D. Schneider, j'avoue avoir du
mal
a l'implementer. En effet outre les problemes de syntaxes (differences
versions anglaise-francaise) j'ai fait un essai tres simple avec:

colonne A: valeurs de 1 a 10
colonne B: valeurs de 1^3 a 10^3

ensuite je cherche a obtenir le premier coefficient (qui doit donc etre 1)
avec la formule suivante :

=INDEX(LINEST(B1:B10,A1:A10^(1/2/3),,TRUE),1,1)

Le resultat n'est pas tres concluant : 1864.11 !! A noter que
l'utilisation
{} est tres mal percu par Excel de meme que le . Donc un exemple me
ferait
effectivement bien plaisir :)

Passons ensuite a Trireme. Il est evident qu'il y a toujours la methode
lourde de l'analyse numerique en repartant du debut. Mais ma question
etait
justement destine a eviter ce genre de calcul qui me ferait perdre pas mal
de
temps vu que je ne suis pas tres expert avec Excel et que cela fait
quelques
annees maintenant que je n'ai plus relu mes cours d'AN. Bref cette
solution
sera vraiment le dernier recours je crois.

Enfin Michel. Votre premiere methode faisant appel a VBA me parait assez
fastidieuse et de plus mon cahier des charges stipule une "utilisation
minimale de VBA" ! Bref je vais essayer de voir comment appliquer votre 2e
methode qui m'a l'air en seconde lecture plutot interessante !

Je vous re-tiens au courant dans la journee !

PS @Michel Nolf: d'un point de vue strictement mathematique il n'y a aucun
probleme a ce qu'une valeur en x soit negative a priori !

Sylvain







Avatar
D.Schneider
Re-bonjour,

Exemple pas à pas :
Placer les points:
X en (B3:B11)
3.107
2.806
2.505
2.204
1.903
1.602
1.301
1.000

Y en (C3:C11)
1.330
1.328
1.179
1.232
1.083
1.056
0.879
0.891

***Pour activer une matrice:
Taper la formule dans la cellule E3 :
"=DROITEREG(C4:C11;B4:B11^{12};VRAI;VRAI)" ou LINEST en anglais
Selectionner les cellules E3:G10 (les activer)
Placer le pointeur de la souris sur la formule dans la barre de formule
Taper Ctrl + Maj + Enter
.et la formule prend automatiquement la forme:
"={DROITEREG(C4:C11;B4:B11^{12};VRAI;VRAI)}"

...et comme résultat, la matrice en E3:G10 :
(a ) (b) (c)
-0.03452721 0.37277912 0.51871515
0.04654812 0.19322602 0.18444023
0.93194872 0.05467344 #N/A
34.23700335 #N/A
0.20468144 0.01494592 #N/A
#N/A #N/A #N/A
#N/A #N/A #N/A
#N/A #N/A #N/A

Je viens de le faire sur mon tableur, ça marche.
@+ - Denis
Avatar
D.Schneider
Petite erreur d'adressage de cellules:
Les points X en (B4:B11)
et Y en (C4:C11)
voilà....


"D.Schneider" a écrit dans le message de
news:
Re-bonjour,

Exemple pas à pas :
Placer les points:
X en (B3:B11)
3.107
2.806
2.505
2.204
1.903
1.602
1.301
1.000

Y en (C3:C11)
1.330
1.328
1.179
1.232
1.083
1.056
0.879
0.891

***Pour activer une matrice:
Taper la formule dans la cellule E3 :
"=DROITEREG(C4:C11;B4:B11^{12};VRAI;VRAI)" ou LINEST en anglais
Selectionner les cellules E3:G10 (les activer)
Placer le pointeur de la souris sur la formule dans la barre de formule
Taper Ctrl + Maj + Enter
.et la formule prend automatiquement la forme:
"={DROITEREG(C4:C11;B4:B11^{12};VRAI;VRAI)}"

...et comme résultat, la matrice en E3:G10 :
(a ) (b) (c)
-0.03452721 0.37277912 0.51871515
0.04654812 0.19322602 0.18444023
0.93194872 0.05467344 #N/A
34.23700335 #N/A
0.20468144 0.01494592 #N/A
#N/A #N/A #N/A
#N/A #N/A #N/A
#N/A #N/A #N/A

Je viens de le faire sur mon tableur, ça marche.
@+ - Denis




1 2