线性方程组
有多个未知数,并且每个未知数的次数均为一次,这样多个未知数组成的方程组为线性方程组。
高斯消元法
高斯消元主要用来求解线性方程组,也可以求解矩阵的秩,矩阵的逆。在ACM中是一个有力的数学武器。时间复杂度是n^3,主要与方程组的个数,未知数的个数有关。高斯消元的过程就是手算解方程组的过程。加减消元,消去未知数,如果有多个未知数,就一直消去,直到得到类似kx=b(k和b为常数,x为未知数)的式子,就可以求解出未知数x,然后我们回代,依次求解出各个未知数的值,就解完了方程组。
总共分两步:
- 加减消元
- 回代求未知数值
C++实现1
首先,我们对于每一行找到第一个不为零的元素,并且将这一行置为1 的形式,用这一行乘上倍数加到之后的每一行。
然后,我们从最后一行开始,选择主元,加到之前的每一行上,使得该列的元素都为零。
1 |
|
C++实现2
1 |
|
QR 分解
QR 分解的形式
QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积。QR 分解经常用来解线性最小二乘法问题。QR 分解也是特定特征值算法即QR算法的基础。
QR 分解的求解
QR 分解的实际计算有很多方法,例如 Givens 旋转、Householder 变换,以及 Gram-Schmidt 正交化等等。每一种方法都有其优点和不足