2012-02-10 146 views
0

我的代碼可用here,因爲當我試圖在此處發佈時,Stack Overflow不斷給我提供錯誤。下面dfitpack.error:(m> k)未能隱藏m:fpcurf0:m = 1

我的錯誤是:

Traceback (most recent call last): 
    File "/tmp/DoubleIntegrate.py", line 30, in <module> 
    t = interpolate.UnivariateSpline(d1.values(), d2.values()) 
    File "/Library/Python/2.7/site-packages/scipy-0.11.0.dev_1983db6_20120208-py2.7-macosx-10.7-x86_64.egg/scipy/interpolate/fitpack2.py", line 136, in __init__ 
    xb=bbox[0],xe=bbox[1],s=s) 
dfitpack.error: (m>k) failed for hidden m: fpcurf0:m=1 

我通過源代碼梳理,並沒有能夠從尾部使頭出來。

這個錯誤是什麼意思?

回答

3

有幾件事我認爲可能會導致問題。

  1. d1 = d2 = {}

    這並不讓兩個獨立的字典;它使一個,並且兩個名字d1和d2都指向它。這應該是d1 = {}d2 = {}

  2. 這些線路吹字典走在每次循環迭代:

    d1 = {part[0] : xval} 
        d2 = {part[0] : yval} 
    

    爲了添加到字典中,這些應該是:

    d1[part[0]] = xval 
        d2[part[0]] = yval 
    

    ,你應該鍵可能轉化爲也漂浮,以確保我們可以正確地訂購它們。

  3. 最後,字典沒有訂單,所以行

    t = interpolate.UnivariateSpline(d1.values(), d2.values()) 
    

    是危險的,因爲你有沒有保證,他們將在相同的順序,或者按照正確的順序。如果你想花鍵的xvals對yvals,你要像

    keys = sorted(d1) 
    xs = [d1[k] for k in keys] 
    ys = [d2[k] for k in keys] 
    t = interpolate.UnivariateSpline(xs, ys) 
    

    ,但我可能只是積累X和Y的列表,而不是使用字典。

你看到的基本上是說有不匹配節點數,這是有道理的,因爲它是隻獲得了因錯誤#2一個數據點足夠的數據點的特定錯誤消息。