1 00:00:00,968 --> 00:00:04,269 我下面来讲另一种求3×3矩阵的逆矩阵的方法 2 00:00:04,269 --> 00:00:07,146 我更喜欢这种方法,觉得更有趣些 3 00:00:07,146 --> 00:00:09,188 而且不那么容易犯错 4 00:00:09,188 --> 00:00:11,268 但是,如果我没记错的话 5 00:00:11,268 --> 00:00:12,984 《代数2》好像不教这个内容 6 00:00:12,984 --> 00:00:15,226 这也是为什么我先讲前面那个方法 7 00:00:15,226 --> 00:00:17,064 我们先来过一遍新方法 8 00:00:17,064 --> 00:00:20,088 以后的视频里,我会解释这个方法的道理 9 00:00:20,088 --> 00:00:21,911 知其所以然是很重要的 10 00:00:21,911 --> 00:00:24,017 但在线性代数里,有那么几个知识点 11 00:00:24,017 --> 00:00:25,830 最好先掌握怎么操作 12 00:00:25,845 --> 00:00:27,591 我认为这是其中之一 13 00:00:27,591 --> 00:00:29,340 之后我们再来讲为什么 14 00:00:29,340 --> 00:00:31,840 因为,“怎么操作”是个很机械的过程 15 00:00:31,840 --> 00:00:34,071 只涉及一些基础的运算 16 00:00:34,343 --> 00:00:39,142 而“为什么”则更加深入 17 00:00:39,142 --> 00:00:41,434 所以我把它留到以后来讲 18 00:00:41,434 --> 00:00:44,219 通常,当你掌握了“怎么操作”时 19 00:00:44,219 --> 00:00:46,803 也就有信心进行更深入的思考了 20 00:00:46,804 --> 00:00:49,567 言归正传,我们来看原矩阵 21 00:00:50,133 --> 00:00:52,655 上段视频里的原矩阵是多少来着? 22 00:00:52,655 --> 00:01:03,979 它是1, 0, 1, 0, 2, 1, 1, 1, 1 23 00:01:04,414 --> 00:01:06,842 要求它的逆矩阵 24 00:01:07,254 --> 00:01:10,155 我们介绍新的求逆方法,名叫: 25 00:01:10,155 --> 00:01:13,748 高斯-若当消元法 26 00:01:13,948 --> 00:01:17,828 整个过程看起来就像是魔法一样 27 00:01:17,828 --> 00:01:20,368 以后的视频里会有更详细的解释 28 00:01:20,368 --> 00:01:22,427 我们先来“扩增”(augment)这个矩阵 29 00:01:22,427 --> 00:01:23,977 什么叫“扩增”(augment)? 30 00:01:23,977 --> 00:01:27,046 就是给它加上些东西(这里就是在原函数右边写上单位矩阵) 31 00:01:27,046 --> 00:01:31,518 我习惯画一条分隔线;有些人不画,也是可以的 32 00:01:31,557 --> 00:01:37,733 在分隔线的另一边,我写上同样大小的单位矩阵 33 00:01:37,733 --> 00:01:41,324 这里是3×3矩阵,所以写上3×3的单位矩阵 34 00:01:41,324 --> 00:01:50,454 即1, 0, 0, 0, 1, 0, 0, 0, 1 35 00:01:51,742 --> 00:01:54,506 好了,接下来做什么呢? 36 00:01:55,350 --> 00:01:59,653 我会进行一系列“基本行运算”(elementary row operation) 37 00:01:59,653 --> 00:02:04,459 我呆会儿再教你什么叫做“基本行运算” 38 00:02:04,566 --> 00:02:07,240 但是无论我对左边矩阵的做什么操作 39 00:02:07,240 --> 00:02:09,623 我都要对右边的相应行做同样的运算 40 00:02:09,623 --> 00:02:14,211 我的目标是:对左边矩阵进行一系列的运算 41 00:02:14,211 --> 00:02:17,232 当然也对右边矩阵进行同样的操作 42 00:02:17,232 --> 00:02:21,563 使得左边的矩阵,最终变成单位矩阵 43 00:02:21,670 --> 00:02:24,370 而当左边变成单位矩阵的时候 44 00:02:24,370 --> 00:02:28,799 右边的矩阵,就会变成左边原矩阵的逆矩阵 45 00:02:28,799 --> 00:02:31,533 当左边变成单位矩阵的时候 46 00:02:31,533 --> 00:02:35,012 我们会管它叫“简式行阶梯形”(reduced row echelon form) 47 00:02:35,012 --> 00:02:36,746 后面会有专门的视频来讲这个 48 00:02:36,746 --> 00:02:39,158 线性代数里有很多术语和定义 49 00:02:39,158 --> 00:02:41,714 但它们实际上都是很简单的概念 50 00:02:41,714 --> 00:02:43,554 先不扯远了,我们动手计算 51 00:02:43,554 --> 00:02:45,509 算完后你们就会更清楚些 52 00:02:45,509 --> 00:02:47,440 至少会清楚计算过程 53 00:02:47,440 --> 00:02:49,670 虽然可能还无法理解道理何在 54 00:02:49,670 --> 00:02:51,007 我说过我们要进行一系列运算 55 00:02:51,007 --> 00:02:52,606 所以首先,我们先要弄明白: 56 00:02:52,606 --> 00:02:54,629 什么样的运算是合法的? 57 00:02:54,629 --> 00:02:55,883 也就是“基本行运算” 58 00:02:55,883 --> 00:02:57,803 合法的运算包括下面这些: 59 00:02:58,167 --> 00:03:03,701 我可以拿某一行,乘上一个倍数 60 00:03:03,758 --> 00:03:05,127 这是可以的 61 00:03:05,383 --> 00:03:07,953 我可以交换任意两行的位置 62 00:03:07,953 --> 00:03:10,573 当然,如果我在左边交换第一和第二行 63 00:03:10,573 --> 00:03:12,785 我也必须在右边做同样的操作 64 00:03:12,785 --> 00:03:16,945 我还可以拿某一行加上或减去另一行 65 00:03:16,945 --> 00:03:20,558 比如说,我可以拿第三行,加上第二行 66 00:03:20,558 --> 00:03:23,620 所以第三行的数字就变成它们的和 67 00:03:23,620 --> 00:03:25,736 等下你们就明白这是什么意思了 68 00:03:25,736 --> 00:03:27,764 而且,这些运算可以组合起来 69 00:03:27,764 --> 00:03:30,396 比如说,拿第二行乘以负1 70 00:03:30,396 --> 00:03:33,149 然后把结果加到第三行上 71 00:03:33,565 --> 00:03:40,900 你可能觉得这挺像在解线性方程组 72 00:03:41,000 --> 00:03:43,641 确实如此,因为矩阵就是一个 73 00:03:43,641 --> 00:03:46,410 用来表示方程组的好方法 74 00:03:46,410 --> 00:03:48,102 这一点我以后会给你们解释 75 00:03:48,151 --> 00:03:51,729 回到主题,我们来做点“基本行运算” 76 00:03:51,729 --> 00:03:54,979 把左边这个矩阵转化成“简式行阶梯形” 77 00:03:54,979 --> 00:03:58,871 其实也就是说“我们把它化成单位矩阵” 78 00:03:59,531 --> 00:04:01,067 我们的目标也就是: 79 00:04:01,067 --> 00:04:03,127 得让这一条对角线上全变成1 80 00:04:03,127 --> 00:04:04,580 剩下的都变成0 81 00:04:04,580 --> 00:04:07,479 我们来看看有没有什么简便的方法 82 00:04:08,352 --> 00:04:10,674 我们把新矩阵写在下面 83 00:04:10,674 --> 00:04:15,699 第一步,我要把左下角的1化成0 84 00:04:16,143 --> 00:04:17,628 看起来很简单 85 00:04:17,689 --> 00:04:19,843 前两行不变,照写下来 86 00:04:19,843 --> 00:04:20,996 1, 0, 1 87 00:04:21,575 --> 00:04:22,975 然后是分隔线 88 00:04:23,313 --> 00:04:24,683 1, 0, 0 89 00:04:25,044 --> 00:04:27,397 第二行也不做任何操作 90 00:04:27,397 --> 00:04:28,920 0, 2, 1 91 00:04:33,357 --> 00:04:35,761 0, 1, 0 92 00:04:36,701 --> 00:04:39,645 我现在的目标,是要拿这一行 93 00:04:39,645 --> 00:04:43,677 把它的第一个数字1,变成0写在这里 94 00:04:43,677 --> 00:04:47,664 这样一来,我们就朝单位矩阵前进了一步 95 00:04:48,216 --> 00:04:50,054 怎么让这里得到0? 96 00:04:50,054 --> 00:04:55,179 我可以这么做:拿上面的第三行减去第一行 97 00:04:55,671 --> 00:04:59,780 然后把结果写在新的第三行的位置上 98 00:05:00,288 --> 00:05:03,892 第三行减去第一行,结果是什么? 99 00:05:04,452 --> 00:05:07,054 1减去1,得0 100 00:05:07,673 --> 00:05:10,435 1减去0,得1 101 00:05:11,001 --> 00:05:13,354 1减去1,得0 102 00:05:13,974 --> 00:05:15,946 我在左边做了一次减法 103 00:05:15,946 --> 00:05:17,908 也必须在右边做相同的操作 104 00:05:17,908 --> 00:05:20,227 也就是拿第三行减去第一行 105 00:05:20,227 --> 00:05:23,392 即,0减去1,得负1 106 00:05:23,818 --> 00:05:26,550 0减去0,得0 107 00:05:27,069 --> 00:05:29,476 1减去0,得1 108 00:05:30,044 --> 00:05:30,951 很好 109 00:05:31,233 --> 00:05:32,880 接下来怎么办? 110 00:05:33,105 --> 00:05:37,999 现在左边的第三行,两边是0,中间是1 111 00:05:37,999 --> 00:05:41,185 很像单位矩阵里的第二行 112 00:05:41,622 --> 00:05:43,615 那何不直接交换这两行呢? 113 00:05:43,615 --> 00:05:45,761 直接交换第二行和第三行 114 00:05:45,761 --> 00:05:47,392 我们把它写下来 115 00:05:47,518 --> 00:05:49,654 交换第二行和第三行 116 00:05:49,715 --> 00:05:52,758 第一行不变,还是1, 0, 1 117 00:05:54,956 --> 00:05:57,541 右边的第一行也是一样 118 00:05:58,123 --> 00:06:01,853 现在我们交换第二行和第三行 119 00:06:01,853 --> 00:06:05,198 所以第二行变成:0, 1, 0 120 00:06:05,198 --> 00:06:07,106 右边也同样交换 121 00:06:07,270 --> 00:06:09,400 变成:负1, 0, 1 122 00:06:09,400 --> 00:06:11,969 直接交换两行的位置就行了 123 00:06:12,612 --> 00:06:15,707 所以第三行现在就变成了前面的第二行 124 00:06:15,707 --> 00:06:17,691 0, 2, 1 125 00:06:18,231 --> 00:06:20,792 这边是0, 1, 0 126 00:06:21,924 --> 00:06:22,755 好的 127 00:06:23,169 --> 00:06:24,723 接下来又该怎么办? 128 00:06:24,723 --> 00:06:27,333 如果第三行的这个2变成0就好了 129 00:06:27,333 --> 00:06:30,111 这样一来等于朝单位矩阵前进了一大步 130 00:06:30,413 --> 00:06:32,705 我怎么才能把它变成0呢? 131 00:06:32,813 --> 00:06:37,109 拿第三行减去2倍的第二行怎么样? 132 00:06:37,285 --> 00:06:40,483 2倍的第二行,中间的数就是2 133 00:06:40,522 --> 00:06:44,709 从第三行中减去它,中间就得0 134 00:06:44,779 --> 00:06:46,440 就这么办 135 00:06:47,720 --> 00:06:51,238 第一行,很幸运地,一直不用动 136 00:06:51,253 --> 00:06:52,769 我们照写下来 137 00:06:52,769 --> 00:06:57,960 1, 0, 1, 1, 0, 0 138 00:06:59,051 --> 00:07:02,238 第二行这回也不需要变 139 00:07:02,238 --> 00:07:05,251 右边是:负1, 0, 1 140 00:07:05,554 --> 00:07:07,285 我刚才说要怎么做来着? 141 00:07:07,285 --> 00:07:12,494 我要从第三行里减去“2倍的第二行” 142 00:07:13,210 --> 00:07:18,037 就是:0,减去“2乘以0”,得0 143 00:07:18,994 --> 00:07:23,780 2,减去“2乘以1”,就是0 144 00:07:24,500 --> 00:07:28,842 1,减去“2乘以0”,得1 145 00:07:29,175 --> 00:07:43,858 0,减去“2乘以负1”,就是0减去负2,得正2 146 00:07:45,136 --> 00:07:49,508 1,减去“2乘以0”,还是等于1 147 00:07:50,228 --> 00:07:56,242 0,减去“2乘以1”,得到负2 148 00:07:56,807 --> 00:07:58,169 我都算对了吗? 149 00:07:58,169 --> 00:07:59,299 我来检查下 150 00:07:59,299 --> 00:08:04,725 0减去“2乘以负1”,“2乘以负1”等于负2 151 00:08:04,980 --> 00:08:06,780 0减去负2,所以是正2 152 00:08:06,780 --> 00:08:08,222 好的,快完成了 153 00:08:08,222 --> 00:08:10,169 左边看起来已经很像单位矩阵了 154 00:08:10,169 --> 00:08:11,763 或者说“简式行阶梯形” 155 00:08:11,778 --> 00:08:13,586 唯一不同的是右上角的1 156 00:08:13,586 --> 00:08:16,241 所以我们终于要对第一行下手了 157 00:08:16,791 --> 00:08:18,468 我应该怎么做? 158 00:08:18,819 --> 00:08:23,867 我从第一行里减去第三行怎么样? 159 00:08:23,867 --> 00:08:26,438 因为右上角的1减去右下角的1,就得0 160 00:08:26,438 --> 00:08:27,869 我们把它写下来 161 00:08:27,938 --> 00:08:31,087 从第一行里减去第三行 162 00:08:31,806 --> 00:08:34,895 1减去0,得1 163 00:08:35,754 --> 00:08:38,440 0减去0,得0 164 00:08:38,603 --> 00:08:41,257 1减去1,得0 165 00:08:41,311 --> 00:08:43,188 这就是我们想要的 166 00:08:43,602 --> 00:08:47,884 然后是:1减去2,得负1 167 00:08:48,360 --> 00:08:52,867 0减去1,得负1 168 00:08:53,665 --> 00:08:57,666 0减去负2,就得到正2 169 00:08:59,362 --> 00:09:01,554 其余的两行不变 170 00:09:02,299 --> 00:09:07,341 0, 1, 0, 负1, 0, 1 171 00:09:08,058 --> 00:09:15,158 下面是:0, 0, 1, 2, 1, 负2 172 00:09:15,987 --> 00:09:17,164 大功告成 173 00:09:17,164 --> 00:09:19,933 我们对左边的矩阵做了一系列运算 174 00:09:19,933 --> 00:09:23,096 也对右边的矩阵进行同样的操作 175 00:09:23,104 --> 00:09:27,482 左边的变成了单位矩阵,或者叫“简式行阶梯形” 176 00:09:27,482 --> 00:09:30,219 所用的方法叫“高斯-若当消元法” 177 00:09:30,446 --> 00:09:32,182 那么右边的这是什么? 178 00:09:32,182 --> 00:09:35,264 它就是左边原矩阵的逆矩阵 179 00:09:36,793 --> 00:09:39,300 原矩阵和它相乘,就等于单元矩阵 180 00:09:39,300 --> 00:09:43,223 如果原矩阵叫A的话 181 00:09:43,927 --> 00:09:45,994 那么这个就是“A逆” 182 00:09:46,760 --> 00:09:47,998 就这么简单 183 00:09:47,998 --> 00:09:51,423 你们可以看到,这只花了我上次所用时间的一半 184 00:09:51,454 --> 00:09:53,061 而且计算更容易 185 00:09:53,061 --> 00:09:57,264 不用求伴随矩阵、余因子、行列式什么的 186 00:09:58,248 --> 00:10:01,452 为了帮助你们理解,我稍微讲讲这个方法的原理 187 00:10:01,452 --> 00:10:07,042 我对左边这个矩阵所做的每一步操作 188 00:10:07,042 --> 00:10:10,248 都可以视为是对它做了一次矩阵乘法 189 00:10:10,248 --> 00:10:12,649 比如,要从原矩阵,到下面这个矩阵 190 00:10:12,649 --> 00:10:14,903 就好像说,存在某个矩阵 191 00:10:14,903 --> 00:10:17,959 乘以它的效果,就等于做了这第一步的操作 192 00:10:18,046 --> 00:10:21,869 而第二步操作,相当于乘上了另一个矩阵 193 00:10:21,869 --> 00:10:24,469 所以实质上,我们相当于拿原矩阵 194 00:10:24,469 --> 00:10:27,867 乘上一系列的矩阵,最终得到单位矩阵 195 00:10:27,867 --> 00:10:30,899 这一系列矩阵,叫做“消元矩阵”(elinimation matrix) 196 00:10:30,899 --> 00:10:34,353 我们把它们相乘,就得到原矩阵的逆矩阵 197 00:10:34,353 --> 00:10:35,614 这是什么意思呢? 198 00:10:35,863 --> 00:10:39,221 比如,我们有原矩阵A 199 00:10:40,867 --> 00:10:47,292 从A到下面这个矩阵,相当于乘上了一个消元矩阵 200 00:10:47,336 --> 00:10:50,554 要是你们觉得一头雾水,可以完全忽略 201 00:10:50,554 --> 00:10:53,092 但它也可能会有所启发 202 00:10:53,485 --> 00:10:58,108 因为第一步操作消去了元素(3, 1)(第三行第一列) 203 00:10:58,108 --> 00:11:03,270 所以我们管这一步对应的消元矩阵叫做E(3,1) 204 00:11:04,022 --> 00:11:07,398 而第二步操作,相当于乘上另一个矩阵 205 00:11:07,398 --> 00:11:09,441 以后的视频里,会有更详细的解释 206 00:11:09,441 --> 00:11:11,729 我会教你们如何构造这些消元矩阵 207 00:11:11,852 --> 00:11:15,570 这里的第二步操作,是两行元素交换位置 208 00:11:15,570 --> 00:11:20,035 我们姑且管它对应的矩阵,叫做“交换矩阵”S 209 00:11:20,090 --> 00:11:24,951 乘上它,效果是交换第二行和第三行,所以写成S(2, 3) 210 00:11:24,951 --> 00:11:28,180 第三步也相当于一次乘法 211 00:11:28,334 --> 00:11:32,380 我们消去了什么?消去了第三行第二列 212 00:11:32,642 --> 00:11:36,072 所以其对应的消元矩阵叫做E(3, 2) 213 00:11:36,530 --> 00:11:40,329 最后一步,也相当于乘上了一个消元矩阵 214 00:11:40,415 --> 00:11:44,363 消去了右上角的元素,也就是第一行第三列 215 00:11:44,363 --> 00:11:47,162 所以它叫做E(1, 3) 216 00:11:47,162 --> 00:11:51,453 你们现在不用搞清楚这些矩阵长什么样 217 00:11:51,453 --> 00:11:53,743 后面我会教你们如何去构建它们 218 00:11:53,743 --> 00:11:55,673 我现在只是想让你们提前确信: 219 00:11:55,673 --> 00:12:00,764 这里的每一步操作,都可以通过“乘上一个矩阵”来完成 220 00:12:01,143 --> 00:12:04,009 而我们知道,乘上这些矩阵之后 221 00:12:04,009 --> 00:12:06,516 原矩阵A就变成了单位矩阵I 222 00:12:06,516 --> 00:12:07,532 也就是这里 223 00:12:07,862 --> 00:12:10,592 所以这几个矩阵的乘积 224 00:12:10,592 --> 00:12:13,046 如果我们把它们相乘的话 225 00:12:13,046 --> 00:12:15,315 肯定就等于A的逆矩阵 226 00:12:15,616 --> 00:12:21,870 这些消元、交换矩阵乘起来,肯定等于A的逆矩阵 227 00:12:22,532 --> 00:12:25,949 因为拿它们乘上A,结果等于单位矩阵 228 00:12:26,515 --> 00:12:28,990 那么,这会给我们什么结论呢? 229 00:12:28,990 --> 00:12:32,628 如果这些矩阵相乘等于逆矩阵 230 00:12:32,628 --> 00:12:36,769 那么拿单位矩阵乘上它们 231 00:12:37,366 --> 00:12:40,556 也就是:第一步乘以E(3, 1) 232 00:12:40,556 --> 00:12:42,729 第二步乘以S(2, 3) 233 00:12:42,729 --> 00:12:44,552 第三步乘以E(3, 2) 234 00:12:44,583 --> 00:12:45,675 如此往复 235 00:12:45,926 --> 00:12:48,468 当你把这些步骤合在一起 236 00:12:48,468 --> 00:12:52,666 实际上就相当于拿逆矩阵乘以单位矩阵,明白吗? 237 00:12:52,666 --> 00:12:54,678 我不希望把你弄糊涂 238 00:12:54,678 --> 00:12:58,359 你明白我所说的当然好,不明白也没关系 239 00:12:58,359 --> 00:13:00,850 但是,如果你着眼于大效果的话 240 00:13:00,850 --> 00:13:03,754 这些步骤的效果,实际上相当于: 241 00:13:03,754 --> 00:13:10,255 把这个扩增矩阵的左右两边都乘上逆矩阵 242 00:13:10,554 --> 00:13:13,874 左边的乘上逆矩阵,得到单位矩阵 243 00:13:14,410 --> 00:13:18,921 而右边,单位矩阵乘上逆矩阵,当然就得到逆矩阵 244 00:13:19,380 --> 00:13:21,607 话说回来,我不想把你弄糊涂 245 00:13:21,607 --> 00:13:23,615 只是希望能给你一点点解释 246 00:13:23,615 --> 00:13:26,189 以后我会用更具体的例子来解释它的原理 247 00:13:26,189 --> 00:13:28,372 目前你只要知道有这么个简便的方法 248 00:13:28,372 --> 00:13:32,822 不用去算伴随、余因子、子式矩阵、行列式之类的 249 00:13:32,923 --> 00:13:35,246 好的,那我们下段视频再见