《 线性代数及其应用 (原书第4版)》——1.2 行化简与阶梯形矩阵

简介: 本节书摘来自华章出版社《 线性代数及其应用 (原书第4版)》一书中的第1章,第1.2节,作者:(美)戴维C. 雷(David C. Lay)马里兰大学帕克学院 著刘深泉 张万芹 陈玉珍 包乐娥 陆 博 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.

本节书摘来自华章出版社《 线性代数及其应用 (原书第4版)》一书中的第1章,第1.2节,作者:(美)戴维C. 雷(David C. Lay)马里兰大学帕克学院 著刘深泉 张万芹 陈玉珍 包乐娥 陆 博 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.2 行化简与阶梯形矩阵

本节我们将1.1节中的方法进一步精确化,变成行化简算法(也称行消去法),它可用来解任意线性方程组. 1而应用算法的第一部分,我们可以回答1.1节中提出的基本存在与唯一性问题.
这种算法可用于任意矩阵,不管它是否为某一方程组的增广矩阵. 所以本节的第一部分讨论任意矩阵. 首先我们引入两类重要的矩阵,它们包含1.1节中的“三角”矩阵,在以下的定义中,矩阵中非零行或列指矩阵中至少包含一个非零元素的行或列;非零行的先导元素是指该行中最左边的非零元素.
定义 一个矩阵称为阶梯形(或行阶梯形),若它有以下三个性质:

  1. 每一非零行在每一零行之上.
  2. 某一行的先导元素所在的列位于前一行先导元素的右面.
  3. 某一先导元素所在列下方元素都是零.
    若一个阶梯形矩阵还满足以下性质,称它为简化阶梯形(或简化行阶梯形).
  4. 每一非零行的先导元素是1.
  5. 每一先导元素1是该元素所在列的唯一非零元素.
    若一个矩阵具有阶梯形(简化阶梯形),它就称为阶梯形(简化阶梯形)矩阵. 性质2说明先导元素构成阶梯形. 性质3其实是性质2的推论,不过我们把它列出来以示强调.

1.1节中的“三角”矩阵,如
1
都是阶梯形的,第二个矩阵是简化阶梯形的. 再举更多的例子.
例1 下列矩阵都是阶梯形的,先导元素用 ? 表示,它们可取任意的非零值,在*位置的元素可取任意值,包括零值.
2

下列矩阵是简化阶梯形的,因先导元素都是1,且在每个先导元素1的上、下,各元素都是0.
3

一个矩阵可以行化简(即用行初等变换)变为阶梯形矩阵,但用不同的方法可化为不同的阶梯形矩阵. 然而,一个矩阵只能化为唯一的简化阶梯形矩阵. 下列定理将在书末附录A中给出证明.
定理1 (简化阶梯形矩阵的唯一性)
每个矩阵行等价于唯一的简化阶梯形矩阵.
若矩阵A等价于阶梯形矩阵U,称U为A的阶梯形(或行阶梯形);若U是简化阶梯形,称U为A的简化阶梯形. 大部分矩阵程序用RREF作为简化(行)阶梯形的缩写,有些用REF作为(行)阶梯形的缩写.
主元位置
当矩阵经行变换化为阶梯形后,经进一步的行变换将矩阵化为简化阶梯形时,先导元素的位置并不改变. 因简化阶梯形是唯一的,当给定矩阵化为任何一个阶梯形时,先导元素总是在相同的位置上. 这些先导元素对应于简化阶梯形中的先导1.
定义 矩阵中的主元位置是A中对应于它的阶梯形中先导元素的位置. 主元列是A的含有主元位置的列.
在例1中,符号(?)对应主元位置. 前四章中的许多基本概念都与矩阵中主元位置有联系.
例2 把下列矩阵A用行变换化为阶梯形,确定主元列.
4

解 利用1.1节的方法. 最左边的非零列的第一个元素就是第一个主元位置. 这个位置必须放一个非零元,即主元素. 最好将第一行与第四行对换,这样可以避免分数运算.
5

把第一行的倍数加到其他各行,以使主元1下面各元素变成0. 第二行的主元位置必须尽量靠左,即在第二列. 我们选择这里的2作为第二个主元.
1 (1)

把第二行的-5/2倍加到第三行,3/2倍加到第4行.

                  ![2](https://yqfile.alicdn.com/135d1680abd252deb6f5ae3d880ab7dd085a08e2.png)        (2)

(2)中的矩阵与1.1节所遇到的不同,这里没有办法在第3列中找到先导元素!我们不能利用第一行或第二行,否则会破坏已产生的阶梯形的先导元素的排列. 然而若我们对换第3行和第4行,我们可在第4列产生先导元素.
3

此矩阵已是阶梯形. 第1、2、4列是主元列.
4 (3)

如例2所示,主元就是在主元位置上的非零元素,用来通过行变换把下面的元素化为0,例2中的主元是1,2,-5,注意这些元素与矩阵A中同一位置的元素不相同,如(3)式所示.
根据例2,我们给出一个有效的算法,变换矩阵成阶梯形或简化阶梯形. 认真掌握这一算法将使你获益匪浅.
行化简算法
下列算法包含四个步骤,它产生一个阶梯形矩阵,第五步产生简化阶梯形矩阵. 我们用一个实例来说明这一算法.
例3 用行初等变换把下列矩阵先化为阶梯形,再化为简化阶梯形.
1


第一步,由最左的非零列开始. 这是一个主元列. 主元位置在该列顶端.
2

第二步,在主元列中选取一个非零元作为主元. 若有必要的话,对换两行使这个元素移到主元位置上.
对换第1、3两行(也可对换1、2两行)
3

第三步,用倍加行变换将主元下面的元素变成0.
我们当然可以把第1行除以主元3. 但这里第1列有两个3,我们只需把第1行的-1倍加到第2行.
4

第四步,暂时不管包含主元位置的行以及它上面的各行,对剩下的子矩阵使用上述的三个步骤直到没有非零行需要处理为止.
暂时不看第一行,第一步指出,第2列是下一个主元列,第二步,我们选择该列中“顶端”的元素作为主元.
5

对第三步,我们可先把子矩阵的“顶行”除以主元2. 不过也可以把这一行的-3/2倍加到下面的一行. 这就得到
6

暂时不看第二个主元所在的行,我们剩下一个只有一行的新子矩阵.
1

新的子矩阵已不需要处理了,我们已得到整个矩阵的阶梯形. 若我们需要简化阶梯形,进行下一个步骤.
第五步,由最右面的主元开始,把每个主元上方的各元素变成0. 若某个主元不是1,用倍乘变换将它变成1.
2

下一个主元在第2行,将这行除以这个主元.
3

将第2行的9倍加到第1行
4

最后将第1行除以主元3
5

这就是原矩阵的简化阶梯形. ?
第1~4步称为行化简算法的向前步骤,产生唯一的简化阶梯形的第5步,称为向后步骤.
数值计算的注解 在第2步中,计算机程序通常选择一列中绝对值最大的元素作为主元. 这种方法通常称为部分主元法,可以减少计算中的舍入误差.
线性方程组的解
行化简算法应用于方程组的增广矩阵时,可以得出线性方程组解集的一种显式表示法.
例如,设某一个线性方程组的增广矩阵已经化为等价的简化阶梯形
1

因为增广矩阵有4列,所以有3个未知数,对应的线性方程组是
2 (4)
对应于主元列的变量x1x2 称为基本变量 .1其他变量如x3 ,称为自由变量.
当一个线性方程组是相容的,如方程组(4)解集可以用显式表示,只要把方程的简化形式解出来,用自由变量表示基本变量即可. 由于简化阶梯形使每个基本变量仅包含在一个方程中,这是很容易的. 在方程组(4)中,我们可由第1个方程解出 ,第2个方程解出 (第3个方程对未知数没有任何限制,可以不管它).
4 (5)
我们说 是自由变量,是指它可取任意的值. 当 x3的值选定后,由(5)中的前2个方程就可以确定 x1x2 的值,例如,当 x3=0得出解(1,4,0);当 x3_1,得出解(6,3,1),x3 的不同选择确定了方程组的不同的解,方程组的每个解由 x3的值的选择来确定.
(5)式给出的解称为方程组的通解,因为它给出了所有解的显式表示.
例4 求方程组的解,该方程组的增广矩阵已经化为
4_1
解 该矩阵已是阶梯形,但我们在解出基本变量前仍需把它化为简化阶梯形,记号“~”表示它前面和后面的两个矩阵是行等价的(译者注:该记号在中文教科书中并未通用).
4_2
增广矩阵有6列,所以原方程组有5个变量,对应的方程组为

                 ![4_3](https://yqfile.alicdn.com/3e8e58e33603bb5e6c5665394e0698a8eedf7778.png)          (6)

矩阵的主元列是第1,3,5列,基本变量为 x1x3x5,剩下的变量 x2x4为自由变量,解出基本变量,我们得通解为

             ![4_4](https://yqfile.alicdn.com/8bceb4842347f22adba9187356c111c28c30a7a1.png)              (7)

注意,由方程组(6)的第3个方程,x5 的值是确定的.
解集的参数表示
解集的表示式(5)和(7)称为解集的参数表示,其中自由变量作为参数. 解方程组就是要求出解集的这种参数表示或确定它无解.
当一个方程组是相容的,且具有自由变量,则它的解集具有多种参数表示. 例如,在方程组(4)中,我们可以把方程2的5倍加到方程1,得等价方程组
4_5
这时可把 看作参数,用 表示 和 ,得到解集的第一种表示法. 不过,我们总是约定使用自由变量作为参数来表示解集(本书末尾的习题解答也采用这一约定).
当方程组是不相容时,解集是空集,无论方程组是否有自由变量,此时,解集无参数表示.
回代
考虑下列方程组,它的增广矩阵已是阶梯形,但还不是简化阶梯形:
4_6
计算机程序通常用回代法解此方程组,而不是求它的简化阶梯形. 也就是说,程序先解第3个方程,用 x5表示 x4,并把此表达式代入第2个方程,从中解出 x2,最后把x2x4的表达式代入第1个方程解出 x1.
我们的矩阵算法,即行化简算法的向后步骤,它求出简化阶梯形,与回代法所需算术运算次数相同. 但矩阵算法通常减少了手算时出错的可能性. 我强烈建议你仅使用简化阶梯形来解方程组!与本书配合的学习指导书给出一些好的建议帮助你更快更准确地解方程组.
数值计算的注解 一般地,行化简算法的向前步骤比向后步骤需要更多运算. 解方程组的算法通常用浮算来衡量. 一个浮算(flop或浮点运算)就是两个浮点实数进行一次算术运算(+,-,*,/). 对一个1矩阵,化简为阶梯形大约需要 1次浮算(当 n相当大,比如说n>=30 时,大约是1 次浮算),而进一步化为简化阶梯形大约最多只需n2次浮算.
存在与唯一性问题
虽然非简化的阶梯形并不适于解线性方程组,这种形式对于回答1.1节中提出的两个基本问题已经足够了.
例5 确定下列线性方程组的解是否存在且唯一
1

解 该方程组的增广矩阵在例3中化简为

 ![2](https://yqfile.alicdn.com/d67c881aa6b98de57e3bfd2481d49f08f5117f47.png)                     (8)

基本变量是 1;自由变量是 2. 这里没有类似0=1的造成不相容方程组的方程,所以我们可用回代法求解. 但解的存在性在方程(8)中已经清楚了. 同时,解不是唯一的,因为有自由变量存在. 2的每一种选择都确定一组解,所以此方程组有无穷多组解.
当一个方程组化为阶梯形,且不包含形如0=b 的方程,其中3 ,每个方程包含一个基本变量,它的系数非零. 或者这些基本变量已完全确定(此时无自由变量),或者至少有一个基本变量可用一个或多个自由变量表示,对前一种情形,有唯一的解;对后一种情形,有无穷多个解(对应自由变量的每一个选择都有一个解).
上述讨论证明了以下定理
定理2 (存在与唯一性定理)
线性方程组相容的充要条件是增广矩阵的最右列不是主元列. 也就是说,增广矩阵的阶梯形没有形如
1
的行,若线性方程组相容,它的解集可能有两种情形:(ⅰ)当没有自由变量时,有唯一解; (ⅱ)若至少有一个自由变量,有无穷多解.
以下是求解线性方程组的步骤.

应用行化简算法解线性方程组

  1. 写出方程组的增广矩阵.
  2. 应用行化简算法把增广矩阵化为阶梯形. 确定方程组是否有解,如果没有解则停止;否则进行下一步.
  3. 继续行化简算法得到它的简化阶梯形.
  4. 写出由第3步所得矩阵所对应的方程组.
  5. 把第4步所得的每个方程改写为用自由变量表示基本变量的形式.
    练习题
  6. 求出下列增广矩阵对应的方程组的解
    1
  7. 求出下列方程组的通解
    1

习题1.2
1
2
3
4

练习题答案

  1. 增广矩阵的简化阶梯形和相应的方程组是
    1_1

基本变量是 x1x2 ,通解为(见图1-6):

1_2

注意:要点是一般解要描述每个变量,参数要明显标出. 下面的写法是不正确的:
1_3

在这种写法中,似乎x2x3都是自由变量,这当然是不对的.

  1. 当我们行化简方程组的增广矩阵,得
    1_4

所得阶梯矩阵说明方程是不相容的,因它的最右列是主元列;第3行相应于方程0=5,因此不必再进行任何行变换. 注意,自由变量在此问题中并不起作用,因为方程组是不相容的.

相关文章
|
消息中间件 存储 算法
深度揭秘!Kafka和ZooKeeper之间的相爱相杀
**摘要:** 本文介绍了Kafka和ZooKeeper的角色及其关系。Kafka是分布式流处理平台,用于实时数据管道和流应用;ZooKeeper是分布式协调服务,处理同步和集群协调。在Kafka中,ZooKeeper存储元数据,管理集群成员,选举Controller。随着KIP-500提案,Kafka计划移除对ZooKeeper的依赖,转向基于Raft的共识机制,以简化架构、提高性能和一致性。此外,文章提到了etcd作为基于Raft的元数据存储系统的应用。本文旨在帮助读者理解ZooKeeper在Kafka面试中的重要性,并了解Kafka的未来发展方向。
1612 2
|
SQL 关系型数据库 MySQL
SQL分页查询详解
分页查询是在数据库中检索数据的一种常见需求。它允许我们从大型数据集中获取有限数量的数据,以便于显示在应用程序的用户界面上。在本文中,我们将详细介绍SQL中的分页查询,包括基本语法、常见应用场景以及如何在不同数据库管理系统中执行分页查询。
2443 1
|
Web App开发 前端开发 JavaScript
Flask 入门系列教程(一)
Flask 入门系列教程(一)
497 2
|
并行计算 PyTorch Linux
pytorch安装GPU版本 (Cuda12.1)教程: Windows、Mac和Linux系统下GPU版PyTorch(CUDA 12.1)快速安装
pytorch安装GPU版本 (Cuda12.1)教程: Windows、Mac和Linux系统下GPU版PyTorch(CUDA 12.1)快速安装
10798 0
|
测试技术 uml
UML总结----六种关系和九种图的作用
UML总结----六种关系和九种图的作用
373 0
|
存储 自然语言处理 安全
搭建自己的私有云盘工具总结
用网盘工具搭建自己的私有云 优点:自己控制数据、不限速(但取决于服你的务器)、功能多、无广告 缺点:稳定性不如大公司、成本高、有一定技术门槛 请在下面选一个自己需要的即可,对应官网有详细的安装说明
5711 0
|
前端开发 JavaScript
3D魔方小游戏(附源码)
一说到魔方 想必大家都熟悉的不能再熟悉了 自己或者曾今自己的朋友非常喜欢玩的一款游戏 言归正卷 那么实用前端的技术怎么实现3D的魔方制作呢 从以下几个方面就不难发现 前端实现3D魔方都得需要用上这些技术栈
3D魔方小游戏(附源码)
|
SQL Dubbo 前端开发
传智健康day01 项目概述和环境搭建
传智健康day01 项目概述和环境搭建
传智健康day01 项目概述和环境搭建
|
数据库 Java 数据库连接
带你读《HikariCP数据库连接池实战》之二:数据库连接池江湖
本书不仅对市面上常见的连接池组件进行了全方位比较和分析,还以实战的角度深入介绍了高性能HikariCP连接池的使用、原理与维护。
|
缓存
http method and status code
http method HEAD: 只返回相应的header POST: 一般用于提交表单 PUT: 向Web服务器上传文件 GET: 查 DELET: 删除 status code 1xx与2xx: 返回提示信息 3xx: 重定向 4xx: 客户端错误 5xx: 服务器端错误 具体 20...
1170 0