首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在逐次超松弛速率法中ω的意义是什么?

在逐次超松弛速率法中ω的意义是什么?
EN

Stack Overflow用户
提问于 2020-09-17 16:28:31
回答 1查看 394关注 0票数 0

我有以下矩阵

我已经将其转化为严格占优矩阵,并应用了具有omega=1.1和容差ε=1e-4的高斯-西德尔和逐次超松弛速率方法,其收敛公式如下

通过使用python手动解决这个问题(而不是使用线性代数库),我发现两种方法都需要相同的迭代次数(6),但根据我的理解,如果矩阵在高斯-西德尔和1

那么,我的理解是正确的吗?SOR方法需要更少的迭代次数吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-24 02:49:08

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

对于Gauss-Seidel:

代码语言:javascript
复制
The solution vector in iteration 6 is: 
[[ 1.0001]
[ 2.    ]
[-1.    ]
[ 1.    ]]
The L infinity norm in iteration 6 is: [4.1458e-05]

对于SOR:

代码语言:javascript
复制
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,我们会有过度松弛,这将是我们更关心的。在多年的手工计算中发现,如果我们超越高斯-赛德尔校正,收敛速度会更快。粗略地说,这些近似保持在解x的同一侧。超松弛因子ω使我们更接近解。当ω= 1时,我们恢复高斯-赛德尔;当ω>1时,该方法称为SOR。ω的最佳选择永远不会超过2,它通常在1.9附近。

有关ω的更多信息,您还可以参考Strang,G.,2006年“线性代数及其应用”一书的第410页以及论文A rapid finite difference algorithm, utilizing successive over‐relaxation to solve the Poisson–Boltzmann equation

基于上面的学术描述,我认为这两种方法都有6次迭代,因为1.1不是最优的ω值。将ω更改为更接近的值

可以产生更好的结果,因为超松弛的全部要点是发现这个最优的ω。(我再次相信,这个1.1不是最优的omega,一旦我进行计算,它就会更新你)。图片来自Strang,G.,2006“线性代数及其应用”,第4版,第411页。

编辑:实际上,通过在SOR中运行omega迭代的图形表示,我的最优omega似乎在1.0300到1.0440的范围内,这些omega的整个范围给了我五次迭代,这是一种比omega=1的纯Gauss-Seidel更有效的方式,它提供了6次迭代。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63934158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档