黄金比例分割法确定对称逐次超松弛迭代法的最佳松弛因子
最优松弛因子的选择方法
SOR方法中最优松弛因子的几种选择方法学习了解线性方程组的SOR方法后,老师给我们强调了SOR方法中松弛因子的重要性,但却并没有明确告诉我们如何更好的选取最佳的松弛因子,我想这可能是暗示我们自己课下去查阅资料研究。
所以我这次选取了这一课题作为我的一次大作业。
通过学习我们知道了SOR方法中的松弛因子w的取值直接影响到算法的收敛性和收敛速度。
w选取得当,可以加快收敛速度,甚至可以使发散的迭代变成收敛。
因此,参数w的选取是SOR方法能否成功的关键。
为了保证迭代过程的收敛,必须要求0<w<2,而对超松弛法取1<w<2。
通过查阅资料,我找到了三种对超松弛因子的的选取的简单实用的方法,这些方法还能够运用到计算机算法中去,便于算法的实行。
一、松弛因子的选择方法1.二分比较法将松弛因子w的区间(1,2)进行二分,每个小区间的长度为1/2,w取区间中点值3/2,按照课本上(3.2.15)的公式迭代,求出迭代次数k。
如果k不超过指定的发散常数,则可确定w的值;否则将(1,2)区间四等分,每个小区间的长度为1/4,w取各分点的值继续迭代。
一般地,将区间(1,2)二分M次,每次二分步长为1/2^M,w依次取各二分点的值,同样按照课本中(3.2.15)的公式迭代,并求出迭代次数k值。
如果k值不超过指定的发散常数,则可确定w的值,这种方法总能找到一个不超过指定发散常数的w值。
用算法描述如下:第一步,给定发散常数RADIATION的值,令二分次数M的初始值为1;第二步,将区间(1,2)二分M次,每次二分的步长为1/2^M,w取各二分点的值;第三步,对每一个二分点按照课本中(3.2.15)中公式迭代求出迭代次数K;第四步,比较各二分点的K值找出最少迭代次数的Kmin值;第五步,判断若Kmin小于RADIATION,则结束;否则二分次数M++,跳至第二步继续二分。
2.逐步搜索法将w的取值区间(1,2)进行M等分,w分别取1+1/M,1+2/M,1+3/M,……,1+(M-1/M)。
超松弛迭代法中松弛因子ω的选取方法
超松弛迭代法中松弛因子ω的选取方法一、超松弛迭代算法基本概念超松弛迭代法简称为SOR(Successive Over -- Relaxation)法,是求解线性代数方程组的一种迭代加速方法,它是在高斯--塞德尔迭代法的基础上进行加速的,将前一步的结果x k i )(与高斯--塞德尔迭代方法的迭代值x k i )1(+适当的加权平均,期望获得更好的近似值x k i )1(+。
其迭代公式如下:x k i )1(+=(1--ω)x k i )(+a iiw (b i --x a k j i j ij )1(11+-=∑--x a j n i j ij (k)∑=) i =1,2,…,n;k =0,1,2,…(1.1)SOR 法中ω的取值对迭代公式的收敛速度影响很大,它的好坏直接影响到加速的快慢。
为了保证迭代过程的收敛,必须要求0<ω<2,超松弛法取1<ω<2。
但是在1和2之间仍然有很多的取值,究竟如何取值没有同意的规定。
经过多次的实验、分析与研究提出了ω选取的几种方法。
二、松弛因子ω的选取方法1、逐步实验法将ω的取值区间(1,2)进行M 等分,ω分别取1+1/M ,1+2/M ,……,1+(M--1)/M ,通过公式1.1依次对同一精度要求求出迭代次数k 的值,在求的同时比较出最少的迭代次数k ,并将此次ω的值保留,这样就得到了1+1/M ,1+2/M ,……,1+(M--1)/M 中最优的ω值,算法步骤如下:第一步:给定M 的值第二步:对于,ω分别取1+1/M ,1+2/M ,……,1+(M--1)/M 按照公式 x k i )1(+=(1--ω)x k i )(+a iiw (b i ---x a k j i j ij )1(11+-=∑---x a j n i j ij (k)∑=) i =1,2,…,n;k =0,1,2,…根据给定的精度要求迭代,求出迭代次数k 的值。
SOR迭代法求解线性方程组
SOR迭代法求解线性方程组一实验名称:实验四:逐次超松弛迭代法。
二实验题目:求解下面的三元一次线性方程组:2x-y+2z=4;x+2y+3z=9;2x-2y-3z=-3;要求选取不同的松弛因子进行计算,并估计最优松弛因子的大小。
三实验目的:1.熟悉掌握逐次超松值迭代法的基本原理和基本方法。
2.学会用逐次超松弛迭代法解简单的方程组。
3.选取不同的w值(0<w<2)进行试探性的计算,从中摸索出近似的最佳松弛因子。
四基础理论:超松弛迭代法以及所涉及的主要算法为:Xi^(k+1)←(1-w)*Xi^(k)+w*Xi的共轭的(k+1)次幂。
五实验环境:Visual C++6.0。
六实验过程:1. 在程序中输入不同的数据时,会得到不同的结果。
2.大于1的时候的松弛因子,被称作超松弛法。
小于则被称做低松弛法。
由于松弛因子对方程组的收敛速度影响很大,所以在一定的误差范围内,选择不同的松弛因子时,迭代次数也会不同。
3. 按照实验题目中的数据输入时,比较结果当w=0.6时,会出现下面的结果:当w=0.7时得当w=0.8时得当w=0.9时,会出现下面的结果当w=1.0时得七结果分析:当在一定的误差范围内,有以上运行结果可以得出答案,最优松弛因子的范围为0.8。
八逐次超松弛迭代法程序代码:#include<iostream.h>#include<stdlib.h>#include<stdio.h>#include<math.h>void SOR(double w, double a[3][3], double b[3], double x[3], double esp) {double t[3];int flag=0;int n=0;while(!flag){flag=1;n++;t[0]=x[0]; t[1]=x[1]; t[2]=x[2];for(int i=0;i<3;i++){double m=b[i];for(int j=0;j<3;j++){m-=(a[i][j]*x[j]);}x[i]=x[i]+w*m/a[i][i];}for(int k=0;k<3;k++){if(fabs(x[k]-t[k])>=esp){flag=0;break;}}}printf("%d\n",n);}void main(){double a[3][3];double b[3];double x[3];double w,esp;a[0][0]=2; a[0][1]=-1; a[0][2]=2;a[1][0]=1; a[1][1]=2; a[1][2]=3;a[2][0]=2; a[2][1]=-2; a[2][2]=-3;b[0]=4; b[1]=9; b[2]=-3;x[0]= x[1]= x[2]=0;w=0.6;esp=0.0001;SOR(w,a,b,x,esp);for(int i=0;i<3;i++)printf("%f\n",x[i]);}。
数值分析大作业超松弛迭代法如何选取最佳松弛因子
数值分析⼤作业超松弛迭代法如何选取最佳松弛因⼦超松弛迭代法如何选取最佳松弛因⼦船建学院B1301095 wj⼀、课题背景逐次超松弛迭代法是Gauss-Seidel⽅法的⼀种加速⽅法,是解⼤型稀疏矩阵⽅程组的有效⽅法之⼀,它具有计算公式简单,程序设计容易,占⽤计算机内存较少等优点,但需要选择好的加速因⼦(即最佳松弛因⼦)。
最佳松弛因⼦ω的确定是数值代数中的⼀个理论难题,对于不同的矩阵,其最佳松弛因⼦往往相差很⼤,没有统⼀的计算公式来确定ω。
由于对称正定矩阵sor⽅法收敛的充分必要条件为w在0到2之间,故利⽤对称正定矩阵⼀定收敛的性质,本⽂提供⼀种针对于系数矩阵为对称正定矩阵时,如何选取合适的最佳松弛因⼦的⽅法。
⼆、课题研究流程图三、SOR迭代公式逐次超松弛(Successive Over Relaxation)迭代法,简称SOR迭代法,它是在GS法基础上为提⾼收敛速度,采⽤加权平均⽽得到的新算法,设解⽅程的GS法记为(1)再由与加权平均得这⾥ω>0称为松弛参数,将(1)式代⼊则得(2)称为SOR迭代法,[WTBX]ω>0称为松弛因⼦,当ω=1时(2)式即为GS法,将(2)式写成矩阵形式,则得即于是得SOR迭代的矩阵表⽰(3)四、Matlab程序%sor法确定对称正定矩阵的最佳松弛因⼦w%clc;clear;n=100;%矩阵的阶数%for num=1:100X=diag(rand(n,1));U=orth(rand(n,n)-0.5);a=U'*X*U;%以上是利⽤随机对⾓矩阵和随机正交矩阵,产⽣随机的对称正定矩阵,正交变化不改变特征值%L=zeros(n,n);U=zeros(n,n);%分配L和U的内存空间%step=0.02;%定义w的计算精度%for k=1:(2/step) %由于对称正定矩阵sor⽅法收敛的充分必要条件为w在0到2之间%w=(k-1)*step;for i=1:n %⼀个总的for循环给三个矩阵赋值D-L-U=A,%for j=1:i-1L(i,j)=-a(i,j);%L矩阵的赋值%endfor j=i+1:nU(i,j)=-a(i,j);%U矩阵的赋值%endD(i,i)=a(i,i);%D矩阵的赋值%endH=inv(D-w*L)*((1-w)*D+w*U);%sor⽅法的核⼼,H矩阵为迭代矩阵%p(k)=max(abs(eig(H)));%利⽤此函数求矩阵的谱半径%endk_min=find(p==min(p));%find函数寻找不同的w中谱半径的最⼩值,即寻找收敛最快的w%w_min(num)=(k_min-1)*step;%由最⼩值的序号得到最优的w%endhist(w_min,100)%对数量⾜够多的随机对称正定矩阵做频率统计,w划分100份,做出统计图%mean(w_min)%对不同矩阵的最⼩谱半径所对应的w对平均统计%五、结果对于不同阶数,计算得到的最佳收敛因⼦w不同,⼤致是随阶数增⼤⽽增⼤。
黄金比例分割法确定对称逐次超松弛迭代法的最佳松弛因子
(2) 1 < ω < 2 ;
(3) 取 [D] = k[I ],当 k n ∈ (0, 1) 时;
2
则本文采用改进的SSOR迭代法收敛。
证明:本文所采用的SSOR-PCG法改进的迭代格式所采用的迭代矩阵为:
Lω = I − ω(D − ωCL )−1 A = (I − ωL)−1 ((1 − ω)I + ωU )
表1 方向
x y x y x
本文算法与MARC计算节点位移比较
MARC 解
本文算法解
-0.315654E-03
-0.315041E-03
-0.151406E-03
-0.151282E-03
-0.130349E-01
-0.130269E-01
-0.354377E-01
-0.353946E-01
-0.148028E-01
0.019 0.213 0.122 0.052
y
10151
x
y
10251
x
y
注:表中节点位置参见图1.
-0.168963E-03 0.131212E-01
-0.355535E-01 0.149818E-01
-0.943525E-01
-0.168703E-03 0.131073E-01
-0.355067E-01 0.149659E-01
(1)
( ) R: α = y k ,Vy k
式中 ( , ) 为内积表示,下同。
如果α ≤ ε ,则停止,否则
-1-
⎧τ ⎪
k
⎪δ k
=
+1
( y k ,Vy k ) /(d k ,2z k = δ k +τkdk,
matlab超松弛迭代法求方程组
一、介绍MATLAB(Matrix Laboratory)是一种用于数值计算和数据可视化的专业软件。
在MATLAB中,超松弛迭代法是解决线性方程组的一种有效算法。
本文将介绍MATLAB中超松弛迭代法的基本原理和实现方法,并给出一个具体的例子进行演示。
二、超松弛迭代法的基本原理超松弛迭代法是一种逐步迭代的算法,用于求解线性方程组。
它的基本原理是通过不断迭代更新方程组的解,直到达到满足精度要求的解。
超松弛迭代法的公式如下:X(k+1) = (1-w)X(k) + w*(D-L)⁻¹*(b+U*X(k))其中,X(k)代表第k次迭代的解向量,X(k+1)代表第k+1次迭代的解向量,D、L和U分别代表方程组的对角线元素、下三角元素和上三角元素构成的矩阵,b代表方程组的右端向量,w代表松弛因子。
超松弛迭代法的关键在于选择合适的松弛因子w,一般情况下,可以通过试验选取一个合适的值。
在MATLAB中,可以使用sor函数来实现超松弛迭代法。
三、MATLAB中超松弛迭代法的实现方法在MATLAB中,可以通过调用sor函数来实现超松弛迭代法。
sor 函数的语法格式如下:[X,flag,relres,iter,resvec] = sor(A,b,w,tol,maxit)其中,A代表线性方程组的系数矩阵,b代表右端向量,w代表松弛因子,tol代表迭代的精度要求,maxit代表最大迭代次数,X代表迭代求解得到的解向量,flag代表迭代的结果标志,relres代表相对残差的大小,iter代表迭代次数,resvec代表迭代过程中的残差向量。
以下是一个使用sor函数求解线性方程组的示例:A = [4 -1 0 -1 0 0; -1 4 -1 0 -1 0; 0 -1 4 0 0 -1; -1 0 0 4 -1 0; 0 -1 0 -1 4 -1; 0 0 -1 0 -1 4];b = [1; 0; -1; 0; 1; 0];w = 1.25;tol = 1e-6;maxit = 100;[X,flag,relres,iter,resvec] = sor(A,b,w,tol,maxit);通过调用sor函数,可以得到方程组的解向量X,迭代的结果标志flag,相对残余resrel和迭代次数iter。
数值分析第二次大作业SOR最优松弛因子选取方法及SOR迭代法的改进
《数值分析》第二次大作业题目:SOR最优松弛因子选取方法及SOR迭代法的改进内容:1.SOR最优松弛因子选取方法2.SOR迭代法的改进(SSOR迭代法)3.SSOR迭代法的Matlab程序4.举例比较jacobi,Gauss-Seidel,SOR及SSOR 迭代法的收敛速度姓名:合肥工业大学学号:2011班级:信息与计算科学11-1班参考资料:1.《确定SOR最优松弛因子的一个实用算法》李春光等《计算力学学报》2.《数值分析与实验》,薛毅,北京工业大学出版社.3.《数值分析中的迭代法解线性方程组》,马云,科学出版社4.《非线性互补问题的改进超松弛迭代算法》,段班祥等,江西师范大学出版社5.《迭代法解线性方程组的收敛性比较》,郑亚敏,江西科学出版社.一、SOR最优松弛因子选取方法SOR迭代法迭代公式:x(k+1)i=(1-ω)xi+(k) bi-∑aijxjaii⎝j=1ω⎛ i-1(k+1)-j=i+1∑axijn(k)j⎫⎪ (i=1,2,..n.), ⎪⎭1.二分比较法将松弛因子1/2,ω的区间(1,2)进行二分,每个小区间的长度为ω去中间值3/2,按照SOR 迭代法迭代公式,求出跌代次数k,如果k不超过指定的发散常数,则可确定ω的值;否则将(1,2)四等分,每个区间长度为1/4,ω取各分点值,继续迭代,一般地,将1区间(1,2)二分M次,每次二分步长为,ω一次取取各分点值,2M按照SOR迭代法迭代公式,求出跌代次数k,如果k不超过指定的发散常数,则可确定的ω的值,这样总能找到一个不超过指定发散常数ω值。
2.逐步搜索法将1+ω的取值区间(1,2)进行M等分,ω分别取ω的值。
12M-1,1+,...,1+,通过迭代公式依次对同意精度要求求出迭代MMM次数k的值,并从中选出最优松弛因子3.黄金分割法依据黄金分割比的思想,通过计算机主动选取最优松弛因子的近似值,步骤如下a.对(1,2)区间进行第一次0.618的分割,区间边界a1=1,b1=2,在区间(a1,b1)分割出黄金点p1=a1+0.618(b1-a1),进行SOR迭代法的迭代,求出迭代次数k的值,如果没有超过规定的发散常数,迭代结束,否则做步骤b。
线性代数课程论文
基于自适应遗传算法的SOR迭代(华南理工大学理学院数学系计算数学牛海静)摘要:对于确定逐次超松驰迭代法中的最佳松驰因子问题, 迄今, 人们还没有给出一可行实用的方法. 利用自适应遗传算法全局搜索性能、并行性及其遗传操作, 构造出近似确定最佳松驰因子的一种自适应进化方法, 并由此得到一近似确定功能的自适应逐次超松驰迭代算法. 数值算例表明, 该算法在求解线性方程组中是可行的, 实用和快捷的.关键词:逐次超松驰迭代法; 遗传算法; 最佳松驰因子; 线性方程组1引言在科学计算和工程设计中, 人们经常会遇到求解线性代数方程组问题, 而且在计算方法的其它分支的研究也往往归结为此类问题. 目前, 大型的线性方程组都是利用计算机进行数值求解, 归结起来, 主要有两类: 一类是直接解法, 就是指经过有限步运算求得方程组的解的一类方法, 此类方法比较适用于系数矩阵稠密的中、小型线性方程组; 另一类是迭代解法,适用于解大型、稀疏矩阵的线性方程组. 逐次超松驰迭代法(Successive Over-Relaxation) 是解线性方程组的一种迭代加速法, 是求解大型线性方程组的有效方法之一. 通过选择恰当的松驰因子, 它能使收敛速度变得较快, 也使发散的可能变成收敛, 因此, 超松驰迭代法算法有着极高的应用价值. 本文利用自适应遗传算法全局搜索性能和并行性、及其遗传操作, 构造出一种近似确定最佳松驰因子的自适应进化算法, 并由此得到一个近似确定功能的自适应遗传逐次超松驰迭代法(Adaptive Genetic Algorithm Successive Over-Relaxation) 算法, 简称为A GA SOR.2 逐次超松驰迭代法超松驰迭代法简称为SOR 法, 是求解线性代数方程组的一种迭代加速法, 它是在Gauss Seidel 迭代法的基础上进行加速的, 将前一步的结果ki x与Gauss Seidel 迭代方法的迭代值(1)k ix 适当的加权平均, 期望获得更好的近似值(1)k ix .其迭代公式如下:1(1)()(1)()1(1)[],i n k k k k iiiijjijjj j iiixx b a xa xa1,2,,;0,1,2,i n k其中:为松弛因子. SOR 法中取值对迭代公式的收敛速度影响很大, 它的好坏直接影响到收敛速度的快慢. 为了保证迭代过程的收敛, 必须要求02,但是在0 和2 之间有很多的取值, 究竟如何取值至今没有较好的解决方法. 基于此目的, 文中提出一个可一般确定近似值的自适应数值进化方法, 该方法利用的是自适应遗传算法中全局性、并行性及其遗传操作, 使其快捷方便. 该算法适用于满足SOR 迭代方法的大型稀疏矩阵的线性方程组.3 遗传算法原理与A GA SOR 算法3.1 适应度函数与编码实现若一个代数方程组, 它由n 个方程组组成, 涉及m 个变量:11()()()()iinnX X X X f A fA fA(1)其中:1()f 可为除分段函数外的任意形式的函数表达式,,{|(,)}.j i j Xx x x X x a b 12m ,,...,求解方程组(1)等价于求极值问题: 求一X ,以使式(2)取值最小.当最小值为0时,所对应的X ,即为方程之解; 当其最小值不为0 时, 则此方程组无解. 设适应度函数: 1()(),niii F X X XfA(2)本文是用遗传算法寻找SOR 法中的最佳松驰因子, 确定在(0, 2) 区间的最优值. 对于,选定迭代初始值后, 它与方程组的解X 联系是比较紧密, 较好的可以在较少的迭代次数内得到较精确的解. 因而, 为了更好的平衡这种关系,可以用式(2) 与迭代次数K 的平均值的负值做为适应度函数, 即:1()()(),22niii X K F X KFit XfA(3)(或者可以选择适应度函数为 111()()()n iii Fit F X KX KfA也可以吧,不知道效果怎么样)求适应度函数时, 也要把迭代次数考虑进来. 如果比较差, 有可能达不到所要求的精度, 就会无限迭代下去. 因此,给出一个限定条件, 如果迭代次数达到最大限定, 则k 取最大限, 适应度还按式(3) 进行处理. 同时为使算法能适用于任意的线性方程组, 必须根据用户输入的系数矩阵A 和常数项向量B , 还有选代初始值0X 和要求精度, 用上述方法生成适应度函数.对于染色体编码, 本文采用实数编码. 与二进制编码相比, 采用实数编码方式, 使算法具有较高的通用性. 同时, 为了更好地与实际问题相结合, 将方程组的解X 和迭代次数K 放在的后面, 一起组成一个染色体Pop , 即:[].i i i Pop X K 其中的X 和K 都是采用实数表示, 即用原值表示. 这样更利于最佳松驰因子寻优和方程求解.3.2 遗传算子 3.2.1 选择算子选择算子采用轮盘法、锦标赛选择法和几何规划排序选择法的结合. 轮盘法的基本精神是个体被选中的概率取决于个体的相对适应度:i iif p f (4)其中: i p 个体i 被选中的概率; if 个体i 的适应度;if 群体的累加适应度.显然, 个体适应度越高被选中的概率愈大. 但是, 适应度小的个体也有可能被选中, 以便增加下代群体的多样性. 而锦标赛选择法是随机地从种群中选一定数目的()Tour 个体, 然后将最好的个体选做父个体. 这个过程重复进行完成个体的选择. 锦标赛选择法的参数为竞赛规模Tour , 其取值范围为 [ 2,N ind ] (其中N ind 是竞赛规模, 允许比2大的数) , 这里取Tour 为3, 使多样化得到一定的损失. 几何规划排序选择法是基于几何规划排序进行选择,主要是对适应度进行排序, 较好的做为父个体, 这有利于防止较好个体的破坏. 综合各自的特点, 本算法选择是先利用几何规划排序选择法对初始群体进行选择, 然后用锦标赛选择法对几何规划排序选择法得到的父群体进行选择, 最后用轮盘法选择. 这样可以提高收敛速度和搜索范围, 更有利于交叉与变异的进行. 3.2.2交叉算子算术交叉算子是实数编码遗传算法中应用最广泛的一种算子, 其采用的交叉方法是线性插值. 比如在两个体1,2之间进行算术交叉, 则交叉运算所产生出的两个新个体为*112*212(1)(1)(5)其中是在[0,1] 区间内的参数, 它可以是一个常数, 也可以是由进化所决定的变量, 本文选择为[ 0, 1 ]区间上的随机数. 3.2.3变异算子本文采用均匀变异和边界变异两种变异算子. 对其说明如下:均匀变异是指分别用符合某一范围内均匀分布的随机数, 以某一较小的概率替换个体编码串中各个基因座上的原有基因值. 其具体过程是: 假设有一个个体为12k l XX X X X .若k X 为变异点, 其取值范围为min max [,]k k U U (其中minkU 表示的是基因k X 可取值范围的最小值, 而max kU 表示最大值) , 在该点以个体X进行均匀变异后, 可得到一个新的个体''12,k l X X X X X 其中变异点的新基因值是: minm min 'ax ().k k k kU r U U X 式中r 为范围内符合均匀分布的一个随机数.边界变异是均匀变异操作的一个变形遗传算子. 在进行边界变异操作时, 随机地取基因座的二个对应边界基因之一取代原有基因值. 在进行由12k l XX X X X 向''12k l X X X X X 的边界变异时, 若变异点k X 处的基因值取范围为min max [,]k kU U ,则新的基因'k X 由下式确定:min max,, 1.kk U U如果random(0,1)=0;如果random(0,1)= (6)式中if random(0,1)表示以均匀等概率从0,1中任取其一.( 补充:由于本文中的染色体只有三个基因组成,且后面的两个基因X 和K 的值是随着基因的选取而相应变化的,所以我们本文的交叉和变异操作只针对于基因进行,这样X 和K 的值会根据适应度函数等相应产生新的值.) 3.2.4终止条件以设定的最大的遗传代数为终止条件 3.3 交叉概率c P 和变异概率m P遗传算法的参数中交叉概率c P 和变异概率m P 的选择是影响遗传算法行为和性能的关键所在, 直接影响算法的收敛性. c P 越大, 新个体产生的速度就越快, 但过大时遗传模式被破坏的可能性也越大; 但是如果 c P 过小, 会使搜索过程缓慢, 以至停滞不前. 对于变异概率m P , 如果 m P 过小, 就不易产生新的个体结构; 如果m P 取值过大, 那么遗传算法就变成了纯粹的随机搜索算法. 针对此问题, Srinvivas 等提出一种自适应遗传算法(Adaptive GA ,A GA ) , c P 和m P 能够随适应度自动改变. 本算法中,c P 和m P 根据式(7)式(8)来动态确定, 从而增加算法的进化能力和收敛速度.'12'1max '1,()(),c c avg c avgavgcc avgP P f f P f f f f P P f f (7)12max1max1,()(),m m m avgavg mm avgP P f f P ff f f P P ff (8)其中: 1212max 0.9,0.6,0.1,0.001,c c m m P P P P f 为群体中最大的适应度值;avg f 为每代群体的平均适应度值; 'f 为要交叉的两个个体中较大的适应度值; f 为要变异个体的适应度值.3.4 次超松驰迭代(A GA SOR)描述 具体算法过程描述如下:Step 1 参数接收: 接收用户输入线性方程组的系数矩阵A 、常数项b 、迭代初始值0X 和要求的精度; 确定种群规模N ;定出K 的最大限max K 的值和最大遗传代数T .Step 2 群体初始化: 随机生成N 个代入SOR 的迭代公式, 根据系数矩阵 A 、常数项b 、迭代初始值 0X 和要求的精度生成适应度函数;Step 3 计算适应度, 并保存迭代终止时的迭代次数k : 如果k 达到最大限, 则k 就等于最大限定次数; 否则按达到精度时的K 值保存;并产生N 个个体的初始种群S ;置代数计数器t 1.Step 4 寻找并保存当前代最优个体(也就是适应度值最大的个体); Step 5 进行以下遗传操作:(最初针对初始种群全体)(a) 选择算子: 按几何规划排序选择法、锦标赛选择法、轮盘法(按选择概率i P 所决定的选中机会,每次从群体中随机选定一个染色体并将其复制,共做N 次,然后将复制所得的N 个染色体组成群体1S )进行选择;(b) 交叉算子: 按式(7)计算c P 并决定出参加交叉的染色体数c ,从1S 中随机确定c 个染色体,随机配对并用算术交叉算子进行交叉,并用产生的新染色体代替原染色体,得群体2S ;(c) 变异算子: 按式(8)计算m P 并决定变异次数m ,从2S 中随机确定m 个染色体,分别进行均匀变异和边界变异两种算子,并用产生的新染色体代替原染色体,得群体3S;(d) 计算适应度: 并保存迭代次数k, 如果k达到最大限, 则k就为最大限定次数; 否则按原值保存;(e) 寻找并保存最优个体, 并用前代最优个体代替当前代的最差个体,置t t1;Step 6如果达到最大遗传代数, 则结束并输出所找到的最优松驰因子,然后转Step7; 否则转Step 5,;Step 7把代入SOR公式 , 另取精度1(使1,原可以取略大一点,加快收敛速度),得出方程的解X和迭代次数k,并结束.4 数值算例与分析为了验证本文算法的有效性,在计算机上进行了数值模拟计算.选择参数为:5 结论本文的近似确定X进化算法, 是基于遗传算法对X 的寻找而得到的, 因而, 不难把它平行地推广到对称超松驰迭代法(SSOR ) , 加速超松驰迭代法(AOR).参考文献:[ 1 ] 王世瑞, 王金金, 冯有前, 等. 计算方法[M ]. 西安: 电子科技大学出版社, 1997, 1: 33241.3 期谢竹诚, 等: 基于自适应遗传算法的逐次超松驰迭代法159[ 2 ] 马东升. 数值计算方法[M ]. 北京: 机械工业出版社, 2002, 1: 922102.[ 3 ] 李春光, 徐成贤. 确定SOR 最佳松驰因子的一个实用算法[J ]. 计算力学学报, 2002, 8, 19 (3) : 2992302.[4 ] 胡小兵, 吴树范等. 一种基于遗传算法的求代数方程组数值解的新方法[ J ]. 控制理论与应用, 2002, 19 (4) : 5672570.[ 5 ] HE Jun, XU ji2you, YAO Xin. So lving equations by hybrid evo lutionary computation techniques[J ]. IEEE T ranson Evo lutionary Computation, 2000,4 (3) : 2952304.[ 6 ] 罗亚中, 袁端才等. 求解非线性方程组的混合遗传算法[J ]. 计算力学学报, 2005,22 (1) : 1092114.[ 7 ] 周明, 孙树冻. 遗传算法原理及应用[M ]. 北京: 国防工业出版社, 1999.[ 8 ] 王小平, 曹立明. 遗传算法——理论、应用与软件实现[M ]. 西安: 西安交通大学出版社, 2002, 1.[ 9 ] 刘新胜, 张知难. 查找最佳松驰因子的一种实用方法[J ]. 新疆大学学报(自然科学版) , 2005, 5, 22 (2) : 1612164.[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]。
线性方程组的迭代解法及收敛分析
1.9583
0.8468
0.2974
9
1.0975
2.0954
2.8217
1.9788
0.8847
0.2533
10
1.0850
2.0738
2.8671
1.9735
0.8969
0.2041
11
1.0673
2.0645
2.8802
1.9843
0.9200
0.1723
12
1.0577
2.0509
2.9077
1.9828
0.9303
0.1400
13
1.0463
2.0437
2.9191
1.9887
0.9448
0.1174
14
1.0392
2.0350
2.9363
1.9886
0.9527
0.0959
15
1.0318
2.0297
2.9451
1.9920
0.9620
0.0801
16
1.0267
2.0241
Keywords:MATLAB,Mathematical model,Iterative method,ConvergenceSystem of linear equations
1
在实际生活中,存在着大量求解线性方程组的问题。这些方程组具有数据量大,系数矩阵稀疏,在一定精度保证下,只需要求解近似解等特点。线性方程组的迭代解法特别适合于这类方程组的求解,它具有程序设计简单,需要计算机的贮存单元少等特点,但也有收敛性与收敛速度问题。因此,研究线性方程组的迭代解法及收敛分析对于解决实际问题具有非常重要的作用。
东南大学数值分析编程作业
数值分析编程作业******学号:******指导老师:***目录P20.第17题:舍入误差与有效数 (3)P56.第20题:Newton迭代法 (5)P126.第39题:列主元Gauss消去法 (13)P127.第40题:逐次超松弛迭代法 (16)P195.第37题:3次样条插值函数 (22)P256.第23题:重积分的计算 (24)P307.第23题:常微分方程初值问题数值解 (26)P346.第10题:抛物方程Crank-Nicolson格式 (31)注:源程序放在对应的文件夹里,如第一题放在“P20.第17题:舍入误差与有效数”文件夹里;P20.第17题:舍入误差与有效数设2211311,--122N N+1NN j S j ==-∑其精确值为()。
(1)编制按从小到大的顺序222111+++2-13-1N -1N S =⋅⋅⋅⋅⋅,计算N S 的通用程序; (2)编制按从小到大的顺序222111+++N -1N-1-12-1N S =⋅⋅⋅⋅⋅(),计算N S 的通用程序; (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时用单精度); (4)通过本上机题你明白了什么?答 (1)(2)程序:程序放在computation.m, goon.m 文件里,运行程序时只需输入命令main(3)运行结果:N=100时,S1有6位有效数字,S2都是有效数字N=10000时,S1有4位有效数字,S2都是有效数字N=1000000时,S1有3位有效数字,S2都是有效数字(4)体会:当N从小到大变化时,SN的项从大到小,反之SN的项从小到大。
从运算结果可见,第一种计算结果总是比第2、3种计算结果小,这是由于大数吃小数的原因(计算机表示一个数值是用字节表示的,当程序进行计算时,先将第一项和第二项相加,然后再加第三项……所以加到后面会由于项的值很小,不能加到这个字节里,所以就被忽略了。
超松弛迭代法及其松弛因子的选取
电子科技大学数值分析实验报告题目:超松弛迭代法及其松弛因子的选取学生姓名:学号:日期:年月日超松弛迭代法及其松弛因子的选取问题提出:在Gauss-Seidel 迭代法基础上,人们发现通过迭代-松弛—再迭代的方法,能更加减少计算步骤,极大的缩短计算时间,在此基础上,超松弛迭代法被学者们研究出来。
在求解大型稀疏线性方程组中超松弛迭代法得到广泛应用.而SOR 迭代方法中松弛因子ω的取值直接影响到算法的收敛性及收敛速度,是应用超松弛迭代法的关键.选择得当,可以加快收敛速度,甚至可以使发散的迭代变成收敛。
因此, 超松弛因子的选取是学者们又一个研究目标.通过一些被验证的定理,我们知道为了保证迭代过程的收敛,必须要求1<ω<2,而且松弛因子和迭代矩阵谱半径之间有着密切的联系,现今学者们已经研究出部分特殊矩阵的最优松弛因子的计算公式.对于一般的矩阵,我们也可以从松弛因子和谱半径的关系着手研究最优松弛因子的选取。
问题分析:1.超松弛迭代基本知识1.1 超松弛迭代法定义[1]超松弛(Successive Over Relaxation)迭代法,简称SOR 迭代法,它是在Gauss-Seidel 法基础上为提高收敛速度,采用加权平均而得到的新算法.设解方程组的Gauss-Seidel 法记为1(1)(1)()111(),1,2,,i nk k k ii ij j ij j j j i ii x b a x a x i na -++==+=--=∑∑ (1)再由()k i x 与(1)k i x +加权平均得(1)(1)(1)()()()(1)(),1,2,,k k k k k k i i i ii x x xx x x i nωωω+++=-+=+-=这里ω>0称为松弛参数,将(1)代入则得1(1)()(1)()11(1)(),1,2,,i nk k k k iii ij jijjj j i iix x b a x a xi na ωω-++==+=-+--=∑∑ (2)称为SOR 迭代法,ω>0称为松弛因子,当ω=1时(2)即为Gauss-Seidel 法,将(2)写成矩阵形式,则得(1)()(1)()(1)()k k k k Dx Dx b Lx Ux ωω++=-+++于是得SOR 迭代的矩阵表示[3](1)()k k i x G x f ωω+=+ (3)其中1()[(1)]G D L D U ωωωω-=--+1()f D L b ωωω-=-1.2 收敛性判别条件根据迭代法收敛性定理[2],SOR 法收敛的充分必要条件为()1G ωρ<,但要计算()G ωρ比较复杂,通常都不用此结论,而直接根据方程组的系数矩阵A 判断SOR 迭代收敛性,下面先给出收敛必要条件. 定理1]4[ 设(),0(1,2,...,)n nij ii A a Ra i n ⨯=∈≠=,则解方程Ax b =的SOR 迭代法收敛的必要条件是0<ω<2. 定理2]5[ 若n nA R⨯∈对称正定,且0<ω<2,则解Ax=b 的SOR 迭代法(3)对nx R ∀∈迭代收敛.对于SOR 迭代法,松弛因子的选择对收敛速度影响较大,关于最优松弛因子研究较为复杂,且已有不少理论结果.下面只给出一种简单且便于使用的结论. 1.3 收敛速度的估计SOR 迭代法的迭代矩阵G ω与ω有关,当选取不同的ω时,其迭代速度也有所不同.因此,需要找到最优的松弛因子b ω,使对应b ω的SOR 方法收敛最快. 定理3]7[ 设n A Rn⨯∈,如果存在排列矩阵P ,使1122T D M PAP M D =其中,1D ,2D 为对角矩阵,则称A 是2-循环的.此外,若当0α≠时,矩阵11-1D U D L αα--+的特征值都和α无关,则称A 是相容次序矩阵.定理4]7[ 设n A Rn⨯∈,A 有非零的对角元,且是2-循环和相容次序的矩阵.又设1(U)J B D L -=+是方程组A x b =的Jacobi 法迭代的迭代矩阵,且2B 的所有特征值均在(0,1)上,若()1J B ρ<,记()J B μρ=,则SOR 法的最优松弛因子b ω为2211b ωμ=+-且222[4(1)],0()41,2bb G ωωμωμωωωρωωω⎧+--⎪<<=⎨⎪-<<⎩02()min ()bb G G ωωωρρ≤≤=图12 松弛因子选取方法方法思想]8[:(1)给出ω的范围,当取不同的ω值时,进行迭代,在符合同一个精度要求下依次求出谱半径的值,比较出最小的谱半径,那么这个最小的谱半径所对应的的ω,即为所求最佳松弛因子.(2)给出ω的范围,当取不同的ω值时,进行迭代,看它们在相同精度范围内的迭代次数,找到迭代次数最少的那一个,其所对应的ω即为最佳松弛因子.”2.1 逐步搜索法 算法:Step 1:读入线性方程组的系数矩阵,常数向量,初值,精度,给出ω的取值范围,以及其变化步长;Step 2:按照如下公式迭代(1)()k k i x G x f ωω+=+找出符合精度要求ε的迭代次数及谱半径;Step 3:循环迭代,最后找到最优松弛因子Step 4: 改变ω的取值范围,重新设定变化步长,重复Step2. 2.2 黄金分割法从定理4我们可以看到,最优松弛因子对应的谱半径最小,而黄金分割法对于数值求解单调函数的极小和极大值是非常方便和有效的]9[,因此,我们可以把黄金分割法应用在求最优松弛因子上,其算法与主要思想是: Step1:利用优选法思想,在)2,1(之间选取四个点,12441314141,0.618(),0.618(),2p p p p p p p p p p ==--=+-=Step 2: 分别取2p 与3p 作为松弛因子代入迭代程序,比较出最少的迭代次数,如果对2p 应的迭代次数少,则选取),(31p p 作为收敛区间,如果是对应的3p 迭代次数少,则选取),(42p p 作为收敛区间.Step 3: 在所选取的收敛区间里循环进行上述的两个步骤,直到选取出满足精度要求且2p ,3p 所对应的迭代次数差不超过某个数∆时选3p 为最优松弛因子.3 数值算例例1: 矩阵3101130000311013A -⎡⎤⎢⎥-⎢⎥=⎢⎥-⎢⎥-⎣⎦(1,2,2,1)T b =----,精度为161.0*10k k x x ---≤解法1:黄金分割法令05.0=∆,程序结果如下:由上可以看出我们只需作几次0.618法就可以找到最优松弛因子,本例中最优松弛因子0901.1=ω,迭代次数为8次.解法2:逐步搜索法,步长为0.1,21<≤ω程序结果如下:图3图3中,其横坐标表示松弛因子,纵坐标表示谱半径.也可以求出最优松弛因子为1.1,迭代次数为8.然后我们改变松弛因子区间,令1.11≤≤ω以步长为0.01来继续求更精确的松弛因子.程序结果如下:图4图4中,其横坐标表示松弛因子,纵坐标表示谱半径.这样继续缩小松弛因子范围,以更小的步长求得的最优松弛因子为1.0900,更加精确. 例2 方程组A x b =,⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=40001-1-1-0004001-01-1-0004001-1-01-0004001-1-1-1-1-00400001-01-00400001-1-1-0040001-01-00040001-1-00004AT (2,2,0,2,2,1,1,1,1)b =.精度为161.0*10k k x x ---≤.初始迭代值为0(0,0,0,0,0,0,0,0,0)T x =.求最优松弛因子.解法1 黄金分割法令001.0=∆,程序结果如下:求得最优松弛因子为1.1772. 解法2 逐步搜索法首先以21<≤ω,步长为0.1搜索求得的最优松弛因子为1.2000,然后重新设定范围,以步长为0.01运行程序在改变范围,以步长为0.001运行,程序结果如下:求得的最优松弛因子为1.1780.由这两个例子可以看出利用黄金分割法求最优松弛因子比用逐步搜索法更加简便快速,但是用逐步搜索法步长取的很小时求得的松弛因子比黄金分割法更加精确。
超松弛迭代法解线性方程组
. ...设计题目:超松弛迭代法解线性方程组摘要本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变量超松弛迭代法的理论基础对方程组求解。
首先,本文以微分方程边值问题为例,导出了离散化后线性方程组即稀疏线性方程组,转化对稀疏线性方程组求解问题。
其次,用超松弛( SOR) 迭代法编写matlab程序,对产生的稀疏线性方程组进行迭代法求解。
然后,分别改变松弛因子ω和分段数n的值,分析其收敛性和收敛速度,做出各个方面的分析和比较得到相关结论。
最后,将超松弛迭代算法在计算机上运用matlab语言实现, 得出了一组与精确解较接近的数值解,并画图比较,验证逐次超松弛( SOR) 迭代法的精确性。
关键词:稀疏线性方程组逐次超松弛迭代法松弛因子matlab编程一、问题提出考虑两点边值问题()()⎪⎩⎪⎨⎧==<<=+.11,00,10,22y y a a dxdy dx y d ε 容易知道它的精确解为.1111ax e e ay x+⎪⎪⎭⎫ ⎝⎛---=--εε为了把微分方程离散,把[]1,0区间n 等分,令nh 1=,ih x i =,,1,,2,1-=n i 得到差分方程,21211a h y y hy y y ii i i i =-++-++-ε简化为()(),2211ah y y h y h i i i =++-+-+εεε从而离散后得到的线性方程组的系数矩阵为()()()()⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡+-++-++-++-=h h h h h h h A εεεεεεεεεε2222对1=ε,4.0=a ,200=n ,分别用1=ω、5.0=ω和5.1=ω的超松弛迭代法求解线性方程组,要求有4位有效数字,然后比较与精确解的误差,探讨使超松弛迭代法收敛较快的ω取值,对结果进行分析。
改变n ,讨论同样问题。
二、超松弛迭代法产生的背景对从实际问题中得到维数相当大的线性代数方程组的求解仍然十分困难, 以至使人们不能在允许的时间内用直接方法得到解, 因此, 客观上要求用新的方法来解决大维数方程组的求解问题。
第六章第三节逐次超松弛迭代法
则说 A 是具有相容次序的矩阵.
注意:
若矩阵 A aij 具有相容次序, 则属于同一子集的元素之间没有联系, 即若 i, j Wk , aij 则
0, , a ji 0 . 且
例3
0 0 1 4 1 4 1 0 A 0 1 4 0 0 4 1 0
x0i (i 1,, n) ;参数 ;容限 TOL ;最大迭代次数 m
输出 近似解 x1 , x2 , x n 或迭代次数超过 m 的信息.
step 1
对 k 1,, n 做 step2—4. 对 i 1,2,, n
step 2
xi (1 ) x0i
step 3 step 4 对 i 1,2,, n
定理 1 设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0, i 1,, n ,则 SOR 方法
收敛的充分必要条件为
(T ) 1
其中 T 是 SOR 方法的迭代矩阵.
定理 2
设方程组 Ax b 的系数矩阵 A 的主对角元素 aij 0, i 1,, n ,则 SOR 方法
2
x 我们把(3.1)式中的中间 ~i( k ) 消去,则有
i 1 ~ ( k ) (b a x ( k ) xi ij j i aii j 1
j i 1
a
n
ij
x (jk 1) ) (1 ) xi( k 1)
i 1,2,, n, k 1,2
3
例1 方程组
5 x1 x 2 x3 x 4 4 x 10 x x x 12 2 3 4 x1 x 2 5 x3 x 4 8 x1 x 2 x3 10 x 4 34
第五节松弛法
−1
定理 设 A 可逆,且 aii ≠ 0,松弛法从任意 x ( 0 ) 出发对 可逆, ,
n i −1 1 ( k 1) ∆x i( k ) = (bi −x∑+a ij x (jk +1) − ∑ a ij x (jk ) ) − xi( k ) i a ii j =1 j = i +1
∆xi( k )
( k +1) = ( xi
− xi( k ) )
第k + 1次迭代与第 k次迭代的差, 作为改进的方向!
ω相当于步长 .
几何表示
x
( k )
=x
(k )
=
x i( k )
( k + 1) +ω(xi
( k + 1)
− x i( k ) )的意义 .
(1 − ω ) + ω x
x ( k +1) = x ( k ) + ∆x ( k ) i −1 n 1 ∆x i( k ) = (bi − ∑ a ij x (jk +1) − ∑ a ij x (jk ) )记作x ( k +1) i a ii j =1 j =i i −1 n 1 (k ) ( k +1) (k ) (k ) ∆x i = (bi − ∑ aij x j − ∑ a ij x j ) − xi aii j =1 j = i +1
证明: 证明:
Lω = ( D − ω L ) − 1 [( 1 − ω ) D + ω U ]
det( Lω ) = ∏ λ i
i =1 n
,而且收敛 ⇔ | λi | < 1 总成立
对称超松弛迭代法 概述及解释说明
对称超松弛迭代法概述及解释说明1. 引言1.1 概述本篇文章旨在介绍对称超松弛迭代法的概述及解释说明。
对称超松弛迭代法是一种用于求解线性方程组的数值方法,它结合了迭代法和超松弛方法,能够在求解大型稀疏线性方程组时展现出良好的效果。
本文将从原理、算法流程以及应用和效果等方面进行详细说明,以帮助读者更好地理解该方法。
1.2 文章结构本文共分为四个部分:引言、对称超松弛迭代法概述、解释说明和结论。
在引言部分,我们将简要介绍本篇文章的主题和目的,并提供文章整体结构;在对称超松弛迭代法概述部分,我们将对迭代法、超松弛方法和对称超松弛迭代法进行逐一讲解;接着,在解释说明部分,我们将详细阐释该方法的原理,并提供算法流程说明,最后通过应用实例和效果分析来展示其实际应用价值;最后,在结论部分,我们将总结回顾全文内容,并展望未来对该领域的研究方向。
1.3 目的介绍对称超松弛迭代法的目的是为了提供一种有效求解线性方程组的数值方法,特别适用于复杂、大规模和稀疏问题。
本文旨在向读者介绍其背后的原理,阐明其算法流程,并通过实际应用和效果分析来证明其可行性和优越性。
最终目标是为读者提供一个全面而清晰的概述,帮助读者理解和运用对称超松弛迭代法解决实际问题。
2. 对称超松弛迭代法概述:2.1 迭代法简介:在数值分析和计算数学中,迭代法是一种通过从一个初始猜测值开始反复应用一个递归公式来逼近方程解的方法。
它广泛应用于线性方程组的求解问题。
不论是在工程领域还是科学研究中,线性方程组求解都是一个常见且重要的问题。
2.2 超松弛方法简介:超松弛方法(SOR)是迭代法中的一种技术,旨在加速收敛速度。
其核心思想是通过引入松弛因子来加快解的收敛过程。
对于每次迭代,在计算新解的分量时,超松弛方法允许我们使用之前已经更新但尚未完成全部迭代的分量进行估计。
该技术通常用于缩小残差并提高数值精度。
2.3 对称超松弛迭代法概述:对称超松弛(SSOR)迭代法结合了对称后退向前(SWEEP)和超松弛(SOR)的思想。
最优超松弛因子的一种确定方法及其在裂纹计算中的应用
Onteb s fG le e t ns rh m to ,te0 aeo vd ns,i e c eh d h 呻 h eo a
S R fco a v lae vot 0 a t r seau t b pi d mmnse igmeh d "t to sroe e kn to le me d i r r t h I
WANG o g Yn
( e ac nt eo hm ̄ ehnc n niei 帆 Rs r s e hI at fCe idM caiadEgn rg, c e ̄ n
摘要
U brt H nzo 107 hn ) n ̄sy, aghu302,Cia i
结舍黄金分割法 , 提出一种最优松弛 因子 的优选法 该 方法区别 于常用 的直接计算求取 的方法 和试错法 , 具
e e t e a d c n e im h n oh r to sicu igt a a d e//meh d n i c n ac lt g meh d .Nm e c le a l f f ci n o v ne ta t e h d ldn r l n l - t s a d dr t gc luai to s v me n i o o ei n n a x mpe o s f c r c a i r ie en t t t te i, n h rp sd meh d l e f eo ̄ r t e me h nc ae g n t d ro Q ae h L fte p r o e to ."l a tr au s v O xr e e  ̄ t
一
般偏微分方程的数值解产生的方程组总可表示
A u=b () 1
因子 的值。对于最优松弛因子的确定 , 已有很多学
SOR迭代法超松弛因子选取
《计算方法》实验报告(二)实验名称:SOR 迭代法松弛因子的选取班级: 数学1402班 姓名: 高艺萌 学号:14404210一、 实验目的通过本实验学习线性方程组的SOR 迭代解法以及SOR 迭代法的编程与应用。
对比分析不同条件下的超松弛因子w 的取值大小会对方程组的解造成影响,通过这个实验我们可以了解的w 不同取值会对方程组的解产生的影响。
培养编程与上机调试能力。
二、 实验题目用逐次超松弛(SOR )迭代法求解方程组b Ax =,其中⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=555555122-12-122-112-122-112-122-112-122-12-12201918321 x x x x x x A (1)给定迭代误差,选取不同的超松弛因子1>ω进行计算,观察得到的近似解向量并分析计算结果,给出你的结论;(2)给定迭代误差,选取不同的超松弛因子1<ω进行计算,观察得到的近似解向量并分析计算结果,给出你的结论;三、 实验原理1.逐次超松弛迭代法可以看作Gauss-Seidel 迭代法的加速,b D Ux D Lx D x k k k 1)(1)1(1)1(--+-+++=2.SOR 迭代计算格式b D L wD I w x U wD I w L wD x k k 111)(111)1()(])1[()-1(------+-++-= 其中,w 叫松弛因子,当w>1时叫超松弛,0<w<1时叫低松弛,w=1时就是Gauss-Seidel 迭代法。
3.利用SOR 迭代算法进行求解。
4.算法原理:SOR 迭代法%masor.mfunction x=masor(A,b,omega,x0,ep,N)n=length(b);if nargin<6,N=500;endif nargin<5,ep=1e-6;endif nargin<4,x0=zeros(n,1);endif nargin<3,omega=1.5;endx=zeros(n,1);k=0;while k<Nfor i=1:nif i==1 x1(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);else if i==n x1(n)=(b(n)-A(n,1:n-1)*x(n:n-1)/A(n,n);elsex1(i)=(b(i)-A(i,1;i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i); endendx(i)=(1-omega)*x0(i)+omega*x1(i); endif norm(x0-x,inf)<ep,break;endk=k+1;x0=x; endif k==N Warning; enddisp([’k=’,num2str(k)])运行程序四、实验内容根据实验题目,分别对问题一,问题二进行求解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.SSOR-PCG法改进的迭代格式
SSOR法在每步迭代中,需计算系数矩阵与方向向量的乘积,下面引用了该法的改进迭
代格式,避免了该乘积的计算,比原迭代格式节省计算量8%—50%。
SSOR法的改进迭代格式[3]为:
置初值 δ 0 , g 0 = Kδ 0 − R, y 0 = W −1g 0 , z 0 = −Vy 0 , d 0 = W −T z 0 , k = 0 ,
-0.943297E-01
0.154 0.106 0.132 0.106 0.024
运行时间
表2
二者运算时间比较
Marc计算
1分32秒
本文算法计算 17秒
通过所列的表1和表2观察可以发现,本文算法所求出的位移与大型商业软件MARC相比 较精度误差很小,具有较高的精度,且在保证精度的基础上计算时间也大大缩短,有很高的
j =1
j =i +1
j =1
j =i +1
i −1
n
n
i −1
n
∑ ∑ ∑ ∑ ∑ > ( λ − 1 + ωi )Iii − λ ( ωi aij + ωi aij ) > ( λ − 1 + ωi )Iii − λ ( ωi aij + ωi aij + ωi aij )
j =1
j =i +1
黄金比例分割法确定对称逐次超松弛迭代法的最佳 松弛因子
张德宣,杜成斌,孙立国
河海大学工程力学系,南京 (210098)
E-mail:zdx.1234@
摘 要:本文提出了将黄金分割法确定松弛因子与对称逐次超松弛法的改进迭代格式相结合 的迭代算法。算法应用黄金比例分割法确定最佳松弛因子,成功的将其与运行速度和效率很 高的对称逐次超松弛法的改进迭代格式相结合,并给出了迭代收敛性证明,编写了相应的程 序,对一实际结构进行的算例计算表明,与大型商业软件的计算结果相比较,本文所提算法 具有精度高,收敛快的优点。 关键词:黄金分割;对称逐次超松弛法;松弛因子
-0.147813E-01
y
-0.942368E-01
-0.942186E-01
x
0.431350E-04
0.432271E-04
y
-0.353197E-01
-0.352766E-01
x
0.329006E-03
0.328835E-03
误 差% 0.194 0.082 0.061 0.343 0.145
表1 方向
x y x y x
本文算法与MARC计算节点位移比较
MARC 解
本文算法解
-0.315654E-03
-0.315041E-03
-0.151406E-03
-0.151282E-03
-0.130349E-01
-0.130269E-01
-0.354377E-01
-0.353946E-01
-0.148028E-01
(1)
( ) R: α = y k ,Vy k
式中 ( , ) 为内积表示,下同。
如果α ≤ ε ,则停止,否则
-1-
⎧τ ⎪
k
⎪δ k
=
+1
( y k ,Vy k ) /(d k ,2z k = δ k +τkdk,
− Vd k ),
⎪ ⎪
y
k
+1
=
避免了计算Ad,比原迭代格式可省 (ra − 2)n 次乘法运算, ra 为A的各行非零元素的平均个
数。因此, ra = 3 是改进迭代格式节省计算量约8﹪; 2ra >> 6 时,可节省计算量约50﹪,
各迭代步计算量接近CG(共轭梯度)法的计算量。
3.松弛因子的选取
本文采用上述对称逐次超松弛法的改进迭代格式求解大型线性方程组,将黄金分割法确 定松弛因子与之相结合,松弛因子的取值对迭代公式的收敛速度影响很大,它的好坏直接影
0.019 0.213 0.122 0.052
y
10151
x
y
10251
x
y
注:表中节点位置参见图1.
-0.168963E-03 0.131212E-01
-0.355535E-01 0.149818E-01
-0.943525E-01
-0.168703E-03 0.131073E-01
-0.355067E-01 0.149659E-01
的迭代次数少,则选取(dot1, dot2)作为收敛区间,如果是dot3对应的迭代次数少,则选取(dot3, dot4)作为收敛区间。
(3)在所选取的收敛区间里循环进行上述的两个步骤,直到选取出迭代次数最少时所对应 的最佳松弛因子。
通过本文中所采用的算例验证,本文方法确定松弛因子的加速效果是明显的,计算的时 间相对较短。在SSOR法改进迭代格式中采用黄金比例分割的综合算法就可以根据不同的具 体工程问题确定最佳松弛因子,该算法简单明了,而且效果显著,大大节省了选取最佳松弛 因子的时间,提高了大型有限元方程组计算的收敛速度。
yk
+τ k (d k
+W
−1 (z k
− Vd k )),
⎪⎪β ⎨
k
= ( y k+1,Vy k+1 ) /( y k ,Vy k ),
(2)
⎪z k+1 = −Vy k+1 + β k z k ,
⎪⎪d k+1 = W −T z k+1 ,
⎪k = k + 1, ⎪⎪⎩转到R
从迭代格式可见,由于V是对角阵,计算Vy和Vd为2n次乘法运算。改进的迭代格式由于
会延长许多,是很不经济的。 黄金分割比例法是一种经典的算法,本文即采用此种方法来确定最佳松弛因子,其具体
步骤和主要思想如下: (1)利用优选法思想,在(1,2)之间选取四个点,即: dot1=1,dot2=dot4-0.618(dot4-dot1),dot3=dot1+0.618(dot4-dot1),dot4=2 。 (2)分别取dot2与 dot3作为松弛因子代入迭代程序,比较出最少的迭代次数,如果dot2对应
i, j =1
j =1
j =i+1
∑ ∑ ∑ n
> ( λ − 1 + ωi )Iii − λ ωi aii
i =1
= ⎜⎜⎝⎛ λ
−1+ ωi kn
−
λ ωi
⎟⎟⎠⎞
n i =1
aii
=
⎜⎜⎝⎛
λ
(1 −
k nωi ) kn
+
(ωi
−1) ⎟⎟⎠⎞
n i =1
aii
由1 < ω
<
2 ,进而 ωi
−1 >
差缩小10−s 所需最小迭代次数为 k ≥ s ln10 ,称 R(B) = − ln ρ(B) 为迭代法收敛速度。 − ln ρ(B)
n
∑ 定义3[6] A = (aij )n×n ,如果A的元素满足 aij ≥ aij (i, j = 1,2L, n) ,称A为对角占优矩 j =1 j≠i
n
∑ 阵,记为 A ∈ D0 ;而当 aij > aij (i, j = 1,2L, n) 时,称A为严格对角占优矩阵,记为 j =1 j≠i
减少迭代次数,这并无规律,完全取决于计算当时的情况,如结构划分单元的多少及计算精
度等因素都有一定的关系。
5.算例
设一悬臂梁长20m,高5m,厚1m, 如图1所示。材料弹性模量E=2.1E7,泊松比ν =0.167,
不计自重,上表面受1000 N/m 的均布荷载。网格划分为平面四节点单元,长度方向200等分, 高度方向50等分,则节点总数为10251,单元总数为10000。
4.收敛性证明
定义1[4] 设A∈ C n∗n , λ1, λ2 ,L, λn 为A的特征值,我们称
-2-
ρ
(
A)
=
max i
λi
(3)
为A的谱半径。
定义2[5] 由 0 < ρ (B) < 1 ,且误差向量 ε (k) = x (k) − x∗ 满足 ε k = B k ε (0) ,推出欲使初始U 为严格对角占优矩阵,所以 A = D − L − U ≠ 0 ,由于 I − ωL 也为对
角阵,从而 I − ωL −1 ≠ 0 。
分析式(7)后半部分,并由 λ ≥ 1 可得
-3-
i −1
n
i −1
n
∑ ∑ ∑ ∑ (λ − 1 + ωi )Iii − λ ωi aij − ωi aij ≥ ( λ − 1 + ωi )Iii − λ ωi aij − ωi aij
λ < 1 ,结合定义1可知谱半径 ρ (Lω ) < 1,则该迭代方法收敛。
本文论证出了改进的SSOR迭代法收敛的一个充分条件,而由引理1并结合定义2可知,
迭代次数与收敛速度成反比,即 ρ (B) 越小,迭代收敛速度R(B)越快。而一般来说迭代矩阵
B的谱半径 ρ(B) 对ω 极为敏感,但是究竟是ω 取值大能减少迭代次数,还是ω 取值小可以
图1 悬臂梁网格剖分示意图
表1为本文算法与大型商业软件MARC计算的节点位移比较,表2为两者运算时间的比较 (采用的计算机配置为:Pentium(R) D CPU 2.80 GHz , 1.00 GB 内存)。
-4-
节点 2
101 201
5126 10052
1.引言
线性代数方程组 Ax = b (其中A为非奇异系数矩阵,b为列向量)的迭代解法通常有