我正在通过伴随法建立范德波尔模型的相位响应曲线。为此,有必要对原微分方程组进行求解,并将其解包含在伴随系统中。如下所示。
原系统对应于:
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,sol.y1)。如何将sol.y解包含在伴随系统中?
发布于 2022-07-22 22:04:38
如果同时解决这两个系统不是一种选择,您可以将其作为一个参数传递给伴随系统:
def adjunta(t, v, mu, x):
...
return (dzxdt, dzydt)然后通过args参数在solve_ivp中传递它
sol = solve_ivp(adjunta, ..., args=[mu, x], ...)https://stackoverflow.com/questions/73028350
复制相似问题