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?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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?
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?
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?
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.
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.
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.