リストを反復処理エラー '例外TypeError:できないアンパック非反復可能なオブジェクトの

user371816:

私は、scipyのダウンロードのodeintと一定の微分方程式を解くためにPythonスクリプトを書いています。私は、ドキュメントのページの例をコピーします:

def pend(y,t,b,c):
    theta, omega = y
    dydt = [omega, -b*omega -c*np.sin(theta)]
    return dydt
b = 0.25
c = 5.0

y0 = [np.pi-0.1,0.0]
t = np.linspace(0,10,101)
sol = odeint(pend, y0, t, args = (b,c))
plt.plot(t,sol[:,1])
plt.plot(t,sol[:,0])

これは、罰金、すべての作品が、私はロトカ・ボルテラシステムコードブレークダウンをしようとすると:

def F(t,n,a,b,c,d):
    x, y = n
    deriv = [a*x-b*x*y,c*x*y-d*y]
    return deriv

t = np.linspace(0,100,100)
a = 1.1
b= 0.4
c = 0.1
d = 0.4
n0 = [10,10]
sol = odeint(F,n0,t,args = (a,b,c,d))

これはTypeError例外を返します。

<ipython-input-14-ea2a41feaef2> in F(t, n, a, b, c, d)
     1 def F(t,n,a,b,c,d):
----> 2     x, y = n
     3     deriv = [a*x-b*x*y,c*x*y-d*y]
     4     return deriv
     5 

TypeError: cannot unpack non-iterable float object


誰の助けが私は私が何が欠けてる見てもらえますか?第二のコードは同じ構造で記述されている場合、具体的に、理由コード例の作業を行います。ありがとう!

サイモン・フィンク:

私は、この行に渡される引数は、正しい順序ではないことを、前提としています。

sol = odeint(F,n0,t,args = (a,b,c,d))

それはすべきではありません:

sol = odeint(F,t,n0,args = (a,b,c,d))

別の方法としては、への関数定義で引数の順序を入れ替えることができます。

def F(n,t,a,b,c,d):

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=377478&siteId=1