2

私はこの論文を読んでいます。この論文の 286 ページでは、3 次スプライン補間を使用して、連続する 1 次微分と 2 次微分が確実に存在するようにしています。

私は現在、Pythonでこれをやろうとしています。この文から、彼らは隣り合うスプラインの 1 次導関数と 2 次導関数が同じであることを確認したいと思っていると推測します。私の質問は今、どうすれば scipy でこれを行うことができますか? 私はこれを見つけました: http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.splev.html

パラメータがある場所der(計算するスプラインの導関数の次数) 。これは 2 になるパラメータですか?


これについての補足質問※ですが、一階微分点は後ほど使います。これらは各スプラインの一次導関数にすぎないと仮定できますか? これらをどのように入手できますか?

4

1 に答える 1

3

によって計算された次数のスプラインscipy.interpolateは、次の微分kが連続しています。1 ... k-1あなたの場合、注文k=3には連続的な一次導関数と二次導関数があります。スプラインの数値微分を介して、これが正しいことを自分で確認できます。

numpy を np としてインポート
scipyインポート補間から
matplotlib.pyplot を plt としてインポート
x = np.linspace(0, 10, 100)
y = np.sin(x)
spl = 補間.splrep(x, y, k=3)
xx = np.linspace(0, 10, 100000)
yy = 補間.splev(xx, spl)
d1 = np.diff(yy) / np.diff(xx)
d2 = np.diff(d1) / np.diff(xx[1:])
d3 = np.diff(d2) / np.diff(xx[1:-1])
plt.サブプロット(311)
plt.plot(xx[1:], d1)
plt.title('一次導関数')
plt.サブプロット(312)
plt.plot(xx[1:-1], d2)
plt.title('二次導関数')
plt.サブプロット(313)
plt.plot(xx[2:-1], d3)
plt.title(「三次導関数」)
plt.show()

3 次導関数は、不連続性を示す最初のものです。

二次導関数を取得することは、実際には を介し​​て直接行うことができますsplev(..., der=2)

(この論文を読まずに、あなたの 2 番目の質問についてコメントすることはできません。)

于 2013-04-10T22:53:26.680 に答える