(完整版)6.4超松弛迭代法

合集下载

迭代法的收敛性与稳定性 - 松弛迭代法、迭代法的收敛性与稳定性

迭代法的收敛性与稳定性 - 松弛迭代法、迭代法的收敛性与稳定性
Bk 0(零矩阵)(k )
定义 6.5 设有矩阵序列 Ak (aij(k ) ) Rnn 及 Ak (aij ) Rnn ,如果 n2 个数列极限存在
且有
lim
k
a (k) ij
aij
(i,
j
1,2,..., n)

Ak
称收敛于
A
记为 lim(k
)

定理 6.5
lim
k
Ak
A
lim
三 松弛法例题与程序
例 6.9 取 1.4, x(0) (1,1,1)T 用超松弛法解方程组
2x1 x2
1
x1 2x2 x3 0
x2 2x3 1.8
� � 解:由 xi(k1)
(1 )xik
aii
(bi
i 1 j 1
a x(k 1) ij j
n
aij
x
(k j
x j(k ) ) / aii xi(k )
j i
j i 1
i 1
n
(bi aij x j(k 1) aij x j(k ) ) / aii
ji
ji
(i 1,, n; k 0,1,).
� � i1
n
xi
b x(k 1) ij j
bij
x(k) j
gi
x(k) i
j 1
j i 1
a x(k1) ij j
aij x(jk ) ) / aii .
j 1
j i 1
(2) 再由 x(k) 与 ~xi(k 1) 加权平均定义 xi(k 1) ,即
x(k 1) i
(1 )xi(k)
x%i(k 1)

松弛迭代法

松弛迭代法

令B (D L)1[(1 )D U ], g (D L)1b,则
x(m1) B x(m) g (m 0,1,2,)
三、松弛法算法
输入 方程组的阶数n, A的元素aij,1 i, j n;b的分量bi ,1 i n;
x(0)的分量x0i ,1 i n;允许误差;最大迭次次数N. 输出 近似解x1, x2,, xn或N次迭代后不收敛的信息 . 步骤
S1 对m 1,2,, N作 S11~S13
S11 对i 1,2,, n
置xi

(1 )x0i

bi

i 1
aij x j

n

aij x0 j
aii .

j 1
j i 1

S12 若对i 1,2,, n, xi x0i ,则输出x1, x2,, xn ;停机.
在修正量前乘上一个参数,即
x ( m 1) i

xi( m )

r (m1) i
(i 1,2,, n)
这种求方程组近似解的方法称为松弛法,称为松弛因子. 当 1时,称为低松弛法,当 1时,就是赛德尔迭代法, 当 1时,称为超松弛法,简称为SOR.
在实际计算中,松弛法常采用以下形式:
§4-3 松弛迭代法
一、松弛迭代计算公式
赛德尔迭代法的迭代公式可表示为
x(m1) i

1 aii
(bi

i 1
a x(m1) ij j
j 1

n
aij
x(m) j
)
j i 1

x(m) i

1 aii

计算方法3_线性方程组迭代解法

计算方法3_线性方程组迭代解法

计算方法3_线性方程组迭代解法线性方程组的迭代解法是解决线性方程组的一种常见方法,常用于大规模的线性方程组求解。

该方法通过不断迭代更新解的近似值,直到满足一定的收敛准则为止。

线性方程组的迭代解法有很多种,其中最经典的是雅可比迭代法、高斯-赛德尔迭代法和超松弛迭代法。

本文将分别介绍这三种迭代解法及其计算方法。

雅可比迭代法是一种比较简单的线性方程组迭代解法,它的基本思想是先将线性方程组转化为对角占优的形式,然后通过迭代求解逐渐接近精确解。

雅可比迭代法的迭代公式为:其中,x^(k+1)是第k+1次迭代的近似解,n是未知数的个数,a_ij 是系数矩阵A的元素,f_i是方程组的右端向量的元素。

雅可比迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式,即保证矩阵A的对角元素绝对值大于其它元素的绝对值。

2.初始化向量x^(0),设定迭代终止准则。

3.根据雅可比迭代公式,计算x^(k+1)。

4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。

高斯-赛德尔迭代法是雅可比迭代法的改进方法,它的基本思想是在每次迭代计算x^(k+1)时,利用已经计算出的近似解作为x的一部分。

高斯-赛德尔迭代法的迭代公式为:其中,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。

高斯-赛德尔迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式。

2.初始化向量x^(0),设定迭代终止准则。

3.根据高斯-赛德尔迭代公式,计算x^(k+1)。

4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。

超松弛迭代法是对高斯-赛德尔迭代法的一种改进方法,它引入了松弛因子ω,通过调整参数ω的值,可以加快迭代的收敛速度。

超松弛迭代法的迭代公式为:其中,0<ω<2,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。

松弛迭代法

松弛迭代法
§4-3
一、松弛迭代计算公式
松弛迭代法
赛德尔迭代法的迭代公式可表示为 i 1 n 1 xi( m +1) = (bi ∑ aij x (jm +1) ∑ aij x (jm ) ) aii j =1 j =i +1
=x
(m) i i 1 n 1 ( m +1) + (bi ∑ aij x j ∑ aij x (jm ) ) aii j =1 j =i
令Bω = ( D ωL) 1[(1 ω ) D + ωU ], gω = ( D ωL) 1 b, 则
x ( m +1) = Bω x ( m ) + gω
(m = 0,1,2, L)
三、松弛法算法 输入 方程组的阶数n, A的元素aij,≤ i, j ≤ n; b的分量bi ,1 ≤ i ≤ n; 1
在实际计算中,松弛法常采用以下形式:
x
( m +1) i
= (1 ω ) x

( m) i
+ ω (bi ∑ aij x
j =1
i 1
( m +1) j
∑ aij x (jm ) ) / aii (i = 1,2, L , n)
j =i
n
二、松弛法的矩阵形式 x (m +1) = ( D ωL) 1[(1 ω ) D + ωU ]x ( m ) + ω ( D ωL) 1 b (m = 0,1,2, L)
ri( m +1) → 0(i = 1,2, L , n)
在修正量前乘上一个参数,即
xi( m +1) = xi( m ) + ωri( m +1)

超松弛迭代法课程设计

超松弛迭代法课程设计

超松弛迭代法课程设计一、课程目标知识目标:1. 学生能理解超松弛迭代法的概念,掌握其基本原理和应用场景。

2. 学生能够运用超松弛迭代法解决线性方程组问题,并理解其收敛性。

3. 学生能了解超松弛迭代法在工程和科学计算中的重要性。

技能目标:1. 学生能够独立进行超松弛迭代法的计算步骤,包括设定松弛因子、构造迭代矩阵等。

2. 学生能够运用数学软件(如MATLAB)实现超松弛迭代法的算法,并进行简单的程序调试。

3. 学生通过实际案例分析,培养运用超松弛迭代法解决实际问题的能力。

情感态度价值观目标:1. 学生通过学习超松弛迭代法,培养对科学计算和数学建模的兴趣,增强对数学学科的学习信心。

2. 学生在小组讨论和合作中,学会尊重他人意见,培养团队协作精神。

3. 学生能够认识到超松弛迭代法在科技发展中的重要作用,增强科技创新意识和社会责任感。

课程性质:本课程为高中数学选修课,以培养学生解决实际问题能力和数学思维能力为目标。

学生特点:学生具备一定的线性代数基础,具有较强的逻辑思维能力和动手操作能力。

教学要求:教师应注重理论与实践相结合,引导学生通过实际案例掌握超松弛迭代法的应用。

同时,注重培养学生的团队协作能力和创新意识。

在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。

通过课堂讲解、上机实践和小组讨论等多种教学方式,提高学生的学习效果。

二、教学内容1. 引言:介绍超松弛迭代法的背景和在实际问题中的应用,激发学生学习兴趣。

相关教材章节:第二章第四节“迭代法及其应用”。

2. 基本概念:讲解超松弛迭代法的基本原理,包括迭代格式、松弛因子选取等。

相关教材章节:第二章第四节“超松弛迭代法”。

3. 算法实现:详细讲解超松弛迭代法的计算步骤,并通过实例进行演示。

相关教材章节:第二章第四节“超松弛迭代法的计算步骤”。

4. 实践应用:分析实际案例,让学生动手实践,运用超松弛迭代法解决线性方程组问题。

相关教材章节:第二章第五节“迭代法解决实际问题”。

超松弛迭代法求解接地金属槽内电位分布

超松弛迭代法求解接地金属槽内电位分布

实验一用超松弛迭代法求解接地金属槽内电位分布1、实验内容:试用超松弛迭代法求解接地金属槽内电位的分布。

已知:,给定边值如图所示。

给定初值:误差范围:计算迭代次数,分布。

一.实验思路由边界条件用泊松方程的五点差分格式求得中央点的点位。

再以所得点及边界再次利用泊松方程的五点差分格式求出另四个点,依照此方法求出其余点的电位分布。

用最佳收敛因子的经验公式计算收敛因子。

利用超松弛迭代法进行差分方程的求解,当遇到边界是采用边界值或者边界差分格式。

直到所有节点电位满足误差条件。

二.实验设计原理:有限差分法有限差分法(Finite Differential Method)是基于差分原理的一种数值计算法。

其基本思想:将场域离散为许多小网格,应用差分原理,将求解连续函数?的泊松方程的问题换为求解网格节点上?的差分方程组的问题。

编程时将边值编入到程序中,这样可以省略输入,从而直接输入迭代因子进行求解,可以减少编程的难度。

迭代时所用公式是和书上一样,为a[i][j]=b[i][j]+w/4*(b[i+1][j]+b[i][j+1]+a[i][j-1]+a[i-1][j]-4*b[i][j]);其中a代表k+1,而b代表k。

三、程序运行界面及结果四.源程序代码#include<iostream>#include<math.h>#include<iomanip>using namespace std;classoverrei //over-relaxation iterative method {private:intm,n;doublex,e;double **p,**q;public:int k;overrei(int m0,int n0,double e0) {inti;e=e0;k=0;m=m0;n=n0;p=new double *[m];for(i=0;i<m;i++)p[i]=new double[n];q=new double *[m];//迭代因子求解for(i=0;i<m;i++)q[i]=new double[n];if(m==n)x=2/(1+sin(3.141592654/(m-1)));elsex=2-3.141592654*sqrt(2)*sqrt(1/((m-1)*(m-1))+1/((n-1)*(n-1))); cout<<"最佳收敛因子:"<<x<<endl;}void Initialization(); //赋边界条件void Cal(); //计算void Diedai(); //迭代函数void Show(); //输出部分};void overrei::Initialization() //赋边界条件{inti,j;for(i=0;i<m;i++) //边界条件for(j=0;j<n;j++){if(i==0){p[i][j]=100;q[i][j]=100;}else{p[i][j]=0;q[i][j]=0;}}cout<<"初始点位:"<<endl;Show();}void overrei::Cal() //计算{inti,j;int c=1;while(1){c=1;for(i=0;i<m;i++){for(j=0;j<n;j++){if((p[i][j]-q[i][j])>e||(q[i][j]-p[i][j])>e) //相邻两次迭代误差是否小于1e-5{c=0;break;}}if(c==0) break;}if(c==1 && k!=0) break;Diedai();}}void overrei::Diedai() //迭代函数{inti,j;double y=x/4;if(k%2){for(i=1;i<m-1;i++)for(j=1;j<n-1;j++){q[i][j]=p[i][j]+y*(q[i-1][j]+q[i][j-1]+p[i+1][j]+p[i][j+1]-4*p[i][j]);}}else{for(i=1;i<m-1;i++)for(j=1;j<n-1;j++){p[i][j]=q[i][j]+y*(p[i-1][j]+p[i][j-1]+q[i+1][j]+q[i][j+1]-4*q[i][j]);}}k++;}void overrei::Show() //输出部分{inti,j;for(i=0;i<m;i++){for(j=0;j<n;j++){cout<<setw(12)<<setprecision(6)<<fixed<<q[i][j]<<ends;}cout<<endl;}}int main(){cout<<" **************************************"<<endl; cout<<" 超松弛迭代法求解接地金属槽内电位的分布"<<endl; cout<<" **************************************"<<endl; overrei A(5,5,1e-5);A.Initialization();A.Cal();cout<<"电位分布:"<<endl;A.Show();cout<<"迭代次数:"<<A.k<<endl;return 0;}实验二按对称场差分格式求解电位的分布一.实验思路只计算一半的区域,对另一半进行对称性计算,减小计算量。

超松弛迭代法解线性方程组

超松弛迭代法解线性方程组

设it题目:摘要本文是在matlabll境下熟悉的运用计算机编程培言并结合超松弛变量起松弛迭代法的理论基础对方程组求解。

首先,本文以愉分方程边值问题为例,导出了离散化后线11方程组即稀疏线性方程组,转化对柿蔭线性方程组求解冋題。

其次,用起松弛(SOR)选代法编写matlab 程序,湘产生的柿疏线性方程组进行迭代法求解。

然后,分别改变松弛因子3和分段数n的值,分桥其收敛性和收敛速H, 18出各个方面的分林和比较需到相关结论。

最后,将起松弛迭代算法在it算机上运用matlab 言实现,借岀了一组与猜确解较接近的数值解,并画图比较,騎iil逐次超松弛(SOR)选代法的績确性。

关键词:柿匾线性方程组逐次超松弛迭代法松弛因子matlab编程-、间题提岀考虑两点逆值冋题为了把做分方程离IL 把[oj]E 间“等分,令/亠丄,脸=〃?,山12…山一1,得到 n 差分方程° 治 一 2)1 + X+—畑 一 X _ “or十—C< -h 2h简化为(£ + 必+i - © + 心+ % =肿,从而离散后得到的线性方程组的系数矩阵为一(2g + /?) £ + h£-(2£ + h )A =££ + /?一(2w + h )_对£ = 19 a = 0.4 , n = 200 ,分别用e = 1、6? = 0.5和e = 1.5的超松弛迭代法 求解线性方程组,要求有4也有效数字,然后比较与精确解的淚差,探讨使超松 弛选代法收敛较快的0取值,对结果进行分轿。

改变»论同wrOo二、超松弛迭代法产生的背景容易知道它的精确解为 + ax.£ + h—(2w +y =对从实际间题中借到维数相当夫的线11代数方程组的求解仍然十分困难,以至使人们不能在允许的时间内用貞接方法得到解,Slit,客观上要求用新的方法来解决大维数方程组的求解I'nJSo现有大名数迭代法不是对各类线11方程组都有收敛性,在解题时,要对原方程组葩晖作一根本的变换,从而可能使条件数变坏,也可能破坏了变换前后方程组的等价性,以员丧失使原方程组的对称II等。

超松弛迭代法

超松弛迭代法

xk 1 1 xk D1 b Lx( k 1) Ux( k )
xk 1 L x( k ) ( D L)1b


(5.3.2)
再整理得
其中,迭代矩阵为
L ( D L)11 D U
4 3 0 x1 24 3 4 1 x2 30 0 1 4 x 24 3
(1 )D U x (D L) x
D L U 是实对称矩阵,所以有LT U 。上式两边与x 作内积得 (5. 3. 4) (1 )(Dx, x) (Ux, x) [(Dx, x) ( Lx, x)] 因为A正定,D亦正定,记 p ( Dx, x) ,有 p 0 。又记 ( Lx, x) i , A 这里,
k 1
xi(k 1) xi(k 1) (1 ) xi(k ) xi( k ) ( xi( k 1) xi( k )
经整理得
x
( k 1) i
x
(k ) i
(bi aij x
j 1
i 1
( k 1) j
aij x (jk ) ) aii
opt
其中
2 1 1 u2
opt 的条件。在实际应 可以证明,对称正定的三对角矩阵满足最优松弛因子 用中,一般地说计算 ( BJ ) 较困难。对某些微分方程数值解问题,可以考虑用 求特征值的近似值的方法,也可以由计算实践摸索出近似最佳松弛因子。
( BJ ) 是 J 法迭代矩阵BJ 的谱半径。
按一般的迭代法收敛的理论,SOR迭代法收敛的充分必要条件是 ( L ) 1 在什么范围内取值,SOR迭 而 ( L ) 与松弛因子 有关。下面讨论松弛因子 代法可能收敛。 定理5.7 证 如果解方程组Ax 设 L 的特征值为
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0.75 x2( ( k 1)
6 0.25x3(k
)
7.5
x (k 1) 3
0.25x2(k1)
6
②取ω=1.25 ,即SOR迭代法:
xx21((kk11))
0.25x1(k) 0.9375x2(k) 7.5 0.9375x1(k1) 0.25x2(k) 0.3125x3(k)
-5.0183105
3.1333027
4.0402646
-5.0966863
4
3.0549316
3.9542236
-5.0114410
2.9570512
4.0074838
-4.9734897
5
3.0343323
3.9713898
-5.0071526
3.0037211
4.0029250
-5.0057135
6
3.0214577
3.9821186
-5.0044703
2.9963276
4.0009262
-4.9982822
7 3.0134110
3.9888241
-5.0027940
3.0000498
4.0002586
-5.0003486
迭代法若要精确到七位小数, Gauss-Seidel迭代法需要34次迭代; 而用SOR迭代法(ω=1.25),只需要14次迭代。
因子ω。
返回引用
opt
(1
2
1 [(BJ )]2 )
(4)
这时,有ρ(Bopt
)=
ω
opt
-
1。
SOR法分类与现状
通常,
(1)当ω>1 时,称为超松弛算法; (2)当ω<1 时,称为亚松弛算法。
目前还没有自动选择因子的一般方法,实
际计算中,通常取(0,2)区间内几个不同的ω
值进行试算,通过比较后,确定比较理想的松弛
定理6.6 设A∈Rnn对称正定,且 0<ω<2,则SOR法对任意
的初始向量 都收敛。
x(0) ( x1(0) , x2(0) , xn(0) )T Rn
由于定理6.4只是定理6.6的特殊情况,故定理6.4可以 看作定理6.6的推论。
定理6.7 设A是对称正定的三对角矩阵,则
ρ(BG) =[ρ(BJ)] 2 <1, 且SOR法松弛因子ω的最优选择为
可见,若选好参数ω,SOR迭代法收敛速度会很 快。
返回节
二、SOR法的收敛性
为了利用第3节的收敛定理,要先给出SOR法的矩阵表达 式。由式(2) 以及Gauss-Seidel迭代法的矩阵表达形式, 可以看出
X(k+1) =(1-ω)X(k)+ωD-1(b+LX(k+1)+UX(k)) DX(k+1) =(1-ω)DX(k)+ω(b+LX(k+1)+UX(k)) (D-ωL)X(k+1) =[(1-ω)D+ωU] X(k)+ωb 解得
~xi(k1)
[bi
i1
aij
x
(k j
1)
n
aij
x
(k j
)
]
/
aii
j 1
j i
(1)
选择参数ω,取
x (k 1) i
(1 )xi(k)
~xi(k1)
(2)
返回引用
把 式(1)代入式(2)即得SOR法
x(ik1)
(1
)x(i k )
aii
[bi
i1 j1
a x(k1) ij j
X(k+1) =(D-ωL)-1 [(1-ω)D+ωU] X(k)+ω(D-ωL)-1b (3)
记 Bω=(D-ωL)-1 [(1-ω)D+ωU] 称为SOR法迭代矩阵。
由定理6.1 及定理6.2直接得知:
(1) SOR法收敛的充要条件是ρ(Bω)<1。
(2) SOR法收敛的充分条件是 || Bω||<1。
30
0 1 4 x3 24
解 方程组的精确解为 x=(3,4,-5) T,为了进行比较,利用同
一初值 x(0)=(1,1,1)T,分别取ω=1 (即Gauss-Seidel迭代法)和
ω=1.25两组算式同时求解方程组。
①取ω=1 ,即Gauss-Seidel迭代:
x (k 1) 1
前面我们看到,SOR法收敛与否或收敛速度都
与松弛因子ω有关,关于ω的范围,有如下定理。
SOR法收敛与收敛速度有关定理
定理6.5 设A∈Rnn,满足a ii≠0 (i=1,2,,n),则有 ρ(Bω)≥ |1-ω| 。
推论 解线性方程组,SOR法收敛的必要条件是 |1-ω| <1 ,即 0<ω <2。
二、SOR法的收敛性
SOR法收敛与收敛速度有关定理 SOR法分类与现状
一、SOR法迭代公式
返回引用
设线性方程组
AX=b
其中 A非奇异,且aii 0(i=1,2,,n ) 。
如果已经得到第k次迭代量x (k) 及第k+1次迭代量x (k+1) 的前i-1个 分量
(x1 (k+1),x2 (k+1) ,,xi-1 (k+1) ), 在计算xi (k+1) 时,先用Gauss-Seidel迭代法得到
n
aijx(jk) ]
ji1
X(0)
(x1(0)
,
x(0) 2
,
,
x(0) n
)T
(k 1, 2, )
(i 1, 2, , n)
其中,
参数ω叫做松弛因子; 若 ω=1,它就是Gauss-Seidel迭代法。
返回引用
例6.6 用SOR法求解线性方程组
4 3 0 x1 24
3
4
1
x2
9.75
x3(k
1)
0.3125 x2( k 1)
0.25x3(k)
7.5
迭代结果见表6.3。
表6.3 Gauss-Seidel迭代法与SOR迭代法比较
Gauss-Seidel迭代法
SOR迭代法(ω=1.25)
k
x1
0
1.0000000
x2 1.0000000
x3 1.0000000
x1 1.0000000
x2 1.0000000
x3 1.0000000
1
5.2500000
3.1825000
-5.0468750
6.3125000
3.9195313
-6.6501465
2
3.1406250
3.8828125
-5.0292969
2.6223145
3.9585266
-4.6004238
3
3.0878906
3.9267587
第六章 线性方程组迭代解法
§ 6.4 超松弛迭代法(SOR)
§ 6.4超松弛迭代法(SOR)
SOR(Successive Over-Relaxation)法, 即超松弛迭代法,是目前解大型线性方程 组的一种最常用的方法,是Gauss-Seidel迭 代法的一种加速方法。
一、SOR法迭代公式
例6.6 用SOR法求解线性方程组
相关文档
最新文档