gpt4 book ai didi

python - 使用极坐标在 Python 中绘制相位图

转载 作者:行者123 更新时间:2023-12-05 00:47:05 25 4
gpt4 key购买 nike

我需要以极坐标形式给出的以下非线性系统的相位图...

\dot{r} = 0.5*(r - r^3)
\dot{\theta} = 1

我知道如何在 Mathematica 中做到这一点...

field1 = {0.5*(r - r^3), 1};
p1 = StreamPlot[Evaluate@TransformedField["Polar" -> "Cartesian", field1, {r, \[Theta]} -> {x, y}], {x, -3, 3}, {y, -3, 3}, Axes -> True, StreamStyle -> Gray, ImageSize -> Large];
Show[p1, AxesLabel->{x,y}, ImageSize -> Large]

enter image description here

如何在 Python 中使用 pyplot.quiver 做同样的事情?

最佳答案

只是非常幼稚的实现,但可能会有所帮助......

import numpy as np
import matplotlib.pyplot as plt

def dF(r, theta):
return 0.5*(r - r**3), 1

X, Y = np.meshgrid(np.linspace(-3.0, 3.0, 30), np.linspace(-3.0, 3.0, 30))
u, v = np.zeros_like(X), np.zeros_like(X)
NI, NJ = X.shape

for i in range(NI):
for j in range(NJ):
x, y = X[i, j], Y[i, j]
r, theta = (x**2 + y**2)**0.5, np.arctan2(y, x)
fp = dF(r, theta)
u[i,j] = (r + fp[0]) * np.cos(theta + fp[1]) - x
v[i,j] = (r + fp[0]) * np.sin(theta + fp[1]) - y

plt.streamplot(X, Y, u, v)
plt.axis('square')
plt.axis([-3, 3, -3, 3])
plt.show()

enter image description here

关于python - 使用极坐标在 Python 中绘制相位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com