[英]How can I insert the solution of one system of differential equations into another system of differential equations using "scipy.integrate.solve_ivp"?
我正在通过伴随方法构建范德波尔模型的相位响应曲线。 为此,有必要求解原始微分方程组并将其解包含在伴随系统中。 如下所示。
原系统对应:
def vanderpol(t, v, mu):
x, y = v
dxdt = mu*(x-(x**3)/3-y)
dydt = (1/mu)*x
return (dxdt, dydt)
使用参数:
mu = 1.5
T1 = 7.09637359
omega1 = (2*np.pi)/T1
tend = 25*T1
y0 = [1, 1]
和scipy.integrate.solve_ivp函数:
sol = solve_ivp(vanderpol, [-tend, tend], y0, args=[mu], dense_output=True, max_step=1e-2)
现在,上述系统中的解函数x(t)必须包含在以下微分方程组中,称为伴随系统:
def adjunta(t, v, mu):
zx, zy = v
dzxdt = -zx*(mu/omega1)*(1-x(t)**2)-zy/(mu*omega1)
dzydt = (zx*mu)/omega1
return (dzxdt, dzydt)
其中x(t)表示原始微分方程组的解函数x(t) 。
由于scipy.integrate.solve_ivp中的函数sol返回三个向量作为数值积分的结果(sol.t, sol.y[0], sol.y[1]) 。 如何在伴随系统中包含sol.y[0]解决方案?
如果不能同时解决两个系统,您可以将其作为参数传递给伴随系统:
def adjunta(t, v, mu, x):
...
return (dzxdt, dzydt)
然后通过solve_ivp
中的args
参数传递它
sol = solve_ivp(adjunta, ..., args=[mu, x], ...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.