2012-02-10 21 views
0

here Stack Overflowは私がここに投稿しようとしたときにエラーを表示し続けたためです。dfitpack.error:隠し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 = {}

    これは、2つの別々の辞書を作成しません。それは1つを作り、2つの名前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()) 
    

    は危険です。あなたはyvalsに対してxvalsをスプラインしたい場合は、

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

    ような何かをしたいが、私は単純に辞書を使用するのではなく、XSとYSのリストを蓄積するだろうと思います。

あなたが見ている特定のエラーメッセージは、基本的には、それだけでバグ#2のために1つのデータポイントを得ていたので、理にかなってノットの数と一致するのに十分なデータポイントが存在しないと言っています。

関連する問題