我试图用极限圆画出一些相平面。我有极坐标形式的微分方程:
drdt=r(r^2-1)dθdt=1
有没有一种方法可以使用matplotlib从中绘制它们?通过使用原始系统,我能够绘制出一个我拥有原始系统形式的图,如下所示:
xvalues, yvalues = np.meshgrid(np.arange(-2, 2, 0.1), np.arange(-2, 2, 0.1))
xdot = xvalues + yvalues - xvalues * (xvalues ** 2 + yvalues ** 2)
ydot = -xvalues + yvalues - yvalues * (xvalues ** 2 + yvalues ** 2)
plt.streamplot(xvalues, yvalues, xdot, ydot)
plt.grid();
plt.show()
这个系统是 dxdt=x+y-x(x^2+y2) dydt=-x+y-y(x^2+y2) 其极性形式为: drdt=r(1-r^2)dθdt=1
但是,如果可能的话,将它们全部隐藏到原来的系统中是很乏味的。谢谢你给我的任何帮助
更新
所以我想出了一个方法,它非常接近于,用scipy解一个初始半径范围内的微分,然后用转换公式在X,Y上作图
times = np.linspace(0, 10)
r0s = np.arange(0, 3, 0.2)
for r0 in r0s:
z0 = [r0, r0]
solution = odeint(rmodel, z0, times)
x = solution[:,0] * np.cos(solution[:,1])
y = solution[:,0] * np.sin(solution[:,1])
plt.plot(x, y)
现在这已经足够好了,但我真的想要一个更好的解决方案
所以我想出了一个方法,它非常接近于,用scipy解一个初始半径范围内的微分,然后用转换公式在X,Y上作图
这对我来说已经足够好了
相关问题 更多 >
编程相关推荐