Python中的方向字段

2024-05-03 17:38:19 发布

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

我试图为微分方程画一个方向场:

y' = -y(y-3)

输出应如下图所示:

Direction Field for dydt=-y(y-3)

我很困惑,我尝试过的一切都没有奏效。请帮忙,非常感谢


Tags: 方向奏效
1条回答
网友
1楼 · 发布于 2024-05-03 17:38:19

要为微分方程创建一个好看的箭头图,我们需要创建一个二维方向向量场。给定您共享的图像,我将假设dxdt = 1(或其他固定值)。这意味着使用完整的2d图形并不是严格地通过单个垂直箭头线传递任何信息,但它确实有助于说明t沿x轴的通过

首先创建一个x、y坐标的网格,将箭头放置在其中:

import numpy as np

X, Y = np.meshgrid(np.arange(0, 5, .25), np.arange(-2, 5, .25))

然后计算U = dxdtV = dydt作为每个箭头位置的方向向量分量:

U = np.ones_like(X) #dxdt = 1
V = -Y * (Y - 3)

您可以停在这里,调用matplotlib.pyplot.quiver(X, Y, U, V)并获得一个合适的绘图,但您指出图形应该只显示方向,因此我们必须获取所有这些U,V向量,并将它们规格化为单位长度:

magnitude = np.sqrt(U**2 + V**2)
U = U/magnitude
V = V/magnitude

现在我们绘制:

from matplotlib import pyplot as plt
plt.quiver(X, Y, U, V)
plt.show()

相关问题 更多 >