方程组的直接解法和迭代法 python_数据与算法总结——基本数值算法2(线性方程组)...

d736e0329b0a5b2418cfd64ea53a515f.png

4 基本数值算法

4.2 线性方程组

4.2.1 线性方程组的特性

解的存在性和唯一性

满足下面条件之一,A非奇异,可逆:

如果b属于A的列向量张成的空间,则称方程组是相容的。

范数需要满足次可加性(三角不等式)。

对于n维矢量x,可以定义p范数,p为大于0的整数:

。所以1范数为相加,2范数为平方和开根,
范数为最大的x。

定义矩阵范数:

根据相应的向量范数,我们可以得到:1范数为列向量求和最大,2范数为行向量求和最大。

矩阵范数:满足这些性质:

,如果

对于任一标量

,有

对任意矢量x,有

问题的敏感性和病态性

:A的条件数

如果A奇异,则

矩阵的条件数刻画了矩阵对于非零矢量最大的延伸和压缩能力,矩阵的条件数越大,说明矩阵越接近奇异。

矩阵条件数的性质:

对于任意矩阵A,

;对于单位阵I,
;对于任意矩阵A和标量
,有
;对于任意对角阵

4.2.2 线性方程组的直接解法

主要是两种:高斯消去法和LU分解

高斯消去法主要的计算量消耗在消元过程,时间复杂度为

在消去过程中,对角线上的元素会作为除数,如果它很小,就会发生上溢从而严重影响求解精度。于是就有了一个操作叫做:列选主元。讲的是一个矩阵计算到

的时候,从
向下看,找到一个最大的家伙,然后把那一行整个搬过来,把这一行搬过去,于是就很好的控制了上溢的问题。用时间换精度。

然后LU分解在线性代数里面已经学过了,这里就不再说了......

线性方程组解的精度

残差向量:

解为
,定义残差向量:
。有

当A为良态时,小的相对残差意味着解的相对误差也小。A如果病态,稳定的算法可以得到小的残差,但解的精度不一定高。

高斯-约当法:把A变成一个对角阵。

乔列斯基分解:如果A是对称正定阵则可以使用。

,L为下三角阵。

4.2.3 线性方程组的迭代解法

迭代求解:直接解法的时间复杂度都是

,迭代运算复杂度不超过
,其中k为迭代步数。

不动点迭代

,定义谱半径
为矩阵M所有特征值的最大值。

如果

,则不动点迭代收敛。

分裂A是实现不动点迭代的基本方法,令

,得到
,得到不动点迭代的形式:

,当
时,收敛

雅可比方法

,D为对角阵,L和U为严格的上三角阵和下三角阵。

,带入迭代式:

高斯-赛德方法

,D为对角阵,L和U为严格的上三角阵和下三角阵。

,带入迭代式:

高斯-赛德方法能够及时利用更新过的分量参与下一步计算,因此收敛速度要比雅可比大约快一倍,但这两种方法收敛通常很慢。