线性代数方程组中的预处理共轭梯度法

合集下载

共轭梯度法

共轭梯度法
Hesteness和Stiefel于1952年为解线性方程组而提出
•基本思想:把共轭性与最速下降法相结合,利用已 知点处的梯度构造一组共轭方向,并沿着这组方 向进行搜索,求出目标函数的极小点
4.4共轭梯度法
先讨论对于二次凸函数的共轭梯度法,考虑问题
min f (x) 1 xT Ax bT x c
3, giT d (i) giT gi (蕴涵d (i) 0)
证明: 显然m1,下用归纳法(对i)证之.
当i 1时,由于d (1) g1,从而3)成立,对i 2时, 关系1)和2)成立,从而3)也成立.
4.4共轭梯度法
设对某个i<m,这些关系均成立,我们证明对于i+1
也成立.先证2),
因此
2 / 3 1 5/ 9
d (2)



1/ 1
3

1 9

2 0



5/9 1

从x(2)出发,沿方向d (2)进行搜索,求步长2,使满足 :
f
( x (1)

2d (1) )

min
0
f
(x(2)

d (2))


2 0

4.4共轭梯度法
显然, d (1)不是目标函数在x(1)处的最速下降方向.
下面,我们用FR法构造两个搜索方向.
从x(1)出发,沿方向d (1)进行搜索,求步长1,使满足 :
f
( x (1)
1d (1) )

min
0
f
( x (1)

d (1) )
得1 2 3
A正定,故x是f(x)的极小值点.

共轭梯度法原理

共轭梯度法原理

共轭梯度法原理共轭梯度法是线性代数中一种求解稀疏矩阵下的大规模线性方程组的方法。

它的优点是它具有迭代次数小的特点,同时也能得到比较准确的解。

共轭梯度法基于梯度下降法,但是避免了梯度下降法的缺点。

梯度下降法每一次迭代都需计算整个向量的梯度,这在高纬度数据中非常复杂,同时使用步长较大时又容易产生来回震荡的现象。

共轭梯度法的优点是在每一次迭代都会寻找一个与上次方向不同的方向,这点可以消除梯度下降法的缺陷。

令A为若干个线性矩阵的乘积,如果我们要解矩阵方程Ax=b,其中b是已知向量,求解的x向量是未知向量。

首先,我们可以用梯度下降法求出一个初值向量x0,称之为迭代初始值。

然后,我们可以利用高斯打乘法和高斯消元得到向量P,并设向量R0=Ax0-b,然后再设P逆矩阵为Pt。

共轭梯度法迭代的主要步骤如下:1. 根据目标函数和梯度函数确定初值x0;2. 初始化残差向量r0=b-Ax0,并设置迭代数k=0;3. 设置搜索方向向量p0=r0;4. 使用一维搜索方法(如Armijo步长准则)寻找最优步长αk;5. 将搜索方向向量移动到新的位置:xk+1=xk+αkp,计算新的残差rk+1=rk+αkAp;6. 如果rk+1=0或者迭代次数已达到设定值,则停止迭代;否则:7. 确定下一个搜索方向pk+1,并重复步骤4-6直到满足收敛条件。

共轭梯度法迭代的优点是每一步都在原解空间的一个线性子空间中求解,因此不需要保存全部解向量,从而大大减少了计算量和存储空间,特别适用于高纬度的线性方程组的求解。

在参数优化、图像处理和物理模拟等领域中广泛应用。

在参数优化中,共轭梯度法可以加速大规模函数的梯度计算,从而加快参数搜索的速度;在图像处理中,共轭梯度法常用于求解稀疏线性系统,例如图像压缩、图像去噪和图像恢复等;在物理模拟中,共轭梯度法可以用于求解偏微分方程组、流体力学问题和计算机视觉等领域。

3_共轭梯度法

3_共轭梯度法

共轭梯度法
基本思想
CG的基本思想是把共轭性与最速下降法相结合,利用已 知点处的梯度构造一组共轭方向,并沿着此组方向进行搜索, 求出目标函数的极小点。
d k f ( xk ) k 1d k 1 , k 1,2,..., n 1.
定义--共共轭梯度法的形式 (A) 正定二次函数的无约束最优化问题的共轭梯度法形式
共轭方向法和共轭梯度法
问题1:
如何建立有效的算法?
从二次模型到一般模型.
问题2: 什么样的算法有效呢? 二次终止性.
简介
共轭方向法和共轭梯度法
共轭梯度法是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导 数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储 和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组 最有用的方法之一,也是解大型非线性最优化最有效的算法之一.
注意
由于Rn中共扼方向最多有 n 个,因此在用上述二种方法求 解目标函数为非二次函数的无约束最优化问题(7.1.1)时,在 n 步之后构造的搜索方向不再是共轭的,从而降低了收敛速度克 服的办法是重设初始点,即把经过 n 次迭代得到的 xn 作为初始 点重新迭代.
算法步骤—FR共轭梯度法
共轭梯度法
Step1: Step2: Step3: Step4: Step5: Step6: Step7:
注: 若 G I ,则
因此, 共轭是正交的推广. 定义--共轭方向法
是正交的,
共轭方向法
性质
特例
n
共轭方向法
算法步骤
Step1: Step2: Step3: Step4:
Step5:
共轭方向法
特例

——共轭梯度法ppt课件

——共轭梯度法ppt课件

r ( k 1 ) , r ( k 1 ) r ( k ) kr ( k ) k 1 p ( k 1 ) , A p ( k )
1 r(k1),r(k1)
k
r(k),Ap(k)
r(k1), r(k1)
r(k), r(k)
共轭梯度法
算法 :(共轭梯度法 )
(1) (x) 的梯度为:
(x) x 1, Rn 和 R,有
(x y ) 1 A (x y ),x y b ,x y 2 2A y,y(A xb,y)(x) 2
(3) 令 x*=A-1b,那么有
( x ) 1 b T A 1 b b T A 1 b 1 b T A 1 b 1 A x ,x
计算方法
第六章 线性方程组的迭代解法
—— 共轭梯度法
本讲内容
共轭梯度法
最速下降法 共轭梯度法 共轭梯度法的收敛性分析
等价问题
思索线性方程组:Ax = b ,其中 A 对称正定 作二次泛函 (x): Rn R
(x )1(A x ,x ) (b ,x )1x T A xx T b
2
2
(x) 具有以下性质:
证明:板书
共轭梯度法
k 与 k 的计算
k r ( k ) , p ( k ) p ( k ) , A p ( k ) r ( k ) , r ( k ) p ( k ) , A p ( k )
k r ( k 1 ) ,A p ( k ) p ( k ) ,A p ( k )
共轭梯度法
详细作法:令 p(0) = r(0) ,设 x(k) 曾经求得,那 么 x(k+1) 由下面的公式确定:
x(k1)x(k)kp(k)
其中
p(k)r(k)k1p(k1)

计算方法——共轭梯度法求解线性方程组

计算方法——共轭梯度法求解线性方程组
x( k 1) x( k ) k d ( k )
(2)
(k)
共轭梯度法中关键的两点是迭代格式(2)中最佳步长k 和搜索方向 d
(k) (k)
的确定。其
中k 可以通过一元函数f(x +d )的极小化来求得,其表达式为公式(3);取 d (0) = r(0) = b-Ax(0),则 d(k+1) = r(k+1) +kd(k),要求 d(k+1)满足 (d(k+1) , Ad(k)) = 0,可得k 的表达 式(4)。
计算方法上机报告
计算方法上机报告
1 共轭梯度法求解线性方程组
1.1 算法原理及程序框图 当线性方程组 Ax = b 的系数矩阵 A 是对称正定矩阵是,可以采用共轭梯度法对该 方程组进行求解,可以证明,式(1)所示的 n 元二次函数 1 f ( x ) x T Ax bT x (1) 2 取得极小值点 x*是方程 Ax = b 的解。共轭梯度法是把求解线性方程组的问题转化为求 解一个与之等价的二次函数极小化的问题。从任意给定的初始点出发,沿一组关于矩 阵 A 的共轭方向进行线性搜索,在无舍入误差的假定下,最多迭代 n 次(其中 n 为矩 阵 A 的阶数) ,就可求得二次函数的极小点,也就求得线性方程组 Ax = b 的解。其迭 代格式为公式(2)。
4
1 1
1 0 ,b 2 1 0 1 1 2
计算方法上机报告
矩阵 A 的阶数取 200 进行求解。 由于该线性方程组的系数矩阵阶数比较大,而且具有一定的规律,因此首先用 matlab 编程将系数矩阵、右端项以及阶数保存在 D 盘根目录的三个文件中(生成系数 矩阵, 右端项以及阶数的程序见附录 2) , 然后运行共轭梯度法程序进行方程组的求解。 最终的运行结果为图 4 和图 5。程序运行之后 D 盘根目录下生成的文件如图 6 所示。

共轭梯度法求解线性方程组

共轭梯度法求解线性方程组

实验1 共轭梯度法求解线性方程组1.算法原理2.程序框图3.程序使用说明。

本程序使用MATLAB来求解线性方程组Ax b源程序文件“gongetidu1.m”为共轭梯度法源程序,x为方程组的解,k为迭代次数,A为方程组的系数矩阵,b为方程组的右端项,ep为精度。

定义A, b,ep后,在命令窗口输入[x,k] = gongetidu1(A,b,ep),回车后即可算出方程组的解和迭代次数。

源程序文件“gongetidu2.m”为共轭梯度算例3.2中构造A,b矩阵的程序。

定义阶数n的数值后,在命令窗口输入[A,b] = gongetidu2(n)即可算出A, b矩阵。

4.算例计算结果此算例为课本113页计算实习3.2.首先,设定MATLAB的数值格式为“long”。

当n=100时,在命令窗口中输入“[A,b]=gongetidu2(100)”,回车后可得到A 和b的矩阵;假设精度ep = 10-3,然后在命令窗口输入“[x,k] = gongetidu1(A,b,10^-3)”即可算出方程组的解x和迭代次数k。

x=( 0.999999999999988,0.999999999999995,1.000000000000009,···0.9999 99999999997,0.999999999999998 )T(x向量一共有100个元素)k=49.同理,可以算出n=200,400的结果。

n=200时,同样假设精度ep = 10-3,结果为:x=( 0.999999999999974,1.000000000000023,0.999999999999935,···1.000000 000000029, 0.999999999999987)T (x向量一共有200个元素)k=99.n=400时,同样假设精度ep = 10-3,结果为:x=( 1.000000000000017,0.999999999999846,1.000000000000039,···0.99999999 9999881,1.000000000000062)T (x向量一共有400个元素)k=199。

利用共轭梯度法求解线性方程组

利用共轭梯度法求解线性方程组

利用共轭梯度法求解线性方程组翟莹1012205052在自然科学和工程技术中很多问题的解决常常归结为解线性方程组,而这些方程组的系数矩阵大致可分为两种:低阶稠密矩阵和大型稀疏矩阵。

而求解方程组的方法通常为直接法和迭代法。

直接法用于较低阶方程组的求解,效率较高;迭代法更适用于高阶方程组的求解,常用的经典迭代法有高斯-赛德尔迭代法和雅各比迭代法,但收敛效率较低;共轭梯度法(CG)以较高的收敛速度而经常被采用。

从理论上讲,一个n阶方程组最多迭代n 步就可求出精确解。

1 直接法直接法就是经过有限步算术运算,无需迭代可直接求得方程组精确解的方法。

但实际计算中由于舍入误差的存在和影响,这种方法也只能得到线性方程组的近似解,该方法是求解低阶稠密矩阵方程组的有效方法。

如Cramer法则,Gauss消元法及其变形(LU分解法、Cholesky 分解法、QR分解法)等。

Matlab中,用矩阵除法“/”或“\”直接求解线性方程组(见附录一),它是一个内部包含着许许多多的自适应算法,对超定方程用最小二乘法求解;对欠定方程因为它的解不唯一,Matlab给出所有解中范数最小的一个特解;对于三对角阵方程组,采用追赶法求解。

2 迭代法迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法。

该方法具有对计算机的存贮单元需求少,程序设计简单、原始系数矩阵在计算过程中不变等优点,是求解大型稀疏矩阵方程组的重要方法。

迭代法不是用有限步运算求精确解,而是通过迭代产生近似解逼近精确解。

如Jacobi迭代、Gauss-Seidel迭代、SOR迭代法等。

在科学研究和大型工程设计中提出的求解问题,经离散后,常常归结为求解形如Ax = b 的大型线性方程组,此时系数矩阵A和b是通过测量或其它方法得到的,但是在多数情况下方程可能是病态的,即A的条件数非常大。

此时,我们仍然用Matlab中的常规算法,得到的解则可能不是真解。

通常情况下,对系数矩阵A和方程的右端b作微小的扰动,再用上述方法求解,扰动后方程组的解与原方程组的解相差甚远。

线性方程组的共轭梯度法30页PPT文档

线性方程组的共轭梯度法30页PPT文档
W(3) =W*
W(1)
W(2)
沿两个相互正交的方向,进行精确一维搜索, 即可得到最优解(二维情形)
罗林开
模式识别与智能系统研究所
2020/6/27
6
n维情形: 沿相互正交的n个方向,进行精确 一维搜索,至多迭代n次,即可得到正定二次 函数
f (w) 1 wT w rT w 2
的最优解w* r.
f (x) f (x*)f (x*)T(xx*)1(xx*)T A(xx*) 2
f (x*)1(xx*)T A(xx*) 2
因此f (x)的等高面是一簇超椭球面.
罗林开
模式识别与智能系统研究所
2020/6/27
9
x(3) =x* d(2)
x(1) d(1) x(2)
从x(1)出发,沿d(1)作一维搜索,与等高面相切于x(2),记d(2) x* x(2), 再沿d(2)作一维搜索,即可得到最优解x*.由于(d(1))Tf (x(2)) 0, 因此(d(1))T Ad(2) (d(1))T A(x* x(2)) (d(1))T(Ax* Ax(2))
f (w ) f (w *) f (w *)(w w*)
1 (w w *)T I (w w *) 2
f ( w * ) 1 || w w * ||2 . 2
因 此 f ( w )的 等 高模式识别与智能系统研究所
2020/6/27
5
正交方向及其性质
( d ) (1) T A d ( 2 ) 0 则 称 这 两 个 方 向 关 于 A 共 轭 ,或 称 它 们 关 于 A 正 交 . 若 R n中 的 k 个 方 向 d (1) , d ( 2 ) ,L , d ( k ) , 它 们 两 两 关 于 A 共 轭 ,即
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性代数方程组迭代法
预处理共轭梯度法
孟庆彬
April 9, 2016
1 引入
• 线性代数方程组的解法
• 直接法:高斯消去法,分解法 • 迭代法:
• • 古典迭代法:Jacobi,Gauss-Seidel,SOR,SSOR 现代迭代法:(投影方法,子空间法)
• • • • 正交化的误差投影型Krylov:FOM,IOM,DIOM 对称情形误差投影型Krylov:Lanczos,CG,PCG 正交化的残量投影型Krylov:GMRES,GCR 双正交化投影型Krylov方法:BiCG,CGS…..
4 预处理方法
4 预处理方法
4 预处理方法
Байду номын сангаас
5 高效实现
谢 谢!
1 引入
2 知识回顾
• CG算法
残差向量 搜索步长 搜索方向
3 算法原理
3 算法原理
4 预处理方法
• 预处理方法
• • • • • 取预优矩阵(预处理矩阵)为A的一个小带宽部分(如三对角或对角线 部分) 矩阵分裂,尤其是线性稳定迭代中的矩阵A的分裂构造预处理矩阵 通过A的各种近似分解得到预处理矩阵(如不完全分解) 通过矩阵A的多项式构造预处理矩阵 子结构,区域分裂,EBE预处理途径等等
相关文档
最新文档