scipy odeint如何解决这个微分方程?

我正在尝试使用scipy odeint解决以下微分方程式,但没有取得很大的成功:

import numpy as np
from scipy.misc import derivative
from scipy.integrate import odeint

Imag = 16000.
w = 2*np.pi*60
tau = .05
theta = 1.52
phi = theta - np.radians(90)
t = np.linspace(0,.1,10000)
def Ip(t):
    return np.sqrt(2)*Imag*(np.sin(w*t+phi-theta)-np.exp(-t/tau)*np.sin(phi-theta))

B = lambda Ip: Ip/(53.05+0.55*abs(Ip))
def L(B):
    return derivative(B,Ip(t))*377.2

def dI(t):
    return derivative(Ip,t)

def f(y,t):
    Rb = 8.
    N = 240.
    Is = y[0]
    f0 = (1/(L(B)+0.002))*((dI(t)*L(B)/N)-Rb*y[0])
    return [f0]

yinit = [0]
sol = odeint(f,yinit,t)
print sol[:,0]

我不断收到以下错误:

odepack.error: Result from function call is not a proper array of floats.
ValueError: object too deep for desired array
odepack.error: Result from function call is not a proper array of floats.

我应该怎么做才能正确运行脚本?

解决方法:

怎样用ode而不是odeint

有一个非常类似于您的问题:
How to make odeint successful?

上一篇:day04-运算符


下一篇:用阶跃函数求解微分方程