非线性系统的收敛问题

计算科学 非线性方程 积分方程
2021-12-24 02:26:13

我有一个令人讨厌的耦合积分方程系统,我设法离散化并重铸了一个非线性系统,例如:

w=F(w)wRn

我正在采用一种天真的迭代解决方案方法。对于一些合理的初始选择w我反复计算w(n+1)=F(w(n)). 我在每一步定义数量x=||w(n+1)wn||.

我观察到x在迭代之后减少(如预期的那样!)迭代,直到我接近系统的解决方案(我知道一些特定参数值的解决方案......)然后x开始迅速增加,我的方法似乎逐渐偏离系统的实际解决方案。

我该如何解决我的问题?我的猜测是采用产生最低的解决方案x,也许尝试一些小的扰动以从那里开始实现更好的收敛,但这只是一个猜测。只取最低的解决方案x行不通,因为我希望有更好的收敛性。

先感谢您!

2个回答

一种常见的策略是采用阻尼策略,即计算w=F(w(n))然后设置 w(n+1)=αw()+(1α)w(n)在哪里α[0,1]. 您通常选择α以这样一种方式,它最小化[αw()+(1α)w(n)]F(αw()+(1α)w(n))在某种意义上。像这样的阻尼策略通常比仅仅采取一个完整的步骤α=1更强大,这就是你目前正在做的。

看看安德森混音。它用于非线性的自洽量子化学应用。它比简单的阻尼更快、更稳健。

标题是您保留 n 先前迭代的历史并计算每个迭代的残差,然后使用解空间在解附近是线性的近似值对残差集执行线性求解。这非常有效,而且比类似的 Broyden 更新方法快得多,Eyert 证明这种方法与 Anderson 相当。

当我使用它时它略微下降,因为我的变换对即使在解附近的小增量非常敏感,即线性近似确实保持得很好。