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 回答