在笛卡尔坐标系下绘制极坐标系下简单圆轨道双曲吸引子影响的流场

2024-04-16 23:11:19 发布

您现在位置:Python中文网/ 问答频道 /正文

对于一个项目,我可能已经吃得太多了,不得不像标题所说的那样,绘制一个流场或向量场,如示例中所示: The vector field I need to create, no need for the colours...

该系统的动力学如极坐标示例所示: r’=5*r^2*(1-r)和φ’=r

该系统有一个半径为1的圆形周期轨道,其中心位于起源轨道是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()

现在,这返回了一个糟糕的颤动情节,我真的不知道我是否走对了方向。有没有人愿意解释一下怎样才能正确地解决这个问题,这样即使是像我这样的白痴也能理解?拜托。我输入它作为一个函数,并做一个流程图,我会定义它之前或之后,从极坐标转换为笛卡尔?我的数学正确吗?你知道吗


Tags: import示例定义系统asnppltsin
1条回答
网友
1楼 · 发布于 2024-04-16 23:11:19

我认为在笛卡尔坐标系下得到向量场的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()

向量在图中也被赋范,因此它们都具有相同的大小

result graph

相关问题 更多 >