首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在笛卡尔坐标系中绘制受简单圆形轨道-双曲吸引子影响的流场- Python

在笛卡尔坐标系中绘制受简单圆形轨道-双曲吸引子影响的流场- Python
EN

Stack Overflow用户
提问于 2018-08-28 20:45:41
回答 1查看 487关注 0票数 1

对于一个项目,我可能已经吃不完了,不得不像标题所说的那样绘制一个流场,或者说是例子中给出的矢量场: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

现在,我已经在谷歌上搜索了几天类似的东西,但似乎无法正确定义轨道,我找到的似乎只是行星轨道或洛伦茨吸引器的教程。我想出的最好的办法是:

代码语言:javascript
复制
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()

现在,这返回了一个糟糕的箭图,老实说,我甚至不知道我是否走对了方向。有人愿意解释一下如何正确地解决这个问题,这样即使像我这样的笨蛋也能理解吗?请。我是把它作为一个函数输入,然后做一个流线图,我是在从极坐标转换到笛卡尔坐标之前还是之后定义它呢?我的数学是正确的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-30 02:33:54

我认为在笛卡尔坐标中获取向量场的rotation matrix被搞乱了:

代码语言:javascript
复制
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()

矢量在图中也是规范的,因此它们都具有相同的大小

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52058285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档