1

3 次 b スプライン フィットで近似したいデータ ポイントがいくつかあります。別のプログラムでは、適合したノットと係数のみを使用していくつかの点を補間したいと考えています。これは、与えられたノットと係数を自分で評価するコードを書く必要があることを意味します。このwikiページを使用して、私はすでにさまざまな点を正しく評価することができました.

knots,coeff,n=scipy.interpolate.splrep(x,y)

不思議なことに、コードを機能させるには、配列の最初と最後の 3 つのエントリを削除する必要がありました (注: 最初の 4 つと最後の 4 つのノットのエントリは同じであるため、0 による除算のエラーが発生します)。これらの重複したエントリがある理由を誰かが知っていますか? これらのエントリを削除することとは別に、wiki ページの方程式が機能します。結果から

knots=[   15.,    15.,    15.,    15.,    75.,   105., ...,  2895.,  2925., 2985.,  2985.,  2985.,  2985.]
coeffs=[ 1.87979615,  1.54132042,  1.46751212,  1.31223359,  1.34208367,  1.2181689, ..., 0.99327417,0.5866527,   0.,          0.,          0., 0.        ]

データポイントの適切な近似値が得られます。

ただし、重みも使用したい場合、「knots」と「coeff」の配列が奇妙に見えることに気付きました。スプライン フィット関数の結果をどのように解釈する必要があるかは誰にもわかりません。現在、私は得る

knots=[15.,15.,15.,15.,2985.,2985.,2985.,2985.] 
coeff=[ 1.48725714,0.3513811,0.71970619,0.66119226,0.,0.,0.,0. ]

それともこれもエラーですか?

理想的には、関数からのノットと係数が与えられたさまざまな点を評価するコード (C/C++、python) が必要です。

4

1 に答える 1