8

加重最小二乗を最小化する自然なスプラインに適合する数値パッケージを見つけようとしています。

不自然なスプラインに必要なことを行うscipyのパッケージがあります。

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')
4

1 に答える 1

6

このページtarファイル内の spline.py ファイルは、デフォルトで自然なスプライン フィットを行います。このページには、主に必要なものを主張するコードもいくつかあります。pyD3D パッケージpyDataUtilsモジュールには、自然なスプライン関数もあります。この最後のものは、私にとって最も有望に見えます。ただし、独自のノットを設定するオプションはないようです。ソースを見れば解決方法がわかるかもしれません。

また、 Scipy メーリング リストでこのメッセージを見つけました。これは、s=0.0 (指定されたコードのように) を使用すると、メッセージの作成者によると、上記の手順を使用してスプラインを自然に適合させることを示しています。自然なスプライン フィットを実行するオプションを備えたこの splmake関数を見つけましたが、ソースを調べたところ、まだ実装されていないことがわかりました。

于 2010-03-14T19:14:35.553 に答える