散度的可视化

news/2024/10/5 10:55:03/

散度的可视化

flyfish

向量场和散度

假设我们有一个简单的向量场:
F = ( x , y , z ) \mathbf{F} = (x, y, z) F=(x,y,z)在这里,向量场 F \mathbf{F} F 是由三个分量组成的向量,每个分量是空间坐标 x x x y y y z z z 的函数:

  • F x = x F_x = x Fx=x

  • F y = y F_y = y Fy=y

  • F z = z F_z = z Fz=z

散度的定义

散度是一个向量场的标量运算,表示向量场在一个点上的“发散”或“汇聚”程度。数学上,散度定义为:
∇ ⋅ F = ∂ F x ∂ x + ∂ F y ∂ y + ∂ F z ∂ z \nabla \cdot \mathbf{F} = \frac{\partial F_x}{\partial x} + \frac{\partial F_y}{\partial y} + \frac{\partial F_z}{\partial z} F=xFx+yFy+zFz

具体计算过程

对于向量场 F = ( x , y , z ) \mathbf{F} = (x, y, z) F=(x,y,z),我们需要计算其散度

  1. 计算 ∂ F x ∂ x \frac{\partial F_x}{\partial x} xFx:
    F x = x F_x = x Fx=x, 对 x x x 求偏导数: ∂ F x ∂ x = ∂ x ∂ x = 1 \frac{\partial F_x}{\partial x} = \frac{\partial x}{\partial x} = 1 xFx=xx=1

  2. 计算 ∂ F y ∂ y \frac{\partial F_y}{\partial y} yFy:
    F y = y F_y = y Fy=y,对 y y y 求偏导数: ∂ F y ∂ y = ∂ y ∂ y = 1 \frac{\partial F_y}{\partial y} = \frac{\partial y}{\partial y} = 1 yFy=yy=1

  3. 计算 ∂ F z ∂ z \frac{\partial F_z}{\partial z} zFz:
    F z = z F_z = z Fz=z,对 z z z 求偏导数: ∂ F z ∂ z = ∂ z ∂ z = 1 \frac{\partial F_z}{\partial z} = \frac{\partial z}{\partial z} = 1 zFz=zz=1

解释:
∇ ⋅ F = ∂ F x ∂ x + ∂ F y ∂ y + ∂ F z ∂ z = 1 + 1 + 1 = 3 \nabla \cdot \mathbf{F} = \frac{\partial F_x}{\partial x} + \frac{\partial F_y}{\partial y} + \frac{\partial F_z}{\partial z} = 1 + 1 + 1 = 3 F=xFx+yFy+zFz=1+1+1=3

字母和符号的含义

  • ∇ ⋅ F \nabla \cdot \mathbf{F} F 表示向量场 F \mathbf{F} F散度

  • F = ( F x , F y , F z ) \mathbf{F} = (F_x, F_y, F_z) F=(Fx,Fy,Fz) 表示向量场的三个分量。

  • F x F_x Fx 是向量场在 x x x 方向的分量。

  • F y F_y Fy 是向量场在 y y y 方向的分量。

  • F z F_z Fz 是向量场在 z z z 方向的分量。

  • ∂ F x ∂ x \frac{\partial F_x}{\partial x} xFx 表示 F x F_x Fx x x x 的偏导数。

  • ∂ F y ∂ y \frac{\partial F_y}{\partial y} yFy 表示 F y F_y Fy y y y 的偏导数。

  • ∂ F z ∂ z \frac{\partial F_z}{\partial z} zFz 表示 F z F_z Fz z z z 的偏导数。

这表明在这个向量场中,任意点的散度都是 3,意味着向量场在每个点都是均匀发散的。
散度(divergence)是向量分析中的一个算子,用来描述向量场在一个点的“发散”或“汇聚”程度。它将一个向量场(矢量场)映射到一个标量场上。具体来说,散度表示在一个微小体元中的向量是“向外”居多还是“向内”居多。

  • 散度 :如果一个点的散度为正,说明该点是一个发源点,向量从这个点向外发散。

  • 散度 :如果一个点的散度为负,说明该点是一个汇聚点,向量在这个点向内汇聚。

可视化

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation, PillowWriter# 定义向量场 F = (x, y, z)
def vector_field(x, y, z):return np.array([x, y, z])# 计算散度
def divergence(x, y, z):return 3  # 对于 F = (x, y, z),散度为 3# 创建动画
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(-1, 1)def update(frame):ax.clear()ax.set_xlim(-1, 1)ax.set_ylim(-1, 1)ax.set_zlim(-1, 1)# 绘制向量场X, Y, Z = np.meshgrid(np.linspace(-1, 1, 5), np.linspace(-1, 1, 5), np.linspace(-1, 1, 5))U, V, W = vector_field(X, Y, Z)ax.quiver(X, Y, Z, U, V, W, color='blue', alpha=0.5)# 绘制中心点ax.scatter(0, 0, 0, color='red', s=100)# 显示散度div_value = divergence(0, 0, 0)ax.text2D(0.05, 0.95, f"Divergence at (0, 0, 0): {div_value}", transform=ax.transAxes, color='black')ax.set_xlabel('X')ax.set_ylabel('Y')ax.set_zlabel('Z')ani = FuncAnimation(fig, update, frames=100, repeat=True)
writer = PillowWriter(fps=1)
ani.save('divergence_example.gif', writer=writer)plt.show()

http://www.ppmy.cn/news/1473479.html

相关文章

深度学习 - 稠密张量与稀疏张量的区别

稠密张量与稀疏张量的区别 在机器学习和数据处理领域,张量是处理和存储多维数据的核心结构。张量主要分为两类:稠密张量(Dense Tensor)和稀疏张量(Sparse Tensor)。它们在数据存储和计算效率方面有显著的区…

AI是在帮助开发者还是取代他们?

AI是在帮助开发者还是取代他们? 在软件开发领域,生成式人工智能(AIGC)正在改变开发者的工作方式。无论是代码生成、错误检测还是自动化测试,AI工具正在成为开发者的得力助手。然而,这也引发了对开发者职业…

自动驾驶世界模型系列 - 2 | Delphi

0. 资源链接 论文: Unleashing Generalization of End-to-End Autonomous Driving with Controllable Long Video Generation 项目: https://westlake-autolab.github.io/delphi.github.io 1. 背景动机 端到端自动驾驶技术是当前的主流,对训练数据的规模和质量有更…

【Unity URP】通过代码动态添加URP渲染通道RendererFeature

URP的渲染通道RendererFeature可以很方便的实现一些渲染问题,比如渲染顺序问题,遮挡后的材质替换等等。 那么我们如何通过代码来动态添加和修改呢? 首先我们需要获取到当前的URP配置文件,在对配置文件进行添加 1.通过反射获取当前UniversalRendererData 我们通过Graphic…

add_metrology_object_generic 添加测量模型对象。找两条直线,并计算两条线的夹角和两个线的总长度,转换成毫米单位

*添加测量模型对象 *将测量对象添加到测量模型中 *算子参数: *    MeasureHandle:输入测量模型的句柄; *    Shape:输入要测量对象的类型;默认值:‘circle’,参考值:‘circl…

[图解]企业应用架构模式2024新译本讲解22-标识映射

1 00:00:01,080 --> 00:00:04,710 我们来看一下标识映射这个模式 2 00:00:08,030 --> 00:00:10,110 它是属于对象-关系 3 00:00:10,120 --> 00:00:11,150 行为模式 4 00:00:11,160 --> 00:00:13,890 就是说,在动态的时候 5 00:00:15,770 --> 00:…

数据结构 —— 最小生成树

数据结构 —— 最小生成树 什么是最小生成树Kruskal算法Prim算法 今天我们来看一下最小生成树: 我们之前学习的遍历算法并没有考虑权值,仅仅就是遍历结点: 今天的最小生成树要满足几个条件: 考虑权值所有结点联通权值之和最小无环…

使用echarts绘制中国地图根据不同的省份划分到指定区域里面中

需求:我们在开发过程中会遇到使用中国地图来划分不同区域省份下面的数量统计情况,但是有时候使用Echarts里面地图功能和我们实际业务需求不匹配的,这个时候就需要我们手动自定义进行划分不同区域下面的省份数据。例如大区1下面有哪些省份&…