gpt4 book ai didi

python - 通过 odeint(或 solve_ivp)计算系统对时变输入的响应

转载 作者:行者123 更新时间:2023-12-04 17:46:41 30 4
gpt4 key购买 nike

我正在尝试求解一个简单的 ODE 以可视化时间响应,这适用于使用 SciPy 中新的 solve_ivp 集成 API 的恒定输入条件。例如:

def dN1_dt_simple(t, N1):
return -100 * N1

sol = solve_ivp(fun=dN1_dt_simple, t_span=[0, 100e-3], y0=[N0,])

但是,我想知道是否可以绘制对时变输入的响应?例如,不是将 y0 固定在 N0,我能否找到对简单正弦曲线的响应?

是否有兼容的方式将随时间变化的输入条件传递到 API 中?

最佳答案

正是出于这个原因,您传递给 solve_ivp 的函数在其签名中有一个 t。您可以随心所欲地使用它¹。例如,要获得平滑的一次性脉冲,您可以这样做:

from numpy import pi, cos

def fun(t,N1):
input = 1-cos(t) if 0<t<2*pi else 0
return -100*N1 + input

sol = solve_ivp(fun=fun, t_span=[0,20], y0=[N0])

请注意,y0 不是您使用该术语时的输入,而是初始条件。它仅在一个时间点定义并有意义——您开始集成/模拟的时间点。使用 ODE,您通常将外部输入建模为力或类似物(影响系统的时间导数,如上例所示),而不是直接更改状态。使用这种方法并在您的可激发系统的上下文中,N0 已经是某些外部输入的结果。


<支持>¹只要它足够平滑以满足各自积分器的需求,通常是连续可微的 (C¹)。如果你想执行一个步骤,最好使用非常尖锐的 sigmoid反而。

关于python - 通过 odeint(或 solve_ivp)计算系统对时变输入的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176724/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com