雅可比几乎是奇异的时的非线性求根

计算科学 非线性方程 条件数 牛顿法
2021-12-15 06:54:19

我正在尝试解决系统非线性方程:

K(λ)λici=0
为了i=1,,15,使用牛顿法:
λk+1=λk+pk+1
pk+1=J(λk)1(λK(λk)c).
我知道雅可比在我的问题中必须是正定的,但在实践中它的条件通常很差(k(J)1015)。我正在扰乱它的特征值,但该算法仍然无法满足收敛标准:
|K(λ)λici|=0
对于一些方程,而另一些方程收敛得很快。增加迭代次数不会改变任何事情。

我的主管建议我使用一个阻塞方案,如果某些方程已经收敛,你继续迭代那些没有收敛的方程。我不太明白如何在一组方程上使用牛顿算法,所以我想问一下是否有人知道如何做到这一点。或者,我将不胜感激有关如何处理此问题的建议。

谢谢!

编辑:

我必须补充一点,我正在使用带有目标函数的线搜索:

f(λ)=K(λ)λTc
这应该没问题,因为它是凸的(理论上虽然因为 Hessian 几乎是奇异的)。我正在检查该步骤是否足够降低目标,即我检查:
f(λk+αpk)<f(λk)+γα(λK(λk)c)Tpk
γ=104. 如果条件不成立,我除αby 2. 大多数情况下,第一步的条件为真,所以我很少需要减半。

编辑 2

如果我使用 QR 分解来求解线性系统,它似乎正在收敛,而不扰乱J. 不确定我是否应该相信输出!

1个回答

假设您的 jacobian 不是太大,当您的 jacobian 条件数很大时,最好通过 QR 分解来求解您的牛顿方向。它在数值上是稳定的,因为它将问题分解为两个独立的系统,具有原始问题允许的最小误差放大因子。有关详细信息,请参见此处

这使您能够在算法的每个步骤中获得牛顿方向的“最佳”可能近似值。如果您使用带有回溯和 Armijo 充分减少条件的线搜索,这应该保证收敛到真正的根(假设您的函数f是光滑的)。