目录

  • Gauss 消去法
    • 消去法的基本思想
    • 消去法的消去过程
  • 列主元 Gauss 消去法

本章的重点在于求解下列线性方程组:
{α11x1+α12x2+⋯+α1nxn=β1α21x1+α22x2+⋯+α2nxn=β2⋯⋯⋯⋯⋯⋯αn1x1+αn2x2+⋯+αnnxn=βn\left\{\begin{matrix} {{\alpha _{11}}{x_1} + {\alpha _{12}}{x_2} + \cdots + {\alpha _{1n}}{x_n} = {\beta _1}}\\ {{\alpha _{21}}{x_1} + {\alpha _{22}}{x_2} + \cdots + {\alpha _{2n}}{x_n} = {\beta _2}}\\ { \cdots \quad \cdots \quad \cdots \quad \cdots \quad \cdots \quad \cdots }\\ {{\alpha _{n1}}{x_1} + {\alpha _{n2}}{x_2} + \cdots + {\alpha _{nn}}{x_n} = {\beta _n}} \end{matrix}\right.⎩⎪⎪⎨⎪⎪⎧​α11​x1​+α12​x2​+⋯+α1n​xn​=β1​α21​x1​+α22​x2​+⋯+α2n​xn​=β2​⋯⋯⋯⋯⋯⋯αn1​x1​+αn2​x2​+⋯+αnn​xn​=βn​​

方程组可以转化为:
Ax=BAx=BAx=B
其中:
A=[α11α12⋯α1nα21α22⋯α2n⋯⋯⋯⋯αn1αn2⋯αnn],x=[x1x2⋮xn],b=[β1β2⋮βn]A = \begin{bmatrix} {{\alpha _{11}}}&{{\alpha _{12}}}& \cdots &{{\alpha _{1n}}}\\ {{\alpha _{21}}}&{{\alpha _{22}}}& \cdots &{{\alpha _{2n}}}\\ \cdots & \cdots & \cdots & \cdots \\ {{\alpha _{n1}}}&{{\alpha _{n2}}}& \cdots &{{\alpha _{nn}}} \end{bmatrix} ,x=\begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_n \end{bmatrix},b = \begin{bmatrix} {{\beta _1}}\\ {{\beta _2}}\\ \vdots \\ {{\beta _n}} \end{bmatrix}A=⎣⎢⎢⎡​α11​α21​⋯αn1​​α12​α22​⋯αn2​​⋯⋯⋯⋯​α1n​α2n​⋯αnn​​⎦⎥⎥⎤​,x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​,b=⎣⎢⎢⎢⎡​β1​β2​⋮βn​​⎦⎥⎥⎥⎤​
则:
法 1 求逆
根据矩阵的思想,
x=A−1Bx=A^{-1}Bx=A−1B
求逆的方法有很多,那么该算法的复杂性就取决于求逆的方法。
法 2 Crammer 法则
xi=∣Ai∣∣A∣,i=1,2,...,nx_i=\frac {|A_i|} {|A|},i=1,2,...,nxi​=∣A∣∣Ai​∣​,i=1,2,...,n
其中, ∣A∣|A|∣A∣ 是系数矩阵行列式, ∣Ai∣|A_i|∣Ai​∣ 是以右端向量 b 代替 A 的第 i 列所得的矩阵的行列式。

计算量为求矩阵的行列式(下面是行列式的定义式):
∣  A  ∣=∑(−1)J(i1,i2⋯in)α1i1α2i2⋯αnin\left| {\;{\bf{A}}\;} \right| = \sum {{{( - 1)}^{J({i_1},{i_2} \cdots {i_n})}}{\alpha _{1{i_1}}}{\alpha _{2{i_2}}} \cdots {\alpha _{n{i_n}}}} ∣A∣=∑(−1)J(i1​,i2​⋯in​)α1i1​​α2i2​​⋯αnin​​
其中 J(i1,i2⋯in)J({i_1},{i_2} \cdots {i_n})J(i1​,i2​⋯in​) 是从{1,2,…,n}变换到 i1,i2,...,in{i_1,i_2,...,i_n}i1​,i2​,...,in​ 所需的置换次数。

所以使用 Crammer 法则与行列式定义求解方程组需要 N=(n2−1)(n!)+nN=(n^2-1)(n!)+nN=(n2−1)(n!)+n 次浮点运算。

因为根据定义每个行列式都由 n!n!n! 项之和组成({1,2,…,n}的全排列有 n!种),每项是 n 个数的乘积,所以计算一个 n 阶行列式的运算量约为 (n−1)(n!)flop(n-1)(n!)flop(n−1)(n!)flop,一共需要计算 ∣Ai∣|A_i|∣Ai​∣ 和 ∣A∣|A|∣A∣ 共 n+1n+1n+1 个行列式。行列式算完之后的加法和除法有 n 步,所以总运算量为 O(n2∗n!)O(n^2*n!)O(n2∗n!) 。

运算量过大,实际无法使用。

Gauss 消去法

Gauss 消去法过程示例:

基本步骤:消去和回代
时间复杂度 O(n3)O(n^3)O(n3) ,空间复杂度 O(n2)O(n^2)O(n2)

消去法的基本思想

将求解 n 元方程组的问题通过降维,变为等价的 n-1 元方程组进行求解,逐次进行直至变为一个一元一次方程为止,然后求解,再逐步回代得到其余的解

消去法的消去过程

将方程的过程转化为矩阵的变换
对以下增广矩阵:
(A(0)b(0))=(a11(0)a12(0)a13(0)⋯a1n(0)β1(0)a21(0)a22(0)a23(0)⋯a2n(0)β2(0)a31(0)a32(0)a33(0)⋯a3n(0)β3(0)⋮⋮⋮⋮⋮⋮an1(0)an2(0)an3(0)⋯ann(0)βn(0))\begin{pmatrix} {{A^{(0)}}}&{{b^{(0)}}} \end{pmatrix}=\begin{pmatrix} {a_{11}^{(0)}}&{a_{12}^{(0)}}&{a_{13}^{(0)}}& \cdots &{a_{1n}^{(0)}}&{\beta _1^{(0)}}\\ {a_{21}^{(0)}}&{a_{22}^{(0)}}&{a_{23}^{(0)}}& \cdots &{a_{2n}^{(0)}}&{\beta _2^{(0)}}\\ {a_{31}^{(0)}}&{a_{32}^{(0)}}&{a_{33}^{(0)}}& \cdots &{a_{3n}^{(0)}}&{\beta _3^{(0)}}\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ {a_{n1}^{(0)}}&{a_{n2}^{(0)}}&{a_{n3}^{(0)}}& \cdots &{a_{nn}^{(0)}}&{\beta _n^{(0)}} \end{pmatrix} (A(0)​b(0)​)=⎝⎜⎜⎜⎜⎜⎜⎛​a11(0)​a21(0)​a31(0)​⋮an1(0)​​a12(0)​a22(0)​a32(0)​⋮an2(0)​​a13(0)​a23(0)​a33(0)​⋮an3(0)​​⋯⋯⋯⋮⋯​a1n(0)​a2n(0)​a3n(0)​⋮ann(0)​​β1(0)​β2(0)​β3(0)​⋮βn(0)​​⎠⎟⎟⎟⎟⎟⎟⎞​
将矩阵的第 i 行分别减去矩阵第一行的倍数 l1=ai1(0)a11(0),i=2,3,...,nl_1=\frac {a_{i1}^{(0)}} {a_{11}^{(0)}},i=2,3,...,nl1​=a11(0)​ai1(0)​​,i=2,3,...,n ,得到:
(A(1)b(1))=(a11(0)a12(0)a13(0)⋯a1n(0)β1(0)0a22(1)a23(1)⋯a2n(1)β2(1)0a32(1)a33(1)⋯a3n(1)β3(1)⋮⋮⋮⋮⋮⋮0an2(1)an3(1)⋯ann(1)βn(1))\begin{pmatrix} {{A^{(1)}}}&{{b^{(1)}}} \end{pmatrix}=\begin{pmatrix} {a_{11}^{(0)}}&{a_{12}^{(0)}}&{a_{13}^{(0)}}& \cdots &{a_{1n}^{(0)}}&{\beta _1^{(0)}}\\ 0&{a_{22}^{(1)}}&{a_{23}^{(1)}}& \cdots &{a_{2n}^{(1)}}&{\beta _2^{(1)}}\\ 0&{a_{32}^{(1)}}&{a_{33}^{(1)}}& \cdots &{a_{3n}^{(1)}}&{\beta _3^{(1)}}\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ 0&{a_{n2}^{(1)}}&{a_{n3}^{(1)}}& \cdots &{a_{nn}^{(1)}}&{\beta _n^{(1)}} \end{pmatrix} (A(1)​b(1)​)=⎝⎜⎜⎜⎜⎜⎜⎛​a11(0)​00⋮0​a12(0)​a22(1)​a32(1)​⋮an2(1)​​a13(0)​a23(1)​a33(1)​⋮an3(1)​​⋯⋯⋯⋮⋯​a1n(0)​a2n(1)​a3n(1)​⋮ann(1)​​β1(0)​β2(1)​β3(1)​⋮βn(1)​​⎠⎟⎟⎟⎟⎟⎟⎞​
其中:
aij(1)=aij(0)−li1a1j(0)βi(1)=βi(0)−li1β1(0)j=2,3,...,ni=2,3,...,n\begin{matrix} a_{ij}^{(1)} = a_{ij}^{(0)} - {l_{i1}}a_{1j}^{(0)}\\ \beta _i^{(1)} = \beta _i^{(0)} - {l_{i1}}\beta _1^{(0)}\\ j = 2,3,...,n\\ i = 2,3,...,n \end{matrix}aij(1)​=aij(0)​−li1​a1j(0)​βi(1)​=βi(0)​−li1​β1(0)​j=2,3,...,ni=2,3,...,n​
以此类推,消去第 k 步,得到矩阵:
(A(k)b(k))=(a11(0)⋯a1k(0)a1,k+1(0)⋯a1n(0)β1(0)⋱⋮⋮⋮⋮akk(k−1)ak,k+1(k−1)⋯akn(k−1)βk(k−1)ak+1,k+1(0)⋯ak+1,n(k)βk+1(k)⋮⋮⋮an,k+1(k)⋯ann(k)βn(k))\begin{pmatrix} {{A^{(k)}}}&{{b^{(k)}}} \end{pmatrix} = \begin{pmatrix} {a_{11}^{(0)}}& \cdots &{a_{1k}^{(0)}}&{a_{1,k + 1}^{(0)}}& \cdots &{a_{1n}^{(0)}}&{\beta _1^{(0)}}\\ {}& \ddots & \vdots & \vdots &{}& \vdots & \vdots \\ {}&{}&{a_{kk}^{(k - 1)}}&{a_{k,k + 1}^{(k - 1)}}& \cdots &{a_{kn}^{(k - 1)}}&{\beta _k^{(k - 1)}}\\ {}&{}&{}&{a_{k + 1,k + 1}^{(0)}}& \cdots &{a_{k + 1,n}^{(k)}}&{\beta _{k + 1}^{(k)}}\\ {}&{}&{}& \vdots &{}& \vdots & \vdots \\ {}&{}&{}&{a_{n,k + 1}^{(k)}}& \cdots &{a_{nn}^{(k)}}&{\beta _n^{(k)}} \end{pmatrix}(A(k)​b(k)​)=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎛​a11(0)​​⋯⋱​a1k(0)​⋮akk(k−1)​​a1,k+1(0)​⋮ak,k+1(k−1)​ak+1,k+1(0)​⋮an,k+1(k)​​⋯⋯⋯⋯​a1n(0)​⋮akn(k−1)​ak+1,n(k)​⋮ann(k)​​β1(0)​⋮βk(k−1)​βk+1(k)​⋮βn(k)​​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎞​
计算关系式:
lik=aik(k−1)akk(k−1)aij(k)=aij(k−1)−likakj(k−1),j=k+1,...,nβi(k)=βi(k−1)−likβk(k−1),i=k+1,k+2,...,n\begin{matrix} {l_{ik}} = \frac{{a_{ik}^{(k - 1)}}}{{a_{kk}^{(k - 1)}}}\\ \\ {\rm{ }}a_{ij}^{(k)} = a_{ij}^{(k - 1)} - {l_{ik}}a_{kj}^{(k - 1)},j = k + 1,...,n\\ \\ {\rm{ }}\beta _i^{(k)} = \beta _i^{(k - 1)} - {l_{ik}}\beta _k^{(k - 1)},i = k + 1,k + 2,...,n \end{matrix}lik​=akk(k−1)​aik(k−1)​​aij(k)​=aij(k−1)​−lik​akj(k−1)​,j=k+1,...,nβi(k)​=βi(k−1)​−lik​βk(k−1)​,i=k+1,k+2,...,n​
经过 n-1 步消去后,得到:
(A(n−1)b(n−1))=(a11(0)a12(0)a13(0)⋯a1n(0)β1(0)a22(1)a23(1)⋯a2n(1)β2(1)a33(2)⋯a3n(2)β3(2)⋱⋮⋮ann(n−1)βn(n−1))(\begin{matrix} {{A^{(n - 1)}}}&{{b^{(n - 1)}}} \end{matrix}) = \left( {\begin{matrix} {a_{11}^{(0)}}&{a_{12}^{(0)}}&{a_{13}^{(0)}}& \cdots &{a_{1n}^{(0)}}&{\beta _1^{(0)}}\\ {}&{a_{22}^{(1)}}&{a_{23}^{(1)}}& \cdots &{a_{2n}^{(1)}}&{\beta _2^{(1)}}\\ {}&{}&{a_{33}^{(2)}}& \cdots &{a_{3n}^{(2)}}&{\beta _3^{(2)}}\\ {}&{}&{}& \ddots & \vdots & \vdots \\ {}&{}&{}&{}&{a_{nn}^{(n - 1)}}&{\beta _n^{(n - 1)}} \end{matrix}} \right)(A(n−1)​b(n−1)​)=⎝⎜⎜⎜⎜⎜⎜⎛​a11(0)​​a12(0)​a22(1)​​a13(0)​a23(1)​a33(2)​​⋯⋯⋯⋱​a1n(0)​a2n(1)​a3n(2)​⋮ann(n−1)​​β1(0)​β2(1)​β3(2)​⋮βn(n−1)​​⎠⎟⎟⎟⎟⎟⎟⎞​
然后,经过回代,就可以得到所有解。
{xn=βn(n−1)ann(n−1)xk=1akk(k−1)(βk(k−1)−∑j=k+1nakj(k−1)xj),k=n−1,n−2,...,1\left\{ \begin{array}{l} {x_n} = \frac{{\beta _n^{(n - 1)}}}{{a_{nn}^{(n - 1)}}}\\ {x_k} = \frac{1}{{a_{kk}^{(k - 1)}}}\left( {\beta _k^{(k - 1)} - \sum\limits_{j = k + 1}^n {a_{kj}^{(k - 1)}{x_j}} } \right),k = n - 1,n - 2,...,1 \end{array} \right.{\rm{ }}⎩⎪⎪⎨⎪⎪⎧​xn​=ann(n−1)​βn(n−1)​​xk​=akk(k−1)​1​(βk(k−1)​−j=k+1∑n​akj(k−1)​xj​),k=n−1,n−2,...,1​

列主元 Gauss 消去法

但 Gauss 消去法并非万能,例如对于以下问题就不能执行:
{5x2+x3=22x1+x2−x3=14x1−x2+x3=0\left\{ \begin{array}{l} {\rm{ 5}}{x_2} + {x_3} = 2\\ 2{x_1} + {x_2} - {x_3} = 1\\ 4{x_1} - {x_2} + {x_3} = 0 \end{array} \right.⎩⎨⎧​5x2​+x3​=22x1​+x2​−x3​=14x1​−x2​+x3​=0​

所以当 Gauss 消去法遇到以下现象时,不能执行:

  1. akk(k−1)=0a_{kk}^{(k-1)}=0akk(k−1)​=0
  2. ∣akk(k−1)∣&lt;&lt;∣aik(k−1)∣,i=k+1,...,n|a_{kk}^{(k-1)}|&lt;&lt;|a_{ik}^{(k-1)}|,i=k+1,...,n∣akk(k−1)​∣<<∣aik(k−1)​∣,i=k+1,...,n

第一种情况容易理解,第二种情况是因为会导致小数字作为除数参加运算,会产生大数字,大数字加到其他数上面会产生“大数吃小数”的问题。

所以可以采用以下方法解决上面两种现象:

若矩阵非奇则总可以通过选主元的方式继续执行消去过程

所以列主元高斯消去法是稳定的,但是高斯消去法可能是不稳定的。

注意:当矩阵对称正定或者严格对角占优时,不需要使用列主元高斯消去法。

《计算方法》笔记之(二)线性代数方程组之Gauss消去法相关推荐

  1. 数值线性代数之列主元Gauss消去法(MATLAB)

    1. 这是啥? 在使用Gauss变换的过程中,如果矩阵对角线的元素太小,会干扰计算结果,所以我们尽量把每列较大的元素通过行变换挪到对角线上. 2. 第二个红框只是普通的Guass变换,第一个红框就是选 ...

  2. 高等数值计算方法学习笔记第6章【解线性代数方程组的迭代方法(高维稀疏矩阵)】

    高等数值计算方法学习笔记第6章[解线性代数方程组的迭代方法(高维稀疏矩阵)] 一.引言 1.例题(说明迭代法的收敛性研究的重要性) 2.定义(迭代法,迭代法收敛)&解误差 二.基本迭代法 1. ...

  3. 线性代数学习笔记(二十九)——方程组解的结构(一)

    停更2年多了,做事得有始有终,继续更新... 本篇笔记回顾了线性方程组解的三种情况,并讨论了齐次线性方程组解的结构,并介绍了齐次线性方程组解的相关性质.其中重点讨论了基础解系定义,以及基础解系的求法和 ...

  4. MATLAB数值分析学习笔记:线性代数方程组的求解和高斯消元法

    工程和科学计算的许多基本方程都是建立在守恒定律的基础之上的,比如质量守恒等,在数学上,可以建立起形如 [A]{x}={b} 的平衡方程.其中{x}表示各个分量在平衡时的取值,它们表示系统的状态或响应: ...

  5. 线性代数学习笔记(二十二)——向量间的线性关系(二)

    本篇笔记首先介绍了线性相关和线性无关的概念,关键是找到一组不全为零相关系数使得等成立:然后重点介绍了一些重要的结论,以及向量组线性相关和线性无关的几个充要条件. 1 线性相关与线性无关 线性相关:设 ...

  6. 线性代数考研笔记(二)

    矩阵: 线性代数考研笔记(二):矩阵 矩阵相关概念: 矩阵初等变换: 逆矩阵相关性质: 分块矩阵的运算法则: 方阵的特征根和特征向量: 正交矩阵: 正交向量组: 相似矩阵: 对角化: 合同矩阵: 二次 ...

  7. 线性代数方程组数值解法

    线性代数方程组的数值解法 线性代数方程组数值解法 一.向量范数与矩阵范数 1.1 向量范数 1.1.1 满足三个条件(向量范数公理) 1.1.2 常用的向量范数 1.2 矩阵范数 1.2.1 矩阵范数 ...

  8. c语言迭代法解线性代数方程,迭代法求线性代数方程组程序.docx

    迭代法求线性代数方程组 计算物理 辽宁科技大学 理学院 骆宾祥 学号:120123802038 迭代法求线性代数方程组 骆宾祥 摘 要:目前在许多实际应用领域,诸如航空.造船以及其它结构工程中,常遇到 ...

  9. 用matlab求解线性代数方程组,线性代数方程组数值解法与MATLAB实现综述

    线性代数方程组数值解法及MATLAB 实现综述 廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一.分析课题 随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算 ...

最新文章

  1. mysql reflush pri_mysql忘记root密码拯救方法(flush privileges)
  2. 最强的目标检测网络:DetectoRS 54.7 AP
  3. Zookeeper下载
  4. E-SKILL网络工程师考试认证必备
  5. 串口转换器的工作方式及通讯模式介绍
  6. 具有全局观的网络拓扑
  7. python基础之面向对象编程
  8. Netty设计模式应用
  9. GitHub上如何删除fork别人的repository
  10. POJ1679 The Unique MST —— 次小生成树
  11. 企业运营管理体系是什么?
  12. 几天几夜,终解移动MM计费SDK接入bug
  13. linux下如何查看hdmi设备,如何在Linux中设置HDMI数字播放 | MOS86
  14. 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
  15. 一年中的最后一天说说_2018最后一天感言说说 怎么发朋友圈告别2018年
  16. Linux隔离网络,linux – 隔离网络上的单个NTP服务器
  17. 计算机科学技术考研内容,计算机科学与技术考研考哪些科目?
  18. 高职计算机应用专业课程,浅谈高职计算机应用专业课程设置
  19. Linux 磁盘坏块修复处理(错误:read error: Input/output error)
  20. Shells:一款功能强大的反向Shell快速生成工具

热门文章

  1. c语言tab什么意思_速收藏 | 学习C语言最需要记住的基础知识!!
  2. 中标麒麟操作系统,yum安装软件时提示:“已加载插件:langpacks,无须任何处理“的解决办法
  3. 企业应用层面知识管理咨询方法
  4. 谷粒学苑-在线教育实战项目-面试总结-简历优化
  5. 余弦相似性:找出相似文章
  6. 休谟的“归纳问题”——关于归纳方法的批判
  7. 【论文精读】CMT: Convolutional Neural Networks MeetVision Transformers
  8. 微积分入门书籍(一)
  9. redis中AOF自动重写条件
  10. mpVue的基本介绍