向量微分方程

时间:2020-05-15 14:03:54

标签: python matrix vector ode differential-equations

我正在尝试在Python中求解向量微分方程,但不断收到我不太了解的错误。 这是我的代码:

    import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt

N=100

tau_s=1
tau_n=1
R=1

t0=0
t1=10

v_rest=-65

M=[]


for i in range(N):
    M.append([])
    for j in range(N):
        M[i].append(1)

M=np.array(M)

def I(t):
    I=5   
    return I

def system(u,t):
    du=np.zeros((N,)

    du=-1/tau_s*(u-v_rest)+R*(I(t)+np.dot(M,u))

    return du

u0=v_rest*np.ones(N,)

ts=(0,1000)

sol=solve_ivp(system,ts,u0)

错误信息:

ValueError: could not broadcast input array from shape (100,100) into shape (100)

如果我正确理解它,则意味着diff方程的一侧与另一侧的形状不同,因此Python无法解决它,但是M和u的乘积应产生一个形状为(100)的向量不知道发生了什么。

您能帮我吗?

1 个答案:

答案 0 :(得分:3)

来自documentation for solve_ivp:“主叫签名是fun(t,y)。这里t是一个标量。”我认为您在系统中交换了论点。

如果我将系统签名更改为makeURL(),则您的代码对我来说运行正常。虽然,我不能说我是否得到了预期的答案。