【线性代数】【一】1.3 消元法的矩阵表示与初等变换

文章目录

  • 前言
  • 一、行向量的线性组合
  • 二、初等变换
  • 总结


前言

前文中介绍了线性方程组的矩阵表示,并从矩阵表示的角度分析了消元法的过程与结果。那么消元法过程中采取的换行,数乘,以及乘系数求和操作放在矩阵中,会是什么样呢?可以用矩阵运算的方式表示这些操作吗?本文将解答这个问题


一、行向量的线性组合

首先我们复习一下1.1中提到的,将线性方程组看作求解一组(列)向量的加权求和的系数,即线性组合系数。如下式所示

A x = ( a 1 a 2 a 3 ) x = b = x 1 a 1 + x 2 a 2 + x 3 a 3 \mathbf{Ax} = \left( \begin{array}{ccc} \bm{a}_1 & \bm{a}_2 & \bm{a}_3 \\ \end{array} \right)x=b=x_1\bm{a}_1+x_2\bm{a}_2+x_3\bm{a}_3 Ax=(a1a2a3)x=b=x1a1+x2a2+x3a3

其中 a i \bm{a}_i ai为矩阵中的列向量。那么通过对称性我们容易想到,如果我们把 x x x放在矩阵左边会怎样?为了保证矩阵乘法仍然可以进行(左矩阵的列数等于右矩阵的行数),也为了未知数的系数仍然与原线性方程组保持一致,我们需要对 A \bm{A} A x x x做转置,从而得到下列式子:

x T A T = x ( a 1 T a 2 T a 2 T ) = b = x 1 a 1 T + x 2 a 2 T + x 3 a 3 T \mathbf{x^TA^T} = \bm{x}\left( \begin{array}{c} \bm{a}_1^T \\ \bm{a}_2^T\\ \bm{a}_2^T \\ \end{array} \right)=b=x_1\bm{a}_1^T+x_2\bm{a}_2^T+x_3\bm{a}_3^T xTAT=x a1Ta2Ta2T =b=x1a1T+x2a2T+x3a3T

可以看到,虽然行列关系变了,但是得到方程仍然不变,只是原本对列向量做线性组合,变成了对行向量 a i \bm{a}_i ai做线性组合。

因此,一个线性方程组可以看成是对列向量进行线性组合,也可以看成是对行向量进行线性组合,这取决于在做矩阵表示时给系数矩阵 A A A和未知数矩阵 x x x安排的位置。左乘 x x x就是对矩阵做行处理,右乘 x x x就是对矩阵做列处理。

二、初等变换

现在,我们回顾一下在消元法中所作的三种操作:换行,数乘,乘系数求和(我们称为初等行变换)。有没有发现,所有这三种操作就是在对矩阵的行向量做线性组合。

通过矩阵乘法,我们知道矩阵运算得到的第 i i i行的结果,就是以左乘矩阵第 i i i行为线性组合系数,对行向量进行线性组合。那么如果我想交换矩阵的第 i i i行和第 j j j行,同时保持其他行不变。那么我们就需要左乘一个这样矩阵:

i i i行的第 j j j列要是1,其他列均为0;第 j j j行的第 i i i列为1,第 j j j列为0;其他行只有行列相等处元素(即主对角线)为1,其余为0。

例如一个交换第二行第三行的左乘矩阵如下:

E = ( 1 0 0 0 0 1 0 1 0 ) \mathbf{E} = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0& 0&1 \\ 0 & 1 & 0 \\ \end{array} \right) E= 100001010

第一行对矩阵左线性组合,结果只有第一行向量被保留,其余向量系数均为零,因此计算结果第一行向量仍然不变。类似的,要交换的两行恰好错开,分别保留了交换对应的其他行的行向量,自己行的行向量系数为0丢弃。因此这样一个矩阵左乘另一个矩阵结果就会把原矩阵的第二第三行交换位置。

我们用同样的方法,可以得到数乘的变换矩阵:

E = ( 1 0 0 0 k 0 0 0 1 ) \mathbf{E} = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0& k&0 \\ 0 & 0& 1 \\ \end{array} \right) E= 1000k0001

该数乘矩阵对第一行第三行保留不变,对第二行进行了数乘k的操作。

最后也能得到乘系数求和矩阵:

E = ( 1 0 0 k 1 0 0 0 1 ) \mathbf{E} = \left( \begin{array}{ccc} 1 & 0 & 0 \\ k& 1&0 \\ 0 & 0 & 1 \\ \end{array} \right) E= 1k0010001

该矩阵将第一第三行保持不变,但是第二行的结果是第一行乘上系数k后与第二行的和。

由此,我们知道,线性方程组做消去法的流程,其实就是对系数矩阵左乘这些变换矩阵,用矩阵去表达将一个线性方程组通过消去法变成上三角矩阵U的过程就是:

E n . . . E 3 E 2 E 1 A = U \bm{E_n}...\bm{E_3E_2E_1A}=\bm{U} En...E3E2E1A=U

其中,这些对应三种变换的矩阵 E E E称之为初等矩阵。用一个初等矩阵去左乘另一个矩阵其实就是对该矩阵做初等行变换,又右乘它则为初等列变换。特别的,对矩阵某行向量数乘上1的矩阵又被称为单位矩阵 I I I,它不会改变矩阵的数值。

I = ( 1 0 0 0 1 0 0 0 1 ) \mathbf{I} = \left( \begin{array}{ccc} 1 & 0 & 0 \\ 0& 1&0 \\ 0 & 0 & 1 \\ \end{array} \right) I= 100010001

每个初等矩阵都可以看作是对单位阵做相同的初等变换得到,因为 E = E I = I E \bm{E}=\bm{EI}=\bm{IE} E=EI=IE


总结

我们通过矩阵运算表示了线性方程组,又通过对消去法中用到的初等变换进行了矩阵表示,从而所有线性方程组的求解过程都可以用矩阵运算来表示了,即找到一系列的初等矩阵乘上系数矩阵与右边的向量 b b b,使其变成上三角矩阵,然后便能直观看出解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/25175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端计网面试题(二)

一、在浏览器中输入url并且按下回车之后发生了什么? 首先解析url,判断url是否合法,如果合法再判断是否完整。如果不合法,则使用用户默认的搜索引擎进行搜索。DNS域名解析获取URL对应的ip地址。(首先看本地是否有缓存&…

Qt_显示VTK和PCL

文章内容 读取PCL文件在Qt中显示VTK模型在Qt中显示PCL数据文章用来在以后使用时查找方便代码 UI 界面添加Widget窗口,提升为 QVTKOpenGLNativeWidget VTK的库需要单独进行编译。这个相对好编译,但是debug编译会报错。 #include "QPCL.h"// 显示点云的库 #include…

HTML开发 Vue2.x + Element-UI 动态生成表单项并添加表单校验

基于vue2.x 和element-ui 动态生成表单项并添加表单校验; 1、需求问题 如下图,项目有个需求,点击添加按钮,新增一行设备信息,且每项信息必填; 2、代码 看到这个需求,首先想到要使用v-for的形…

使用 flask + qwen 实现 txt2sql 流式输出

前言 一般的大模型提供的 api 都是在提问之后过很久才会返回对话内容,可能要耗时在 3 秒以上了,如果是复杂的问题,大模型在理解和推理的耗时会更长,这种展示结果的方式对于用户体验是很差的。 其实大模型也是可以进行流式输出&a…

Vue3 一 快速启动基于Vite 创建项目

编码规范 TypeScript 组合式API setup语法糖 基于Vite 创建项目 WinR输入 CMD 回车后打开CMD命令行 已安装 18.3以上版本的NodeJS,js(安装) 我们用 NPM 方式安装 输入命令npm create vuelatest PS D:\WORK\NodeJS> npm create vuelatest Need to install the following …

4.组件间通信-v-model

vue3组件间通信-v-model 父组件&#xff1a; <template><div class"father"><h3>父组件</h3><!-- <h4>{{ username }}</h4><h4>{{ password }}</h4> --><!-- v-model用在html标签上 --><!-- <in…

前端工程化工具系列(十四)—— Webpack(v5.91.0):应用模块打包器与构建工具

Webpack 是用于现代 JavaScript 应用程序的静态模块打包器。 当 webpack 处理应用程序时&#xff0c;它会在内部构建一个依赖关系图&#xff0c;该图映射项目所需的每个模块最终会生成一个或多个包。 1 概念 1.1 modules Webpack 中&#xff0c;无论是 JS 、CSS 还是图片等&…

《软件定义安全》之一:SDN和NFV:下一代网络的变革

第1章 SDN和NFV&#xff1a;下一代网络的变革 1.什么是SDN和NFV 1.1 SDN/NFV的体系结构 SDN SDN的体系结构可以分为3层&#xff1a; 基础设施层由经过资源抽象的网络设备组成&#xff0c;仅实现网络转发等数据平面的功能&#xff0c;不包含或仅包含有限的控制平面的功能。…

Python语言读取图像

import cv2 import numpy as np width 640 # 图像宽度height 480 # 图像高度channels 3 # 颜色通道数imgEmpty np.empty((height, width, channels), np.uint8) # 创建空白数组imgBlack np.zeros((height, width, channels), np.uint8) # 创建黑色图像 RGB0imgWhite …

STM32 uc/OS-III多任务程序

目录 一、项目创建 二、代码移植 1、uC/OS-III源码处理 2、KEIL文件配置 ​编辑3、文件修改 启动文件 ​编辑app_cfg.h includes.h bsp.c和bsp.h main.c lib_ cfg.h app.c和app.h 三、总结 学习目标&#xff1a; 学习嵌入式实时操作系统&#xff08;RTOS&#xf…

贪心算法03(leetcode1005,134,135)

参考资料&#xff1a; https://programmercarl.com/1005.K%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.html 1005. K 次取反后最大化的数组和 题目描述&#xff1a; 给你一个整数数组 nums 和一个整数 k &#xf…

覆盖路径规划经典算法 The Boustrophedon Cellular Decomposition 论文及代码详解

2000年一篇论文 Coverage of Known Spaces: The Boustrophedon Cellular Decomposition 横空出世&#xff0c;解决了很多计算机和机器人领域的覆盖路径问题&#xff0c;今天我来详细解读这个算法。 The Boustrophedon Cellular Decomposition 算法详解 这篇论文标题为"C…

arm系统中双网卡共存问题

文章目录 单网卡单独运行双网卡共存问题双网卡解决方案方案一方案二方案三验证双网卡通过网卡名获取IP通过TCP与服务端通信参考单网卡单独运行 双网卡共存问题 双网卡解决方案 方案一 https://blog.csdn.net/HowieXue/article/details/75937972 方案二 http://bbs.witech…

办理公司诉讼记录删除行政处罚记录删除

企业行政处罚记录是可以做到撤销消除的&#xff0c;一直被大多数企业忽略&#xff0c;如果相关诉讼记录得不到及时删除&#xff0c;不仅影响企业招投标&#xff0c;还影响企业的贷款申请&#xff0c;严重的让企业资金链断裂&#xff0c;影响企业长远发展和企业形象。行政处罚是…

SpringBoot整合RabbitMQ实现消息延迟队列

环境依赖 SpringBoot 3.1.0 JDK 17 前期准备 安装MQ: liunxdockerrabbitmq安装延迟队列插件 实例 实现延迟队列的一种方式是在 RabbitMQ 中使用消息延迟插件&#xff0c;这个插件可以让你在消息发送时设置一个延迟时间&#xff0c;超过这个时间后消息才会被消费者接收到…

Vyper重入漏洞解析

什么是重入攻击 Reentrancy攻击是以太坊智能合约中最具破坏性的攻击之一。当一个函数对另一个不可信合约进行外部调用时&#xff0c;就会发生重入攻击。然后&#xff0c;不可信合约会递归调用原始函数&#xff0c;试图耗尽资金。 当合约在发送资金之前未能更新其状态时&#…

Dubbo 3.x源码(20)—Dubbo服务引用源码(3)

基于Dubbo 3.1&#xff0c;详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了调用createProxy方法&#xff0c;根据服务引用参数map创建服务接口代理引用对象的整体流程&#xff0c;我们知道会调用createInvokerForRemote方法创建远程引用Invoker&#xff0c;这是Dubbo …

深入理解Python:多线程与多进程编程

深入理解Python:多线程与多进程编程 在现代软件开发中,充分利用计算机的多核处理能力来提升程序的性能是至关重要的。Python提供了多线程和多进程两种并发编程方式。本文将深入探讨这两种并发编程的基本概念、使用方法以及各自的优缺点,并通过实际代码示例展示其应用。 目…

总结七大排序算法

插入排序 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是&#xff1a;把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中&#xff0c;直到所有的记录插入完为止&#xff0c;得到一个新的有序序列 。实际中我们玩扑克牌时&#xff0c;就用了…

QML键盘事件的用法和示例

文章目录 处理单一按键处理组合键处理快捷键在QML中,键盘事件通常通过Keys对象和相关的事件处理器来管理。这些事件处理器可以直接添加到任何接受键盘输入的QML元素中。这里介绍一下各种键盘事件的处理方式。 处理单一按键 处理单一按键的方式比较简单,直接在元素的Keys对象…