2009-08-26 5 views
1

Von scipy Ich benutze die interpolate.splrep und interpolate.splev Funktionen, um meinen Datensatz zu interpolieren. Es ist nicht überraschend, dass dies nicht sehr gut funktioniert, wenn ich versuche, einen interpolierten Wert nahe den Rändern des Datensatzes zu erhalten.Interpolation von Datenpunkten an den Endpunkten eines Datensatzes

Ich habe einen Workaround gefunden (den Datensatz um zwei zusätzliche Einträge zu erweitern, die den gleichen Wert haben wie der letzte "reguläre" Eintrag des Datensatzes; das scheint zu funktionieren), aber ich frage mich, ob ich das tun soll Verwenden Sie eine andere Interpolationsfunktion, oder wenn es eine allgemeine Möglichkeit gibt, damit umzugehen.

Vielen Dank im Voraus!

Antwort

0

Ich bin nicht familliar mit scipy unfortunally, aber vielleicht würde dies helfen:

Ich nehme an, diese Polynom Spline-Funktionen sind daher können Sie tatsächlich interpoliert Dataset in der Nähe der Kanten mit tatsächlichen Polynomen. Es ist leicht.

Nehmen wir an, wir haben einen Datensatz mit Punkten wie (xi, yi), i = 1..n. Von der Splenfunktion können wir eine erste Ableitung (finite Differenz wird tatsächlich tun) in den Punkten '2' (df_second ') und' n-1 '(df_before_last) finden. Dann brauchen wir zwei lineare Gleichungssystem:

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

und

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 

Lösen dieser Gleichungen Sie zwei polymones bekommen: a1 * x^2 + b1 * x + c1 und a2 * x^2 + b2 * x + c2, die interpoliert werden und auf die Spline-Funktion zugreifen.

Eigentlich können Sie Polynome Grad erhöhen und Interpolant Grafiken Krümmung und Winkel im ersten und letzten Punkt setzen, indem Sie einfach zusätzliche Gleichungen in einem System.

Verwandte Themen