![](/img/trans.png)
[英]Convert Cartesian coordinate system to polar coordinate system with multi-points
[英]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 精確給出。
現在,我幾天來一直在谷歌搜索類似的東西,但似乎無法正確定義軌道,我似乎找到的只是行星軌道或洛倫茲吸引子的教程。 我設法想出的最好的是:
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.