牛顿方法的关键是找到一个较好的初值。
同伦算法(Homotopy method, continuation method, successive loading method)可以用来生成一个较好的初值。
F0 是一个已知函数,它的零点已知,F0(x∗)=0
构造一个一个依赖于参数s的函数
H(x,0)=0 的解为F0(x)=0 的解,H(x,1)=0 的解为F(x)=0 的解。
F0(x) 的一种构造方式为
同伦方程(Homotopy function)为
H(x,s) 的解与 s 有关,将它记为 x∗(x) ,当 s 趋于 1 , x∗ 趋于 x。
选取一些列
通过牛顿方法求解一系列非线形问题
H(x,si)=0
每个问题都用 x∗(si−1) 作为迭代初值。
例子
对于问题,如果用牛顿迭代方法求解,当时不收敛,如果用同伦算法求解,即使迭代初值为4,也能收敛。
代码