首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量微分方程

向量微分方程
EN

Stack Overflow用户
提问于 2020-05-15 22:03:54
回答 1查看 148关注 0票数 1

我试着用Python解决一个向量微分方程,但我总是得到一个错误,我不是很理解。下面是我的代码:

代码语言:javascript
复制
    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)

我得到的错误是:

代码语言:javascript
复制
ValueError: could not broadcast input array from shape (100,100) into shape (100)

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

你能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-15 22:18:17

documentation for solve_ivp中:“调用签名是有趣的(t,y)。这里t是一个标量”。我认为你在系统中的论点被调换了。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61821159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档