如何在Python函数中对耦合的ODE系统进行矢量化?

如何在Python函数中对耦合的ODE系统进行矢量化?,python,ode,runge-kutta,Python,Ode,Runge Kutta,基本上,我一直在尝试将这个耦合的ODE系统实现成一个函数,这样就可以用Runge-Kutta的方法,用参数q电荷和t时间来求解,其中q是一个列表,其中有q1,q2和q3: 我知道这会出错,但我一直在努力解决这个问题,但找不到解决方案 谁能帮帮我吗?我做到了 def Problem(z,t): """ Z = [z1,z2,z3,z4,z5] z1: q1 (z[0]) z2: q2 (z[1]) z3: q2' (z[2])

基本上,我一直在尝试将这个耦合的ODE系统实现成一个函数,这样就可以用Runge-Kutta的方法,用参数q电荷和t时间来求解,其中q是一个列表,其中有q1,q2和q3:

我知道这会出错,但我一直在努力解决这个问题,但找不到解决方案

谁能帮帮我吗?

我做到了

def Problem(z,t):
    """
    Z = [z1,z2,z3,z4,z5]
    z1: q1 (z[0])
    z2: q2 (z[1])
    z3: q2' (z[2])
    z4: q3 (z[3])
    z5: q3' (z[4])
    dZ = [q1',q2',q2'',q3',q3'']
    """
    t0 = 1  # step function's shift.
    V = 110*U(t-t0)
    R1 = 350; R2 = 220
    L1 = 1.2; L2 = 2
    C1 = 3.5e-3; C2 = 2.8e-3
    d2q2 = (z[0]/C2 - z[1]/C2 - z[3]/C2)/L2
    dq1 = (V - z[0]/C1 + R2*z[4] - L2*d2q2)/R2
    d2q3 = (-(R1+R2)*z[4] + R2*dq1 + z[0]/C2 - z[1]/C2 - z[3]/C2)/L1
    dz = np.array([dq1,z[2],d2q2,z[4],d2q3])
    return dz
def Problem(z,t):
    """
    Z = [z1,z2,z3,z4,z5]
    z1: q1 (z[0])
    z2: q2 (z[1])
    z3: q2' (z[2])
    z4: q3 (z[3])
    z5: q3' (z[4])
    dZ = [q1',q2',q2'',q3',q3'']
    """
    t0 = 1  # step function's shift.
    V = 110*U(t-t0)
    R1 = 350; R2 = 220
    L1 = 1.2; L2 = 2
    C1 = 3.5e-3; C2 = 2.8e-3
    d2q2 = (z[0]/C2 - z[1]/C2 - z[3]/C2)/L2
    dq1 = (V - z[0]/C1 + R2*z[4] - L2*d2q2)/R2
    d2q3 = (-(R1+R2)*z[4] + R2*dq1 + z[0]/C2 - z[1]/C2 - z[3]/C2)/L1
    dz = np.array([dq1,z[2],d2q2,z[4],d2q3])
    return dz