2009-08-26 10 views
1

Depuis scipy, j'utilise les fonctions interpolate.splrep et interpolate.splev pour interpoler mon ensemble de données. Sans surprise, cela ne fonctionne pas très bien si j'essaie d'obtenir une valeur interpolée près des bords de l'ensemble de données.Interpolation de points de données aux extrémités d'un ensemble de données

Je suis venu avec une solution de contournement (extension de l'ensemble de données par deux entrées supplémentaires qui ont la même valeur que la dernière entrée "régulière" de l'ensemble de données, ce qui semble fonctionner), mais je me demande utiliser une autre fonction d'interpolation, ou s'il existe un moyen commun de gérer cela.

Merci d'avance!

Répondre

0

Je ne suis pas familliar avec scipy unfortunally, mais peut-être cela aiderait:

Je présume, ce sont des fonctions splines polynomiales, donc vous pouvez réellement interpoler votre jeu de données à proximité des bords avec polynomes réels. C'est facile.

Supposons, nous avons un jeu de données de points comme (xi, yi), i = 1..n. A partir de la fonction splerp, nous pouvons trouver une dérivée première (la différence finie fera effectivement) aux points '2' (df_second ') et' n-1 '(df_before_last). Ensuite, nous avons besoin de deux systèmes d'équations linéaires:

a1*x1^2 + b1*x1 + c1 = y1 
a1*x2^2 + b1*x2 + c1 = y2 
2*a1*x2 + b1 = df_second 

et

a2*xn^2 + b2*xn + c2 = yn 
a2*x(n-1)^2 + b2*x(n-1) + c2 = y(n-1) 
2*a2*x(n-1) + b2 = df_before_last 

La résolution de ce que vous obtenez deux équations vous polymones: a1 * x^2 + b1 * x + c1 et a2 * x^2 + b2 * x + c2 qui va interpoler et accéder smothly à la fonction spline.

En fait, vous pouvez augmenter le degré de polynômes et définir la courbure et l'angle des graphiques interpolant en premier et dernier point en ajoutant simplement des équations supplémentaires dans un système.

Questions connexes