利用自动微分的寻根算法

计算科学 寻根 自动分化
2021-12-10 05:57:36

是否有任何算法(或技巧)用于寻根以利用自动微分(AD)?

寻根算法通常可以解决

f(y)=0
在哪里f:RnRny:Rn.

牛顿法不适用于我的情况,因为整个雅可比行列式不适合我的记忆,而布罗伊登法(最流行的方法之一)通常不会收敛。

我想知道是否有任何方法可以利用自动微分来使求根算法更稳定或更快速收敛(例如,也许用 AD 初始化雅可比矩阵的逆?)。

1个回答

在JE Dennis, Jr. 和 Robert B. Schnabel的Numerical Methods for Unconstrained Optimization and Nonlinear Equations中,对牛顿方法根查找的全球化策略进行了很好的讨论。具体参见第 6.5 节。

丹尼斯和施纳贝尔提倡解决寻找根的问题f(p)=0作为非线性最小二乘问题:

mini=1nfi(p)2

您可以应用牛顿的方法通过全球化策略(线搜索、信任域、Levenberg-Marquardt 等)最小化这个最小二乘问题。当问题转换为最小二乘形式时,这些全球化策略是有意义的。您可以使用基于 AD 工具提供的雅可比向量乘法的迭代方法在每次迭代中求解牛顿法方程。例如,Newton-Krylov 方法使用 Krylov 子空间方法来求解方程。

另一种方法是直接解决非线性最小二乘问题,使用无约束非线性最小化的迭代方法,例如共轭梯度、有限内存 BFGS 等。所有这些都需要梯度计算,而梯度计算又归结为将雅可比时间相乘f(p). 您的 AD 工具应该能够提供帮助。