• 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 ]

    [ 13 21]" role="presentation" style="position: relative;">[ 13 21]
    [ 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所示。

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

  • 相关阅读:
    docker部署MySQL主从
    刨析 代码中常用的 基础 String 对象类(源码解析)
    程序员因薪资低拒绝offer,HR恼羞成怒,网友瞬间炸翻了..
    LeetCode233数字1的个数-容易理解的组合数学方法
    Java【数组】定义与使用,什么是引用类型你知道吗
    【Git命令】git reset与 git revert 简单示例
    set和map的使用
    Oracle Scheduler中日期表达式和PLSQL表达式的区别
    Python 画二分类的AUC
    蓝桥杯双周赛算法心得——数树数(dfs)
  • 原文地址:https://blog.csdn.net/gongfuyd/article/details/134223266