快速行进法
Eikonal 方程(程函方程)的数值求解方法有
快速行进法(Fast Marching Method)
简介
快速行进算法 (Fast Marching Method) 是求解程函方程 (Eikonal Equation)F ∣ ∇ T ∣ = 1 的一种高效数值算法,程函方程属于非线性偏微分方程,可以认为是一种近似波动方程。
在界面演化问题中的求解的结果 T 的物理含义是:曲线以速度F(x)到达计算域每一点所需要消耗的最短时间。寻找 T 在不同高度上的水平集,它总能给出时间演化曲线的一个位置。当 F = 1时,方程解就代表计算域中的距离场,也就是所谓的符号距离函数。
快速行进算法使用了一个特殊的差商代替微商,比如在二维情况,使用的是如下近似:
这里的Δ +x表示对于自变量 x 的一阶向前差分算子, Δ − x表示对于自变量 x 的一阶向后差分算子。
算法推导过程:
结论:
综上,我们去掉开始时的那个“不妨假设”,我们可以得到如下描述:
优点:
对于一个 N × N的网格, FMM 的总的算术复杂度为 O ( N log N ) ,误差阶为 O ( Δ x )。
快速行进算法和 Dijkstra 算法思想相似,不同之处在于 Dijkstra 算法利用节点之间的欧式距离进行更新,而 FMM 算法利用由程函方程化简得到的近似偏微分方程进行更新。快速行进算法有很多特质:首先,它是“一次通过”的算法,减少了不必要的计算;其次,它计算量小,一般只要计算不超过 N log N 次。
少了不必要的计算;其次,它计算量小,一般只要计算不超过 N log N 次。
参考:https://blog.csdn.net/lusongno1/article/details/88409735?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164078365116780271929551%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=164078365116780271929551&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogsobaiduend~default-2-88409735.nonecase&utm_term=fast+marching&spm=1018.2226.3001.4450