簡體   English   中英

繪制受簡單圓形軌道影響的流場 - 雙曲吸引子,以極坐標給出,在笛卡爾坐標系中 - Python

[英]Plotting flow field influenced by a simple circular orbit - hyperbolic attractor, given in polar coordinates, in Cartesian coordinate system - Python

對於一個項目,我可能咬得比我能咀嚼的還要多,並且必須像標題所說的那樣繪制流場或矢量場,如示例中所示:我需要創建的矢量場,不需要顏色。 ..

極坐標示例中給出的該系統的動力學為:r' = 5 * r^2 * (1-r) 和 φ' = r

該系統有一個半徑為1的圓形周期軌道,以原點為中心。軌道是一個雙曲吸引子,B = R^2 \\ {(0, 0)}。 周期為 T = 2π,漸近相位由 θ(r, φ) = φ − 1/5r + 0.2 精確給出。

如本 PDF 第 1511 頁所述

現在,我幾天來一直在谷歌搜索類似的東西,但似乎無法正確定義軌道,我似乎找到的只是行星軌道或洛倫茲吸引子的教程。 我設法想出的最好的是:

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()

現在,這返回了一個糟糕的箭袋情節,老實說,我什至不知道我是否朝着正確的方向前進。 有沒有人願意解釋一下如何正確解決這個問題,這樣即使像我這樣的白痴也能理解? 請。 我是否將它作為函數輸入並對其進行流圖,我是在從極坐標轉換為笛卡爾坐標之前還是之后定義它? 我的數學甚至正確嗎?

我認為在笛卡爾坐標中獲得矢量場的旋轉矩陣搞砸了:

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()

向量也在圖中被歸一化,因此它們都具有相同的大小

結果圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM