计算方法3 线性方程组求解
前置
这一节主要是玩矩阵,为了偷懒只讨论实线性空间
前置
这一节主要是玩矩阵,为了偷懒只讨论实线性空间
内积
二元函数 被称为内积,则其满足:
- ,等号仅在 时取到
向量范数
一元函数 被称为范数,则其满足:
- ,等号仅在 时取到
在内积空间上有一个天然的范数 ,容易验证满足上述三条要求。
矩阵范数
算子范数
矩阵可以看成线性变换,因此可以由向量范数来衡量矩阵作为线性变换(算子)的“长度”。定义为
注意这里的 都是向量,因此 RHS 出现的全都是向量范数,LHS 则是定义出来的算子范数。
有了这个定义,我们就可以写出这样的不等式
同时会引入新的定义,称满足下述要求的算子范数具有相容性:
有了相容性同样可以做一些界的估计
矩阵范数
矩阵同样也可以看成线性空间中的元素,因此可以单独赋予范数的定义,当然这就和向量范数没什么关系了。
一个例子是这样的,容易验证其满足三条要求
高斯消元
对于给定的线性方程组 ,可以用简单 的高斯消元法来求解。并且这样可以很容易地求出解空间的一组基,进而得到所有解。
解的稳定性
不妨假设 中 ,则有
通常 是给定的,而 是若干计算和观察的结果,因此解的误差主要来源于 引入的误差,可以写成
考虑相对误差的计算,即为
即后向相对误差与前向相对误差的比值,称这个值为方程组 (矩阵 )的条件数
注意到 ,且 ,带入即得
矩阵的条件数反映了矩阵所对应线性方程组的不稳定程度。条件数越大则不稳定程度越大,误差的传递放大也就越严重。
迭代算法
太昂贵,考虑迭代算法。一般而言迭代的次数是人为规定的,不少算法能够保证在 次迭代之后必然得到精确解。
Jacobi 迭代
对于矩阵 ,将其分解为 ,其中 分别为上三角矩阵和下三角矩阵, 为对角阵。
那么有
收敛性
给出一个充分条件:若 是主对角线占优矩阵,则迭代必然收敛。
只需联立如下方程
两式相减即得
记 ,由对角占优可知 的每一项绝对值严格小于 ,因此迭代收敛。
正确性
假设收敛,则有不动点 ,简单替换即得不动点 是原方程的一个解。
结合收敛性的充分条件即得:若 为主对角线占优矩阵,则解唯一( 可逆),且迭代收敛至唯一解。
看起来还是比较好的。
Gauss-Seidel 迭代
用到了一个观察,即在计算解向量 的第 项时,它的前 项都已经算出来了(废话)
因此可以写成
证明和上面是类似的,结论也是类似的。
写代码可以发现这两个方法没有绝对的好坏之分,迭代速度也没有一般性的结论(至少俺不知道)。
谱半径
为了分析一类迭代算法的收敛性,引入谱半径的概念
定义 的谱半径为其绝对值最大的特征值 ,记为
对于这样的迭代算法
取不动点做差得
如果能说明 ,那么就能说明迭代是收敛的,且收敛到方程组的解。
有定理: 当且仅当
分析 Jacobi 和 Gauss-Seidel 迭代矩阵的谱半径可以知道,当系数矩阵 是严格对角占优时,这两个算法以任意初始向量开始迭代都会收敛。
伪逆
对于满秩矩阵 ,方程组 的解是显然存在的。但是对于非满秩的矩阵 来说就不一定了。在最小二乘法中可以求得一个二范数最小的“逼近”解,实际上是解了一个方程 ,即
问题的关键在于 不一定存在,这使得 不一定存在唯一解。因此引入记号 ,称为 的伪逆(pseudo inverse),那么最小二乘法可以写成 ,形式与满秩方程组 是一致的。这样求出的解为最佳平方逼近解。
当 的列线性无关时, 满秩, 存在。此时原方程组 无解(超定方程组)
由反证法假设存在 使得 ,那么 ,根据内积的正定性可知 ,这说明存在列的线性组合为 ,这与列线性无关矛盾;故假设不成立。
类似取 可知,当 的行线性无关时, 列线性无关, 满秩,。此时方程组 有多解(欠定方程组),但是我不知道有啥意义,因为 是个右逆....
本文来自博客园,作者:jjppp。本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~