最初の式は潜在的なものだと思います。負の勾配 (r に関する導関数) が力になります。このグラデーションはベクトルであり、常に中心に向かう方向または中心から離れる方向を指します。これは、2 番目の式では正しいように見えます。
r_vec は、あなたの言うとおり、原点から距離 r 離れた点を指すベクトルです。(r_vec/r) は方向を指定する単位ベクトルです。これは、原点自体を除くすべてのポイントで機能します。ここでは、未定義であると宣言されるか、ゼロであると宣言されます。ゼロは、すべての「近くの」ポイントの (r_vec/r) の平均値です。これはゼロフォースを意味します。
通常、ペアワイズ フォースを使用するパーティクル シミュレーションでは、1 つのパーティクル自体にかかるフォースと、正確に同じ位置にある 2 つのパーティクルにかかるフォースを無視します。2 つの粒子が非常に接近していて、1/r、1/(r^2)、または同様の法則がある場合はどうでしょうか? 誰もゼロによる除算の誤りを望んでいません。通常、その半径の境界で与えられたポテンシャル式に一致するポテンシャルが一定である小さな半径があります。パーティクル同士が近すぎると、シミュレーションがクラッシュしないように、フォースがゼロになります。力が境界のすぐ外側で猛烈に強いときに、その境界のすぐ内側で力が突然止まるというのは、非物理的に思えるかもしれません。しかし、私たちはそのような状況を避けるよう努めています。そのような発生回数を数えてください。多すぎる場合は、シミュレーションがうまくいきません。たぶん、より小さな時間ステップが必要です。
幸いなことに、1/r タイプの力はありませんが、それでも、方向が大きく揺れる厄介な r_vec/r があります。特定の小さな半径より下で力をゼロにする同じ手法が役立ちます。
しかし、その 3 番目の表現が気になります。r=0 の力だとすると、2 番目の式の力の法則から始めて、3 番目の式がどのように生じるのかわかりません。それが力であると想定されている場合、ベクトルを期待しながらスカラーに見えるという問題は、力ベクトルの半径方向成分であることを理解することで解決できます。おなじみの単位振幅ベクトルである (r_vec/r) を式に掛けるだけです。OTOH、方向性が決まっていないのでナンセンスです。
全体的な解決策の改善: exp(-r^2) や 1/(1+r^2) のように、滑らかに横ばいになり、r=0 で平らになる新しいポテンシャル関数から始めます。与えられたポテンシャルは急激にピークに達します。いくつかの小さなゾーン内で力ゼロを宣言する代わりに、力は自然にr = 0でゼロになります。いくつかの小さな半径の外側にある与えられたポテンシャルに近似する原点フラットポテンシャルを見つけます。