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

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

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

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

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

高斯-赛德尔迭代法是对上个方法的进化,有更快的收敛速度。
同样将方程组中的系数矩阵A分解成三部分,即:
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
迭代方程为
x k + 1 = G x k + d 1 x^{k+1} = Gx^{k}+d_1
其中
G = ( D + L ) 1 U , d 1 = ( D + L ) 1 b G = -(D+L)^{-1}U , d_1 = (D+L)^{-1}b

[注]. 关于问题的总结

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

猜你喜欢

转载自blog.csdn.net/qq_27389705/article/details/88967397