2017-05-28 31 views
0

我想了解如何解决python和scipy中的ODE,这似乎是一个很好的起点。我已经习惯使用odeint,现在正在尝试学习如何使用ode。我试着运行scipy docs中的示例代码,但它返回一个错误。我已将以下代码复制到错误旁边。通过scipy文档试图解决颂歌的示例代码中的错误是什么?

CODE

from scipy.integrate import ode 

y0, t0 = [1.0j, 2.0], 0 

def f(t, y, arg1): 
    return [1j*arg1*y[0] + y[1], -arg1*y[1]**2] 

def jac(t, y, arg1): 
    return [[1j*arg1, 1], [0, -arg1*2*y[1]]] 

r = ode(f, jac).set_integrator('zvode', method='bdf', with_jacobian=True) 
r.set_initial_value(y0, t0).set_f_params(2.0).set_jac_params(2.0) 
t1 = 10 
dt = 1 

while r.successful() and r.t < t1: 
    r.integrate(r.t+dt) 
    print("%g %g" % (r.t, r.y)) 

ERROR MESSAGE

print("%g %g" % (r.t, r.y)) 
TypeError: only length-1 arrays can be converted to Python scalars 

回答

2

r.y是一个长度为2的数组。而复杂的数字。两者都与一个浮点格式化指令不兼容。

隐式转换为字符串但是作品,

print "%g %s" % (r.t, r.y) 
相关问题