《计算方法》笔记之(二)线性代数方程组之Gauss消去法
目录
- 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.⎩⎪⎪⎨⎪⎪⎧α11x1+α12x2+⋯+α1nxn=β1α21x1+α22x2+⋯+α2nxn=β2⋯⋯⋯⋯⋯⋯αn1x1+αn2x2+⋯+αnnxn=β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=⎣⎢⎢⎢⎡x1x2⋮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⋮0a12(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)−li1a1j(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)−likakj(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∑nakj(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 消去法遇到以下现象时,不能执行:
- akk(k−1)=0a_{kk}^{(k-1)}=0akk(k−1)=0
- ∣akk(k−1)∣<<∣aik(k−1)∣,i=k+1,...,n|a_{kk}^{(k-1)}|<<|a_{ik}^{(k-1)}|,i=k+1,...,n∣akk(k−1)∣<<∣aik(k−1)∣,i=k+1,...,n
第一种情况容易理解,第二种情况是因为会导致小数字作为除数参加运算,会产生大数字,大数字加到其他数上面会产生“大数吃小数”的问题。
所以可以采用以下方法解决上面两种现象:
若矩阵非奇则总可以通过选主元的方式继续执行消去过程
所以列主元高斯消去法是稳定的,但是高斯消去法可能是不稳定的。
注意:当矩阵对称正定或者严格对角占优时,不需要使用列主元高斯消去法。
《计算方法》笔记之(二)线性代数方程组之Gauss消去法相关推荐
- 数值线性代数之列主元Gauss消去法(MATLAB)
1. 这是啥? 在使用Gauss变换的过程中,如果矩阵对角线的元素太小,会干扰计算结果,所以我们尽量把每列较大的元素通过行变换挪到对角线上. 2. 第二个红框只是普通的Guass变换,第一个红框就是选 ...
- 高等数值计算方法学习笔记第6章【解线性代数方程组的迭代方法(高维稀疏矩阵)】
高等数值计算方法学习笔记第6章[解线性代数方程组的迭代方法(高维稀疏矩阵)] 一.引言 1.例题(说明迭代法的收敛性研究的重要性) 2.定义(迭代法,迭代法收敛)&解误差 二.基本迭代法 1. ...
- 线性代数学习笔记(二十九)——方程组解的结构(一)
停更2年多了,做事得有始有终,继续更新... 本篇笔记回顾了线性方程组解的三种情况,并讨论了齐次线性方程组解的结构,并介绍了齐次线性方程组解的相关性质.其中重点讨论了基础解系定义,以及基础解系的求法和 ...
- MATLAB数值分析学习笔记:线性代数方程组的求解和高斯消元法
工程和科学计算的许多基本方程都是建立在守恒定律的基础之上的,比如质量守恒等,在数学上,可以建立起形如 [A]{x}={b} 的平衡方程.其中{x}表示各个分量在平衡时的取值,它们表示系统的状态或响应: ...
- 线性代数学习笔记(二十二)——向量间的线性关系(二)
本篇笔记首先介绍了线性相关和线性无关的概念,关键是找到一组不全为零相关系数使得等成立:然后重点介绍了一些重要的结论,以及向量组线性相关和线性无关的几个充要条件. 1 线性相关与线性无关 线性相关:设 ...
- 线性代数考研笔记(二)
矩阵: 线性代数考研笔记(二):矩阵 矩阵相关概念: 矩阵初等变换: 逆矩阵相关性质: 分块矩阵的运算法则: 方阵的特征根和特征向量: 正交矩阵: 正交向量组: 相似矩阵: 对角化: 合同矩阵: 二次 ...
- 线性代数方程组数值解法
线性代数方程组的数值解法 线性代数方程组数值解法 一.向量范数与矩阵范数 1.1 向量范数 1.1.1 满足三个条件(向量范数公理) 1.1.2 常用的向量范数 1.2 矩阵范数 1.2.1 矩阵范数 ...
- c语言迭代法解线性代数方程,迭代法求线性代数方程组程序.docx
迭代法求线性代数方程组 计算物理 辽宁科技大学 理学院 骆宾祥 学号:120123802038 迭代法求线性代数方程组 骆宾祥 摘 要:目前在许多实际应用领域,诸如航空.造船以及其它结构工程中,常遇到 ...
- 用matlab求解线性代数方程组,线性代数方程组数值解法与MATLAB实现综述
线性代数方程组数值解法及MATLAB 实现综述 廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一.分析课题 随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算 ...
最新文章
- mysql reflush pri_mysql忘记root密码拯救方法(flush privileges)
- 最强的目标检测网络:DetectoRS 54.7 AP
- Zookeeper下载
- E-SKILL网络工程师考试认证必备
- 串口转换器的工作方式及通讯模式介绍
- 具有全局观的网络拓扑
- python基础之面向对象编程
- Netty设计模式应用
- GitHub上如何删除fork别人的repository
- POJ1679 The Unique MST —— 次小生成树
- 企业运营管理体系是什么?
- 几天几夜,终解移动MM计费SDK接入bug
- linux下如何查看hdmi设备,如何在Linux中设置HDMI数字播放 | MOS86
- 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问
- 一年中的最后一天说说_2018最后一天感言说说 怎么发朋友圈告别2018年
- Linux隔离网络,linux – 隔离网络上的单个NTP服务器
- 计算机科学技术考研内容,计算机科学与技术考研考哪些科目?
- 高职计算机应用专业课程,浅谈高职计算机应用专业课程设置
- Linux 磁盘坏块修复处理(错误:read error: Input/output error)
- Shells:一款功能强大的反向Shell快速生成工具
热门文章
- c语言tab什么意思_速收藏 | 学习C语言最需要记住的基础知识!!
- 中标麒麟操作系统,yum安装软件时提示:“已加载插件:langpacks,无须任何处理“的解决办法
- 企业应用层面知识管理咨询方法
- 谷粒学苑-在线教育实战项目-面试总结-简历优化
- 余弦相似性:找出相似文章
- 休谟的“归纳问题”——关于归纳方法的批判
- 【论文精读】CMT: Convolutional Neural Networks MeetVision Transformers
- 微积分入门书籍(一)
- redis中AOF自动重写条件
- mpVue的基本介绍