基于模型的动态规划方法理论——线性方程组的迭代解法

果然,理论的学习离不开数学,学习bootstrapping算法(自举算法)的时候有2个概念没听过,回头学一下这两个线性方程组的迭代解法。
其中线性方程组的数值求解包括直接解法迭代解法
直接解法有高斯消元法,矩阵三角分解法,平方根法、追赶法等。
本文主要学习一下迭代解法中的雅克比(Jacobi)迭代法高斯-赛德尔迭代法
迭代解法是根据线性方程组 A X = b AX=b AX=b设计一个迭代公式,取初试值 X ( 0 ) X^{(0)} X(0),将其带入迭代公式中,得到 X ( 1 ) X^{(1)} X(1)如此循环反复最后得到X。

[1]. 雅克比(Jacobi)迭代法

首先,设求解的线性方程组为 A x = b Ax=b Ax=b
首先将方程组中的系数矩阵A分解成三部分,即:
A = L + D + U A = L+D+U A=L+D+U
其中D为对角阵,L为下三角矩阵,U为上三角矩阵。
假设 a i i ≠ 0 a_{ii}≠0 aii̸=0 从而D可逆。
从而,
( L + D + U ) x = b (L+D+U) x = b (L+D+U)x=b
D x = − ( L + U ) x + b Dx =-(L+U)x+b Dx=(L+U)x+b
x = − D − 1 ( L + U ) x + D − 1 b x = -D^{-1}(L+U)x +D^{-1}b x=D1(L+U)x+D1b
在上式中记 B = − D − 1 ( L + U ) , d = D − 1 b B = -D^{-1}(L+U) ,d = D^{-1}b B=D1(L+U),d=D1b
则迭代公式为 x k + 1 = B x k + d x^{k+1}=Bx^{k}+d xk+1=Bxk+d
其中B成为迭代矩阵。

[2]. 高斯-赛德尔迭代法

高斯-赛德尔迭代法是对上个方法的进化,有更快的收敛速度。
同样将方程组中的系数矩阵A分解成三部分,即:
A = L + D + U A = L+D+U A=L+D+U
其中D为对角阵,L为下三角矩阵,U为上三角矩阵。
这种方法矩阵的形式为
( D + L ) x k + 1 = − U x k + b (D+L)x^{k+1} = -Ux^{k}+b (D+L)xk+1=Uxk+b
迭代方程为
x k + 1 = G x k + d 1 x^{k+1} = Gx^{k}+d_1 xk+1=Gxk+d1
其中
G = − ( D + L ) − 1 U , d 1 = ( D + L ) − 1 b G = -(D+L)^{-1}U , d_1 = (D+L)^{-1}b G=(D+L)1U,d1=(D+L)1b

[注]. 关于问题的总结

从公式上看,雅克比(Jacobi)迭代法高斯-赛德尔迭代法从矩阵上只是一个对 D D D求逆,一个是对 D + L D+L D+L求逆,很难看出两者之间有什么太大的区别,甚至 A x = b Ax=b Ax=b不可以 x = A − 1 b x=A^{-1}b x=A1b求解吗?(上文中也是对 D D D D + L D+L D+L假设可逆)。
通过咨询老师,在矩阵求逆是一个很耗时的计算,一般矩阵的逆复杂度是 O ( n 3 ) O(n^3) O(n3)对角阵却是 O ( n ) O(n) O(n),当矩阵很大时, O ( n 3 ) O(n^3) O(n3)的时间复杂度可能会耗尽计算机的资源,因此不能用 x = A − 1 b x=A^{-1}b x=A1b求解。

你可能感兴趣的:(数值分析)