Python に 2 つの配列があり、それらのポイント間の 3 次スプライン補間を取得 (および実際に使用) したいとします。(IE: 機能を統合したい)。numpy scipy を使用する方法を強くお勧めします。
私はscipy.interpolate.interp1dについて知っています。ただし、それはポイントを評価することしかできません。たとえば、次の非常に単純な機能です。
これで、次のような簡単なことができます。
import numpy as np
import scipy.interpolate
import matplotlib.pyplot as plt
y = np.array([0,2,3,4,8,10,12,12,12,10,9,8,7,1,0,0,1,2])
x = np.array(range(len(y)))
xvals = np.linspace(0, len(y)-1, len(y)*100, endpoint = False)
func = scipy.interpolate.interp1d(x, y, kind = "cubic")
yvals = func(xvals)
plt.plot(xvals,yvals)
plt.plot(x,y, "o")
しかし、私はこの 3 次スプラインをさらに処理したいと考えています (つまり、統合を取得する必要があります)。手動で行うには、係数を取得する必要があるため、次のようになります。
a_i * x^3 + b_i * x^2 + c_i * x + d_i where i goes from 0 to n/3
(n = 要素の数 - これは i 番目の立方体の定義です)
したがって、すべてのスプラインを記述するタプル (または 2 次元配列) のリストが必要です。- または、i 番目の 3 次を取得する方法、そして本当に、現在どのスプラインにいるかを見つけるための便利な「x-to-i」を取得したいと思っています。
(もちろん、この後者の問題は、ソートされたリスト内の参照よりも大きい最初の値の単純な検索ですが、必要に応じて手動で簡単に実行できます)。