矢量微分方程

问题描述 投票:0回答:1

我试图用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)

如果我理解正确的话,这意味着差分方程的一边与另一边的形状不同,因此Python不能解决它,但M和u的乘法应该产生一个形状为(100)的向量,所以我不确定发生了什么。

你能帮我解决这个问题吗?

python matrix vector ode differential-equations
1个回答
3
投票

solve_ivp的文档: "调用签名是fun(t, y)。这里t是一个标量"。我想你把system中的参数换了。

如果我把system的签名改为 system(t, u) 你的代码对我来说运行得很好。虽然,我不能说我是否得到了预期的答案。

© www.soinside.com 2019 - 2024. All rights reserved.