Frage

Ich versuche, eine numerische Paket zu finden, die eine natürliche Spline passen die kleinsten Quadrate gewichtet ein Minimum reduziert.

Es ist ein Paket in scipy was tut, was ich für unnatürlich Splines will.

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate, randn

x = np.arange(0,5,1.0/6)
xs = np.arange(0,5,1.0/500)

y = np.sin(x+1) + .2*np.random.rand(len(x)) -.1

knots = np.array([1,2,3,4])
tck = interpolate.splrep(x,y,s=0,k=3,t=knots,task=-1)
ys = interpolate.splev(xs,tck,der=0)

plt.figure()
plt.plot(xs,ys,x,y,'x')
War es hilfreich?

Lösung

Die spline.py Datei innerhalb dieser TAR-Datei von diese Seite eine natürliche Spline-Anpassung standardmäßig der Fall ist. Es gibt auch einige Code auf Seite dass die Ansprüche auf meist, was Sie wollen. Die pyD3D verpacken hat auch eine natürliche Spline-Funktion in seinen pyDataUtils Modul. Dieses letzt man sieht mir am meisten verspricht. Allerdings scheint es nicht die Möglichkeit zu haben, Ihre eigenen Knoten zu setzen. Vielleicht können Sie, wenn Sie an der Quelle suchen einen Weg finden, das zu korrigieren.

Auch gefunden, ich Diese Nachricht auf dem Scipy Mailing-Liste, das besagt, dass 0.0 mit s = (wie in Ihrem bestimmten Code) macht Splines natürlich nach dem Verfasser der Nachricht mit Ihrem obigen Verfahren ausgestattet. Ich habe dieser splmake Funktion finden, die eine Option auf tun, um eine natürliche Spline-Anpassung, sondern auf an der Quelle suchen fand ich, dass es noch nicht implementiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top