2016-04-16 11 views
0

こんにちは私は、scipyの補間を使用しようとする次のコードを使用しています。Scipy補間PiecewisePolynomial - 入力データのエラー

[0.2015, 0.3469, 0.2985, 0.2113, 0.19989999999999997, 0.4262, 0.21355000000000002, 0.22260000000000002, 0.21194999999999997, 0.1846, 0.2627, 0.2058, 0.2276, 0.21715, 0.23099999999999998, 0.20235, 0.2165, 0.21165, 0.3836, 0.19594999999999999, 0.20450000000000002, 0.20375, 0.20145000000000002, 0.23525000000000001, 0.2242, 0.22645, 0.27455, 0.22425, 0.2232, 0.1977, 0.19635000000000002, 0.21995, 0.30325, 0.22565] 

そしてXは、次のとおりです。

tck = interpolate.PiecewisePolynomial(X,Y, orders = 2) 

Yである場合:として読んで補間を呼び出すコードで

Traceback (most recent call last): 
    File "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.4.1\helpers\pydev\pydevd.py", line 1733, in <module> 
    debugger.run(setup['file'], None, None) 
    File "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.4.1\helpers\pydev\pydevd.py", line 1226, in run 
    pydev_imports.execfile(file, globals, locals) # execute the script 
    File "C:/Users/%user%/PycharmProjects/price_options_multithread/curve_interpolation.py", line 81, in <module> 
    tck = interpolate.PiecewisePolynomial(moneyness_,vols_, orders = 2) 
    File "C:\Users\%user%\Miniconda\lib\site-packages\scipy\interpolate\polyint.py", line 731, in __init__ 
    self._set_yi(yi0) 
    File "C:\Users\%user%\Miniconda\lib\site-packages\scipy\interpolate\polyint.py", line 131, in _set_yi 
    self._y_axis = (axis % yi.ndim) 
ZeroDivisionError: integer division or modulo by zero 

私は、次のエラーを取得しています:

[0.91157701638785, 0.586013796249332, 0.820419314749065, 0.937622073998931, 1.17202759249866, 0.520901152221628, 0.872509429971228, 0.989712189221094, 1.0548248332488, 1.02877977563772, 0.807396785943524, 0.92459954519339, 1.30225288055407, 1.01575724683218, 0.859486901165687, 0.976689660415553, 1.00273471802663, 1.23714023652637, 0.455788508193925, 1.10691494847096, 0.846464372360146, 0.963667131610013, 1.09389241966542, 0.781351728332443, 0.898554487582309, 1.08086989085988, 0.716239084304739, 0.833441843554605, 0.950644602804472, 1.04180230444326, 1.1199374772765, 1.06784736205434, 0.651126440277035, 0.885531958776768] 

type(X)type(Y)ギブ:<type 'list'>

私はExcelの多項式補間を行う場合は、次のように見える: enter image description here

このエラーを生成しているものに任意のポインタは、スーパー役立つだろう。

ありがとうございました!

+0

Yはご利用いただけますか? – miradulo

+0

@DonkeyKong - あなたは正しいです。これは、私がしようとしているものに対して正しい補間ではありません。 –

答えて

0

Pythonを使用した並列フィットは、numpy polyfitを使用すると最も効果的です。

これは将来他の人に役立つことを期待しています。

これはソースエラーとは無関係ですが、私は他の誰かを助けるために残しておきます。

関連する問題