# potential
矢量场的势能
函数库: TySymbolicMath
# 语法
# 说明
potential(V, X) 计算矢量场 V 相对于笛卡尔坐标系中矢量 X 的势能。矢量场 V 必须是梯度场。示例
potential(V, X, Y) 以 Y 作为积分基点,计算矢量场 V 相对于 X 的势能。示例
# 示例
计算矢量场的势
计算该矢量场相对于矢量 [x, y, z] 的势:
using TySymbolicMath
@variables x y z
P = potential([x, y, z * exp(z)], [x, y, z])
P = (1//2)*(x^2 + y^2) + (-1 + z)*exp(z)
使用函数 gradient 验证结果:
simplify.(TySymbolicMath.gradient(P, [x, y, z]), expand=true)
ans = 3-element Vector{Num}:
x
y
z*exp(z)
指定积分基点
计算该矢量场的势,指定积分基点为 [0 0 0]:
using TySymbolicMath
@variables x y z
P = potential([x, y, z * exp(z)], [x, y, z], [0, 0, 0])
P = 1 + (1//2)*(x^2) + (1//2)*(y^2) + (-1 + z)*exp(z)
验证 P([0, 0, 0]) = 0:
substitute(P, Dict([x => 0, y=>0, z=>0]))
ans = 0.0
无梯度场的测试电位
如果矢量场不是梯度的,则势能返回 NaN:
using TySymbolicMath
@variables x y
potential([x*y, y], [x y])
ans = NaN
# 输入参数
V - 矢量场由符号表达式或符号函数构成的向量
矢量场,指定为由符号表达式或符号函数构成的向量。
数据类型: Num
X - 输入由符号变量构成的向量
输入,指定为由符号变量构成的向量,据此计算势能。
数据类型: Num
Y - 输入符号向量
输入,指定为要用作积分基点的变量、表达式或数字的符号向量。如果使用此参数,势能将返回 P(X),使得 P(Y) = 0。否则,势能仅定义到某个加法常数。
数据类型: Num
# 详细信息
梯度向量场的标量势
梯度矢量场的势能
矢量场是梯度的当且仅当对应的雅可比矩阵是对称的:
potential 函数以积分形式表示势:
# 提示
- 如果 potential 函数不能验证 V 是一个梯度场,则返回 NaN;
- 返回 NaN 并不能证明 V 不是梯度场,potential 函数有时不能充分简化偏导数,因此无法验证该场是否为梯度场;
- 如果 Y 是标量,则 potential 函数将其扩展为与 X 长度相同的矢量,且所有元素均等于 Y。
# 另请参阅
divergence | gradient | jacobian | hessian | laplacian | vectorPotential