我假设第一个表达式是潜在的。负梯度(关于 r 的导数)就是力。这个梯度是一个向量,总是指向或远离中心。对于第二个表达式,这似乎是正确的。
r_vec 是,根据你所说的,一个从原点指向距离为 r 的点的向量。(r_vec/r) 是一个单位向量来指定方向。这适用于除原点本身之外的每个点,可以将其声明为未定义或声明为零。零是 (r_vec/r) 在所有“附近”点上的平均值。这意味着零力。
通常在具有成对力的粒子模拟中,我们忽略了一个粒子对其自身的力,以及两个粒子在同一确切位置的力。如果两个粒子非常接近,并且你有一个类似于 1/r、1/(r^2) 或类似的力定律呢?没有人想要除以零故障。通常有一个小半径,低于该半径的电位与该半径边界处的给定电位公式相匹配。太靠近的粒子力为零,这样模拟就不会崩溃。当它在边界外非常强大时,突然停止在边界内的力量似乎是不自然的。但我们努力避免这种情况。继续计算此类发生率,如果太多,则模拟已变差。也许需要更小的时间步长。
幸运的是,您没有 1/r 类型的力,但您仍然拥有方向可以疯狂摆动的讨厌的 r_vec/r。在某个微小半径以下使力为零的相同技术将有所帮助。
但是第三个表达让我很困扰。如果它是 r=0 时的力,那么从第二个表达式中的力定律开始,我不确定第三个表达式是如何产生的。它看起来是标量的问题,而如果它应该是力,则可以通过理解它是力向量的径向分量来解决期望向量。只需将表达式乘以 (r_vec/r),即熟悉的单位幅度向量。OTOH,它没有明确的方向,所以这是胡说八道。
更好的整体解决方案:从一个新的势函数开始,它平滑地趋于平稳并且在 r=0 处保持平坦,例如 exp(-r^2) 或 1/(1+r^2)。给定的潜在峰值急剧上升。你想要的东西更像不是在某个小区域内声明力为零,而是在 r=0 时力自然为零。在某个小半径之外找到一个近似于给定一口井的原点电位。