模拟中的无限力

计算科学 模拟
2021-11-30 18:19:04

在物理问题中,无限力很容易通过该力的数学形式来实现,取1/r例如,只要两个粒子之间的距离变小,力就会变为无穷大。

但是,我想使用基于代理的建模来模拟一个系统,其中两个对象之间的力在没有任何数学形式的情况下变为无穷大,我的问题是:下面的力类型可以在计算机模拟中实现吗?如果是这样,它是如何完成的?

fij=r^ij{if rij<rhc14rijrerarhcif rhc<rij<ra1if ra<rij<rc

这个等式来自具有arxiv 版本的论文。

1个回答

以同样的方式实现与零的比较。例如,在数值求解器中,有时需要检查一个值是否达到零。这在形式上是不可行的,因为由于机器精度的限制,实数无法与零进行比较。一种方法是选择精度eps并计算:

|u|<eps
如果你想检查是否u“等于” 2,你这样做:
|u2|<eps
一般你选择eps接近机器精度极限,例如1015

现在,要“计算”无穷大,也没有正式的方法可以做到这一点,因为无穷大不是数字所以我会说做相反的事情,也就是说选择一个非常大的数字,我经常使用1020,这就是我们在惩罚方法中所做的,例如我们希望一个术语压倒其他术语。如果F是你想要无限的力,只需用一个非常大的数字替换它的值。