Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Interpolation polynomiale

2 réponses
Avatar
gagwel
Bonjour,

je souhaite faire une interpoolation polynomiale à partir de données issues
de logiciels de calculs. Or su Excel, seule l'interpolation linéaire existe
avcec la fonction DROITEREG.

J'ai réussi à trouver une parade en faisant une interpolation linéaire
multiple. Par exemple si je veux faire une interpolation d'ordre 2
(y=m1*x1+m2*x2) je remplis "à la main" une colonne de x2 qui correspond en
fait à x*x.

Cependant, il faut nécessairement prévoir à l'avance le degré du polynome
qui conviendra le mieux à la série de données que l'on étudie, ce qui, peut
devenir assez fastidieux pour des degrés élevés.

D'autre part, l'algorithme d'interpolation polynomiale semble déjà exister
sous Excel puisqu'à partir d'un graphique on peut ajouter une courbe de
tendance polynomiale.

Y'a-t'il donc plus simple que la bidouille que j'ai trouvée?

2 réponses

Avatar
Nicolas B.
Salut,

Voilà une fonction qui permet de calculer les coefficients de la
régression polynomiale par la méthode des moindres carrés (autrement
dit, la méthode utilisée par Excel dans les courbes de tendance) :


Function MoindresCarres(rgX As Range, rgY As Range, p As Integer)

Dim n As Integer
Dim i As Integer
Dim j As Integer
Dim M() As Double

n = rgX.Cells.Count
ReDim M(n - 1, p)

For i = 0 To n - 1
For j = 0 To p
M(i, j) = rgX(i + 1) ^ j
Next
Next

With WorksheetFunction
If rgX.Rows.Count = 1 Then
MoindresCarres = .MMult(.MInverse(.MMult(.Transpose(M),
M)), .MMult(.Transpose(M), .Transpose(rgY)))
Else
MoindresCarres = .MMult(.MInverse(.MMult(.Transpose(M),
M)), .MMult(.Transpose(M), rgY))
End If
End With

End Function

rgX : plage des X
rgY : plage des Y
p : degré du polynôme.

Le résultat est renvoyé sous la forme d'une matrice (exactement comme
dans le cas de droitereg) donnant les coefficients du polynôme.

Cependant, il faut nécessairement prévoir à l'avance le degré du
polynome qui conviendra le mieux à la série de données que l'on
étudie, ce qui, peut devenir assez fastidieux pour des degrés élevés.


Si tu veux que le polynôme d'interpolation passe par tous les points du
graphique, il faut pour n points un polynôme de degré n. La fonction
précédente renvoie dans ce cas le polynôme d'interpolation de Lagrange.


A+
Nicolas B.

Bonjour,

je souhaite faire une interpoolation polynomiale à partir de données issues
de logiciels de calculs. Or su Excel, seule l'interpolation linéaire existe
avcec la fonction DROITEREG.

J'ai réussi à trouver une parade en faisant une interpolation linéaire
multiple. Par exemple si je veux faire une interpolation d'ordre 2
(y=m1*x1+m2*x2) je remplis "à la main" une colonne de x2 qui correspond en
fait à x*x.

Cependant, il faut nécessairement prévoir à l'avance le degré du polynome
qui conviendra le mieux à la série de données que l'on étudie, ce qui, peut
devenir assez fastidieux pour des degrés élevés.

D'autre part, l'algorithme d'interpolation polynomiale semble déjà exister
sous Excel puisqu'à partir d'un graphique on peut ajouter une courbe de
tendance polynomiale.

Y'a-t'il donc plus simple que la bidouille que j'ai trouvée?


Avatar
Nicolas B.
Petite rectification :

Si tu veux que le polynôme d'interpolation passe par tous les points
du graphique, il faut pour n points un polynôme de degré n.


Pour n points, le polynôme est de degré n-1, et non n...


Nicolas B.

Cependant, il faut nécessairement prévoir à l'avance le degré du
polynome qui conviendra le mieux à la série de données que l'on
étudie, ce qui, peut devenir assez fastidieux pour des degrés élevés.


Si tu veux que le polynôme d'interpolation passe par tous les points du
graphique, il faut pour n points un polynôme de degré n. La fonction
précédente renvoie dans ce cas le polynôme d'interpolation de Lagrange.