首页 > 解决方案 > 欧米茄在连续过松弛率法中的意义是什么?

问题描述

我有以下矩阵

在此处输入图像描述

我已将其转换为严格占优矩阵,并应用 Guass-Siedel 和连续松弛率方法,其中 omega=1.1 和 epsilon=1e-4 容差,收敛公式如下

在此处输入图像描述

通过手动使用python(不使用线性代数库)解决这个问题,我发现这两种方法都采用相同数量的迭代(6),但根据我的理解,如果矩阵在 Gauss-Siedel 和 1<omega<2 中收敛连续超过松弛率方法,那么 SOR 方法应该需要更少的迭代次数,这不会发生?

那么,我的理解正确吗?SOR 方法是否必须减少迭代次数?

标签: pythonmatrixiterationlinear-algebragaussian

解决方案


这实际上是我在尝试解决相同问题时遇到的问题。在这里,我将包括来自 GS 和 SOR 方法的第 6 次迭代的结果,并将分析我对为什么会这样的看法。对于初始向量 x = (0,0,0,0)。实际上,我们看到每种方法的 L 无穷范数是不同的(见下文)。

对于高斯-赛德尔:

The solution vector in iteration 6 is: 
[[ 1.0001]
[ 2.    ]
[-1.    ]
[ 1.    ]]
The L infinity norm in iteration 6 is: [4.1458e-05]

对于 SOR:

The solution vector in iteration 6 is: 
[[ 1.0002]
[ 2.0001]
[-1.0001]
[ 1.    ]]
The L infinity norm in iteration 6 is: [7.8879e-05]

从学术上讲,“SOR 可以提供一种方便的方法来加快 Jacobian 和 Gauss-Seidel 方法来求解我们的线性系统。参数 ω 被称为松弛参数。显然,对于 ω = 1,我们恢复了原始方程。如果ω < 1 我们谈论欠松弛,这对于一些在正常雅可比松弛下不会收敛的系统可能很重要。如果 ω > 1,我们会过松弛,我们会更加关注。它是在如果我们超过 Gauss-Seidel 校正,那么多年来的手工计算收敛速度更快。粗略地说,这些近似值保持在解 x 的同一侧。过松弛因子 ω 使我们更接近解。当 ω = 1 时,我们恢复 Gauss-Seidel;当 ω > 1 时,该方法称为 SOR。ω 的最优选择永远不会超过 2。它通常在 1.9 附近。

有关 ω 的更多信息,您还可以参考 Strang, G., 2006 年第 410 页的“线性代数及其应用”一书以及论文A rapidfinite Difference algorithm, using continuous over-relaxation to solve Poisson –玻尔兹曼方程

根据上面的学术描述,我认为这两种方法都有 6 次迭代,因为 1.1 不是最优的 ω 值。将 ω 更改为更接近的值最优ω可能会产生更好的结果,因为过度松弛的全部目的是发现这个最佳 ω。(我再次相信这个 1.1 不是最佳欧米茄,一旦我进行计算就会更新你)。图片来自 Strang, G.,2006 年“线性代数及其应用”第 4 版第 411 页。

编辑:确实,通过在 SOR 中运行 omega - 迭代的图形表示,我的最佳 omega 似乎在 1.0300 到 1.0440 的范围内,并且这些 omega 的整个范围给了我五次迭代,这是比纯高斯更有效的方法-Seidel at omega = 1,给出 6 次迭代。

效率图


推荐阅读