如何使用 pylab 绘制钟摆运动的相平面?
How do I use pylab to plot a phase plane for pendulum motion?
我有可用于绘制以下捕食者猎物模型的代码:
dx/dt = x − xy, dy/dt = −y + xy
from pylab import *
xvalues, yvalues = meshgrid(arange(0, 3, 0.1), arange(0, 3, 0.1))
xdot = xvalues - xvalues * yvalues
ydot = - yvalues + xvalues * yvalues
streamplot(xvalues, yvalues, xdot, ydot)
show()
但我不确定如何使用这些函数绘制相平面(使用流图)来模拟钟摆运动,定义为
d^2θ/dt^2 = (−g/L)sin(θ)
如何使用 matplotlib 和 pylab 实现此模型以生成相平面?
你照样做,先把它转化成一阶系统
thetadot = omega
omegadot = -g/L*sin(theta)
将 theta, omega
重命名为 x,y
为了简短起见,然后像以前一样继续:
g,L = 1,1
xvalues, yvalues = meshgrid(arange(-8, 8, 0.1), arange(-3, 3, 0.1))
xdot = yvalues
ydot = -g/L*sin(xvalues)
streamplot(xvalues, yvalues, xdot, ydot)
grid(); show()
给出了通常的相图
我有可用于绘制以下捕食者猎物模型的代码:
dx/dt = x − xy, dy/dt = −y + xy
from pylab import *
xvalues, yvalues = meshgrid(arange(0, 3, 0.1), arange(0, 3, 0.1))
xdot = xvalues - xvalues * yvalues
ydot = - yvalues + xvalues * yvalues
streamplot(xvalues, yvalues, xdot, ydot)
show()
但我不确定如何使用这些函数绘制相平面(使用流图)来模拟钟摆运动,定义为
d^2θ/dt^2 = (−g/L)sin(θ)
如何使用 matplotlib 和 pylab 实现此模型以生成相平面?
你照样做,先把它转化成一阶系统
thetadot = omega
omegadot = -g/L*sin(theta)
将 theta, omega
重命名为 x,y
为了简短起见,然后像以前一样继续:
g,L = 1,1
xvalues, yvalues = meshgrid(arange(-8, 8, 0.1), arange(-3, 3, 0.1))
xdot = yvalues
ydot = -g/L*sin(xvalues)
streamplot(xvalues, yvalues, xdot, ydot)
grid(); show()
给出了通常的相图