作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试求解一个简单的 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/
我是一名优秀的程序员,十分优秀!