果然,理论的学习离不开数学,学习bootstrapping算法(自举算法)的时候有2个概念没听过,回头学一下这两个线性方程组的迭代解法。
其中线性方程组的数值求解包括直接解法和迭代解法。
直接解法有高斯消元法,矩阵三角分解法,平方根法、追赶法等。
本文主要学习一下迭代解法中的雅克比(Jacobi)迭代法和高斯-赛德尔迭代法
迭代解法是根据线性方程组
设计一个迭代公式,取初试值
,将其带入迭代公式中,得到
如此循环反复最后得到X。
[1]. 雅克比(Jacobi)迭代法
首先,设求解的线性方程组为
首先将方程组中的系数矩阵A分解成三部分,即:
其中D为对角阵,L为下三角矩阵,U为上三角矩阵。
假设
从而D可逆。
从而,
在上式中记
则迭代公式为
其中B成为迭代矩阵。
[2]. 高斯-赛德尔迭代法
高斯-赛德尔迭代法是对上个方法的进化,有更快的收敛速度。
同样将方程组中的系数矩阵A分解成三部分,即:
其中D为对角阵,L为下三角矩阵,U为上三角矩阵。
这种方法矩阵的形式为
迭代方程为
其中
[注]. 关于问题的总结
从公式上看,雅克比(Jacobi)迭代法和高斯-赛德尔迭代法从矩阵上只是一个对
求逆,一个是对
求逆,很难看出两者之间有什么太大的区别,甚至
不可以
求解吗?(上文中也是对
和
假设可逆)。
通过咨询老师,在矩阵求逆是一个很耗时的计算,一般矩阵的逆复杂度是
对角阵却是
,当矩阵很大时,
的时间复杂度可能会耗尽计算机的资源,因此不能用
求解。