如何找到向量场的收敛性?

10 浏览
0 Comments

如何找到向量场的收敛性?

我正在尝试寻找矢量场中收敛的区域或点。\n我使用以下代码生成了上面的图表:\n

import matplotlib.pyplot as plt
import numpy as np
def generate_fake_data():
    return -(np.sin(X) * np.cos(Y) + np.cos(X)), -(-np.cos(X) * np.sin(Y) + np.sin(Y))
x = np.arange(0, 2 * np.pi + 2 * np.pi / 20, 2 * np.pi / 20)
y = np.arange(0, 2 * np.pi + 2 * np.pi / 20, 2 * np.pi / 20)
X, Y = np.meshgrid(x, y)
u, v = generate_fake_data()
fig, ax = plt.subplots(figsize=(7, 7))
ax.quiver(X, Y, u, v)
ax.xaxis.set_ticks([])
ax.yaxis.set_ticks([])
ax.axis([0, 2 * np.pi, 0, 2 * np.pi])
ax.set_aspect('equal')
ax.axis("off")
plt.gca().set_axis_off()
plt.subplots_adjust(top=1, bottom=0, right=1, left=0, hspace=0, wspace=0)
plt.margins(0, 0)
plt.gca().xaxis.set_major_locator(plt.NullLocator())
plt.gca().yaxis.set_major_locator(plt.NullLocator())
plt.savefig("mock_data.png", bbox_inches='tight', pad_inches=0)

\n[图像链接](https://i.stack.imgur.com/mkfgT.png)\n理想情况下,我希望在图像的右上角和右下角找到矢量场中的收敛区域。\n我希望可以使用旋度值来实现这一点,但任何方法都可以。\n此外,这只是一个概念验证,`generate_fake_data`将被替换为从其他可变位置读取数据的函数。

0
0 Comments

如何在矢量场中找到收敛性?

对于收敛点,矢量场的散度是小于0的。

我们只需要负的散度:

plt.imshow(conv):颜色越暗,表示矢量场的收敛性越强。

寻找绝对最小值(在右上方)很容易。

寻找相对最小值更难,可以使用argrelmin函数,但是我无法正确地返回第二个局部最小值。

使用此答案,我得到了以下结果,其中包括左上角的两个最小值。

因此,可能可以排除角落的最小值。

0