对于一个项目,我可能已经吃不完了,不得不像标题所说的那样绘制一个流场,或者说是例子中给出的矢量场:The vector field I need to create, no need for the colours...
该系统在极坐标下的动力学为: r‘=5* r^2 * (1-r)和φ’=r
系统有一个半径为1的圆周期轨道,其中心在origin.The轨道上是一个双曲吸引子,B= R^2 (0,0)}。周期为T= 2π,渐近相位由θ(r,φ)=φ−1/5r + 0.2.
As given on page 1511 of this PDF
现在,我已经在谷歌上搜索了几天类似的东西,但似乎无法正确定义轨道,我找到的似乎只是行星轨道或洛伦茨吸引器的教程。我想出的最好的办法是:
import numpy as np
import matplotlib.pyplot as plt
x, y = np.mgrid[2:-2:20j, 2:-2:20j]
r = np.sqrt(x**2 + y**2)
phi = np.arctan(y/x)
dr = 5*(r**2)*(1-r)
dphi = r
dx = (5*(r**2)*(1-r)*np.cos(phi)) - ((r**2)*np.sin(phi))
dy = (5*(r**2)*(1-r)*np.cos(phi)) + ((r**2)*np.sin(phi))
fig, ax = plt.subplots()
ax.quiver(x, y, dx, dy)
ax.set(aspect=1, title='NOT GOOD', xlabel='X', ylabel='Y')
plt.show()现在,这返回了一个糟糕的箭图,老实说,我甚至不知道我是否走对了方向。有人愿意解释一下如何正确地解决这个问题,这样即使像我这样的笨蛋也能理解吗?请。我是把它作为一个函数输入,然后做一个流线图,我是在从极坐标转换到笛卡尔坐标之前还是之后定义它呢?我的数学是正确的吗?
发布于 2018-08-30 02:33:54
我认为在笛卡尔坐标中获取向量场的rotation matrix被搞乱了:
import numpy as np
import matplotlib.pyplot as plt
x, y = np.mgrid[2:-2:20j, 2:-2:20j]
r = np.sqrt(x**2 + y**2)
phi = np.arctan2(y, x)
dr = 5*(r**2)*(1-r)
dphi = r
dx = dr*np.cos(phi) - dphi*np.sin(phi)
dy = dr*np.sin(phi) + dphi*np.cos(phi)
norm_dr = np.sqrt(dx**2 + dy**2)
fig, ax = plt.subplots()
ax.quiver(x, y, dx/norm_dr, dy/norm_dr)
ax.set(aspect=1, title='GOOD?', xlabel='X', ylabel='Y')
plt.show()矢量在图中也是规范的,因此它们都具有相同的大小

https://stackoverflow.com/questions/52058285
复制相似问题