03 矩阵与线性变换

矩阵与线性变换

  • 线性变换
  • 如何用数值描述线性变换
  • 特殊的线性变换
  • 反过来看
  • 总结

这是关于3Blue1Brown "线性代数的本质"的学习笔记。

线性变换

如果一个变换具有以下两个性质,我们就称它是线性的:

  • 一是直线在变换后仍然保持为直线
  • 二是原点必须保持固定

总的来说,线性变换是“保持网格线平行且等距分布”的变换

如何用数值描述线性变换

只需记录两个基向量 i ⃗ \vec{i} i j ⃗ \vec{j} j 变换后的位置。可以用 i ⃗ \vec{i} i j ⃗ \vec{j} j 变换后的位置,推断任意向量出变换后的位置。
在这里插入图片描述

图1 线性变换

在这里插入图片描述

图2 线性变换举例

如图2所示,假设 i ⃗ \vec{i} i j ⃗ \vec{j} j 变换后分别为 [ 1 , − 2 ] T [1, -2]^{T} [1,2]T [ 3 , 0 ] T [3, 0]^{T} [3,0]T,则任意向量 [ x , y ] T [x, y]^{T} [x,y]T的变换结果如图2所示。

即:一个二维线性变换仅由四个数字完全确定,变换后 i ⃗ \vec{i} i 的两个坐标和变换后 j ⃗ \vec{j} j 的两个坐标。把这两组坐标写入一个矩阵中,如图3所示。
在这里插入图片描述

图3 线性变换矩阵

这个矩阵的第一列就是变换后 i ⃗ \vec{i} i 的两个坐标,第二列就是变换后 j ⃗ \vec{j} j 的两个坐标。
在这里插入图片描述
在这里插入图片描述

图4 线性变换矩阵一般形式

更一般的情况,如图4所示。
把第一列 [ a , c ] T [a,c]^{T} [a,c]T看作是变换后的第一个基向量,把第二列 [ b , d ] T [b,d]^{T} [b,d]T看作是变换后的第二个基向量,则任意向量 [ x , y ] T [x, y]^{T} [x,y]T的变换过程和结果如图4所示。

矩阵的列就是变换后的基向量,矩阵向量乘法就可以看作它们的线性组合。

特殊的线性变换

坐标系 x y x y xy的基向量分别为 i ⃗ \vec{i} i (绿色箭头)、 j ⃗ \vec{j} j (红色箭头)。我们将这个坐标系 x y x y xy逆时针旋转90°,这样, i ⃗ \vec{i} i 落在了坐标 ( 0 , 1 ) (0,1) 01上, j ⃗ \vec{j} j 落在了坐标 ( − 1 , 0 ) (-1,0) 10上,如图5所示。
在这里插入图片描述

图5 整个空间逆时针旋转90°

这样,任意向量 [ x , y ] T [x, y]^{T} [x,y]T旋转90°之后的结果都可以利用这个矩阵计算出来。

还有一种特殊的线性变换是“剪切”。如图6所示,变换后 i ⃗ \vec{i} i 不变, j ⃗ \vec{j} j 落在了坐标 ( 1 , 1 ) (1,1) 11上。。

图6 剪切变换

反过来看

给定一个变换矩阵 [ 1 3 2 1 ] \begin{bmatrix} \ 1 & 3 \\ \ 2 & 1 \\ \end{bmatrix} [ 1 231]
这就相当于 i ⃗ \vec{i} i 变换后落在(1,2)上, j ⃗ \vec{j} j 变换后落在(3,1)上,空间其他部分随二者一起移动,以保持网格线平行且等距分布。如图7所示。
在这里插入图片描述

图7 根据给定矩阵旋转

如果变换后的 i ⃗ \vec{i} i j ⃗ \vec{j} j 是线性相关的,如图8所示,变换后的 i ⃗ \vec{i} i j ⃗ \vec{j} j 在一条直线上。
在这里插入图片描述

图8 线性相关变换
这个线性相关变换将整个二维空间压缩到它们所在的直线上,也就是,两个线性相关向量张成的空间是一维空间。

总结

线性变换是操纵空间的一种手段,它保持网格线平行且等距分布,并保持原点不动。

这种变换只需要几个数字就能描述清楚,这些数字就是变换后基向量的坐标,以这些坐标为列所构成的矩阵为我们提供了一种描述线性变换的语言,而矩阵向量乘法是计算线性变换作用于给定向量的一种途径,如图4所示。

这里重要的一点是,每当你看到一个矩阵时,你都可以把它解读为对空间的一种特定变换

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

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

相关文章

网安新旅程

网安新旅程 将近四个月没发博客了,今天交代一下最近发生的事情和规划。 TryHackMyOffsecBox QQ交流 君羊:751273347 近期的事情 6月开始我进入htb学院学习CPTS,7月左右我完成了95%左右的内容。7-8月份我基本都在做C#相关的开发&#xff0c…

【KVM】KVM介绍及功能概述

前言 大家好,我是秋意零。 今天介绍的内容是KVM的概述,以及它所支持的基本功能。 👿 简介 🏠 个人主页: 秋意零🔥 账号:全平台同名, 秋意零 账号创作者、 云社区 创建者&#x1f…

NTFS文件系统解析(三)

1、引言 对于NTFS文件系统而言,无论文件内容本身,抑或真实的文件属性,都被称之为属性。 而正如前文说到的,NTFS预定义了16种属性用于文件系统的管理。 而通常情况下,往往只需要关注其中的某些属性即可。 2、属性头 …

【AI】Stable-Diffusion-WebUI使用指南

注:csdn对图片有审核,审核还很奇葩,线稿都能违规,为保证完整的阅读体验建议移步至个人博客阅读 最近AI绘画实现了真人照片级绘画水准,导致AI绘画大火,公司也让我研究研究,借此机会正好了解一下…

一个JS版寻路的实现

js版的寻路的测试 20231104_161146 path get_v8: function (x_inc, y_inc) {if (x_inc 0) {if (y_inc < 0) {return [[0, -1], [-1, -1], [1, -1], [-1, 0], [1, 0], [-1, 1], [1, 1], [0, 1]];} else if (y_inc > 0) {return [[0, 1], [-1, 1], [1, 1], [-1, 0], [1, 0…

090基于web+springboot的中小企业设备管理系统

欢迎大家关注&#xff0c;一起好好学习&#xff0c;天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本中小企业设备管理系统管理员有个人中心&#xff0c;用户管理&#xff0c;员工管理&#xff0c;设备信息管理&#xff0c;配件信息管…

c++类和对象(八) static成员 友元

1.1 概念 声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff1b;用static修饰的成员函数&#xff0c;称之为静态成员函数。静态成员变量一定要在类外进行初始化。 面试题&#xff1a;实现一个类&#xff0c;计算…

【深度学习】pytorch——快速入门

笔记为自我总结整理的学习笔记&#xff0c;若有错误欢迎指出哟~ pytorch快速入门 简介张量&#xff08;Tensor&#xff09;操作创建张量向量拷贝张量维度张量加法函数名后面带下划线 _ 的函数索引和切片Tensor和Numpy的数组之间的转换张量&#xff08;tensor&#xff09;与标量…

2.10 CSS BFC

1.简介 BFC是Block Formatting Context(块级格式上下文)&#xff0c;可以理解成元素的一个“特异功能”。该“特异功能”&#xff0c;在默认的情况下处于关闭状态;当元素满足了某些条件后&#xff0c;该"特异功能被激活。所谓激活"特异功能”&#xff0c;专业点说就…

【KVM】软件虚拟化和硬件虚拟化类型

前言 大家好&#xff0c;我是秋意零。 今天介绍的内容是虚拟化技术以及软件虚拟化和硬件虚拟化。 &#x1f47f; 简介 &#x1f3e0; 个人主页&#xff1a; 秋意零&#x1f525; 账号&#xff1a;全平台同名&#xff0c; 秋意零 账号创作者、 云社区 创建者&#x1f9d1; 个…

Leetcode—187.重复的DNA序列【中等】

2023每日刷题&#xff08;二十&#xff09; Leetcode—187.重复的DNA序列 实现代码 class Solution { public:const int L 10;vector<string> findRepeatedDnaSequences(string s) {unordered_map<string, int> str;vector<string> ans;int len s.size()…

【市场分析】Temu数据采集销售额商品量占比分析数据分析接口Api

引言 temu电商平台是一个充满活力的电商平台&#xff0c;拥有多种商品类别和数万家店铺。在这个项目中我的任务是采集平台上的大量公开数据信息。通过数据采集&#xff0c;我旨在深入了解temu电商平台的产品分布、销售趋势和文本描述&#xff0c;以揭示有趣的见解。 数据采集…

PyQuery库写一个有趣的爬虫程序

PyQuery库是一个基于jQuery语法的Python库&#xff0c;它可以方便地对HTML/XML文档进行解析和操作。使用PyQuery库可以快速地获取网页中的数据&#xff0c;进行数据清洗和分析。PyQuery库的基本用法包括字符串初始化、打开网页、css属性、标签内容等获取、DOM基本操作等相关技巧…

Scala 泛型编程

1. 泛型 Scala 支持类型参数化&#xff0c;使得我们能够编写泛型程序。 1.1 泛型类 Java 中使用 <> 符号来包含定义的类型参数&#xff0c;Scala 则使用 []。 class Pair[T, S](val first: T, val second: S) {override def toString: String first ":" sec…

设置DevC++支持c++11标准

1.点击编译选项 2. 设置语言标准 3.点击确认 4.测试代码 使用auto成功 测试&#xff01;

【Linux】:Linux项目自动化构建工具——make/Makefile || Linux第一个小程序——进度条(简单版本)

在本章开始给大家分享一个图片 希望对你有帮助 在这里插入图片描述 &#x1f3c6;前言 在开始本章之前 我们需要回顾一下上节课的函数的动静态库的优缺点 动态库的优点&#xff1a; 比较节省资源&#xff08;这里说的资源不仅仅是磁盘资源 也包括网络资源 内存资源等等&#…

【SpringCloud Alibaba -- Nacos】Linux 搭建 Nacos 集群

搭建 Nacos 集群 架构 centos安装docker https://docs.docker.com/engine/install/centos/ 详细配置过程 MySql8 mysql数据库配置 数据库脚本 nacos/conf/nacos-mysql.sql Nacos2 application.properties 修改为mysql spring.datasource.platformmysqldb.num1 db.url…

0007Java安卓程序设计-ssm基于Android的校园新闻管理系统

文章目录 **摘** **要**目 录开发环境 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 摘 要 网络的广泛应用给生活带来了十分的便利。所以把校园新闻管理与现在网络相结合&#xff0c;利用java技术建设校园新闻管理系统app&#xff0c;实…

数据结构与算法(Java版) | 排序算法的介绍与分类

各位朋友&#xff0c;现在我们即将要进入数据结构与算法&#xff08;Java版&#xff09;这一系列教程中的排序算法这一章节内容的学习中了&#xff0c;所以还请大家系好安全带&#xff0c;跟随我准备出发吧&#xff01; 相信诸位应该都知道排序算法有很多种吧&#xff01;就算没…