求解包含线性项的非线性代数系统

计算科学 非线性方程 牛顿法
2021-12-02 05:18:01

我正在尝试解决一个特定的非线性方程组,写成F(x)=0以一种有效的方式。

进一步来说,

F(x)=(IγA)xg(x)+C
在哪里γ是标量常数,C是向量常数,A是一个常数矩阵,并且g是一个非线性函数RnRn. 我用的是牛顿法,比较满意。它涉及计算雅可比行列式F(x)=IγAg(x)并在形式的每次牛顿迭代中求解线性系统F(xk)Δxk=F(xk)然后设置xk+1=xk+Δxk. 在这种特定情况下,它会快速收敛(最多 2-3 次迭代)并且一切正常。

然而,随着问题变得更加复杂并且我的方程组的大小增加,计算雅可比和求解该线性系统成为一个瓶颈。为了克服这个问题,我使用了一种简化的牛顿方法,该方法在整个牛顿迭代过程中保持 F' 不变,并使用一些并行计算,因为在我的情况下,雅可比行列式可以有效地并行计算。不幸的是,求解线性系统仍然是一个瓶颈(尽管使用了多种并行线性代数技术)。

我的问题是:有没有办法利用特定形式的F(i.e它是线性算子和非线性算子之和的事实)?特别是,我对需要我解决线性系统的方法特别感兴趣A(或者IγA) 或者g,但不是他们的总和。确实,我有特定的算法来用这些矩阵求解线性系统,但是用总和来求解线性系统 IγAg非常低效(g原来是块对角线所以添加IγA搞砸了,并解决(IγA)X=B由于 A 的特定结构,其本身不是问题)

谢谢

2个回答

请在您的问题中预先说明您正在解决反应扩散问题。您还应该知道,时间拆分方法(例如 Strang Splitting)对于这些问题非常流行,尽管它们可能存在严重的准确性和稳定性问题(例如,Ropp、Shadid 和 Ober,2004)。也就是说,您可以使用乘法迭代方法,最好作为线性或非线性 Krylov 方法的预处理器。解决(A+B)x=f, 计算

x~x0+ω1A1(f(A+B)x0)
x1x~+ω2B1(f(A+B)x~)

在哪里ω1,ω2是加权参数。该方法的迭代矩阵为

T=(1ω1A1(A+B))(1ω2B1(A+B))=(1ω1ω1A1B)(1ω2ω2B1A).

如果您选择,地图是可收缩的ω1,ω2这样|T|<1,这在无限期反应的情况下可能是不可能的。通常会使用 Krylov 方法(也许ω1=ω2=1) 而不是调优ω1ω2.

g通过任何改变对矩阵其余部分的低秩校正?如果是这样,您可以考虑使用 Sherman-Morrison 公式:

http://en.wikipedia.org/wiki/Sherman –Morrison_formula