【线性变换/矩阵及乘法】- 图解线性代数 03

本文转自公众号---遇见数学---图解数学---线性代数部分

感谢遇见数学工作组将大学课本晦涩难懂、故作高深的数学知识,用通俗易懂而又生动有趣的方法解释出来。

线性变换是线性空间中的运动, 而矩阵就是用来描述这种变换的工具. 这样说还是没有直观印象, 所以还是直接看图解的动画吧.

矩阵不仅仅只是数值的表:

其实表示了在该矩阵的作用下, 线性空间是怎样的变化, 观察下图二维平面中水平和垂直方向的伸缩:

可以看到:

  • 垂直方向并没有发生任何变换(A 的第二列没有变化);
  • 水平方向伸展了 2 倍;
  • 浅红色方格在变换后面积变成了原来的 2 倍,这里其实就是行列式的意义 - 面积的扩张倍率 Det(A)=2

再看到更多矩阵变换之前, 先停下来看看这个例子:

变换前矩阵的基底向量 i  (1,0) 移动到了 (2,0) 的位置, 而 j 基底向量 (0,1) 还是 (0,1) 没发生任何变换(移动) - 也就是基底的变化:

一旦明白了基底的变化, 那么整个线性变换也就清楚了 - 因为所有向量的变化都可以由改变后的基向量线性表出. 观察下面向量(1, 1.5) 和 (-1, -3) 变换后的位置:

向量 (1, 1.5) 在变换后的位置, 其实就是变换后基向量的线性表示, 也可以看到矩阵的乘法是如何计算的:

类似对于(-1, -3) 变换后的位置 , 也是一样的计算方法:

可以再次观察上图来体会, 验证算出的结果.

下面再看其他的变换矩阵, 这里矩阵 A 的对角线中有 0 元素:

可以看到:

  • 水平方向变为 0 倍;
  • 垂直方向被拉伸为 2 倍;
  • 面积的变化率为 0 倍, 也就是 Det(A) = 0;

基底的变化如下:

再看看下面矩阵 A 的变换:

可以看到:

  • 整个空间向左倾斜转动;
  • 面积放大为原来的 Det(A) = 3.5 倍;

上面在 3 个不同的矩阵作用下(相乘), 整个空间发生不同的变换, 但是原点没有改变, 且直线依然还是直线, 平行的依然保持平行, 这就是线性变换的本质.

类似, 在三维线性空间内, 矩阵也用于这样的线性变换, 需要注意的是这里行列式可以看成经过变换后体积变化的倍率. 观察下图, 经过下面矩阵 A 的变换中, 空间会经过镜像翻转变换(扁平化为线), 所以行列式的值会是负数.

原文地址:https://www.cnblogs.com/Mjerry/p/9741080.html

时间: 2024-11-05 23:23:35

【线性变换/矩阵及乘法】- 图解线性代数 03的相关文章

线性代数 - 03 线性方程组

线性代数 - 03 线性方程组 一.线性方程组的矩阵消元解法 二.矩阵的秩 1.秩的概念 2.秩的求法 3.矩阵的秩与线性方程组的解 三.线性方程组解的结构 1.齐次线性方程组解的结构 2.非齐次线性方程组解的结构 四.矩阵方程的矩阵消元解法 线性代数 - 03 线性方程组,码迷,mamicode.com

【算法导论】动态规划之“矩阵链乘法”问题

上一篇里,介绍了动态规划的"钢管切割"问题,这一次来看看"矩阵链乘法".所谓矩阵链乘法就是一个或一个以上的矩阵连续相乘,这里主要关注的是乘法的次数. 一.概述 以两个矩阵相乘为例,A1*A2,A1和A2为两个矩阵,假设A1的行列数是p*q,A2的行列数是q*r.注意这里由于是A1乘以A2,所以A1的列数要等于A2的行数,否则无法做矩阵乘法,满足上述条件的矩阵,我们称之为"相容"的.那么对于A1*A2而言,我们需要分别执行p*r次对应A1的行元素乘

《3D数学基础》2.4矩阵的乘法

理解数学,理解代码! 大家好,我是老G! 今天为大家带来<3D数学基础>系列视频. 主要讲解:游戏开发中用到的3D数学知识,包括:定义,定理,推论. 也包括他们的推导过程,以及应用举例. 本套视频完全免费,欢迎捐助,帮助我完成这套视频 支付宝帐号:[email protected] 今天带来的是系列第15讲 2.4 矩阵的乘法 矩阵乘法定义 记忆方法 性质 <3D数学基础>2.4矩阵的乘法 视频地址 http://pan.baidu.com/s/1c0zuXBq   http://

算法13---动态规划矩阵链乘法

算法13---动态规划矩阵链乘法 矩阵链乘法是动态规划里面使用到的一个例子 1 两个矩阵的计算 那么对于一个矩阵的乘法,首先如果是两个矩阵的乘法,那么如何实现呢? 注意到我们使用二维数组表示矩阵,但是二维数组不能作为函数的返回值.具体实现如下 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 5 #define a_rows 3 6 #define a_columns 4 7 #define

手把手教你用Execel计算两个矩阵的乘法

Excel中有很多执行线性代数运算的函数,只要轻点鼠标,各种计算都手到擒来.但是使用这些函数在操作上其实还是有点trick的,今天我们就来演示一下如何在Excel中执行两个矩阵的乘法. 假设我们现在有这样两个矩阵 注意根据线性代数的知识: (1)矩阵A×B 和B×A是不同的: (2)其次,如果矩阵A的大小是 m×n, 矩阵B的大小必须是 n×k,那么A×B 的计算才能执行,而且结果矩阵的大小应该是m×k,其中m和k的值可以相等,也可以不相等. 所以下面我们首先在EXCEL中将这两个矩阵输入,如下

动态规划-矩阵链乘法

问题描述: 给定由n个要相乘的矩阵构成的序列(链)<A1,A2,...,An>,要计算乘积A1A2...An,可以将两个矩阵相乘的标准算法作为一个子程序,通过加括号确定计算的顺序(对同一矩阵链,不同的计算顺序所需要的计算次数大不相同). 目标问题:给定n个矩阵构成的矩阵链<A1,A2,...,An>,其中,i=1,2,...,n,矩阵Ai的维数为pi-1×pi,对乘积A1A2...An以一种最小计算次数加全部括号. 穷尽搜索: 令P(n)表示一串n个矩阵可能的加全部方案数.当n=1

Algorithm --&gt; 矩阵链乘法

动态规划--矩阵链乘法 1.矩阵乘法 Note:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义.一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C. #include <iostream> using namespace std; #define A_ROWS 3 #define A_COLUMNS 2 #define B_ROWS 2 #define B_COLUMNS 3 void matrix_multiply(int A[A_ROWS][A_COLUMNS],in

矩阵链乘法(动态规划)

一 题意描述: 给定由n个要相乘的矩阵构成的序列(链)<A1,A2,A3,····An>.由于矩阵满足结合律(加括号方式表示结合方式),不同的计算方式导致的求出最终计算结果的代价相异,有的花的时间很少,有的方式所花时间很多,那么下面的任务就是求出算出结果所需要的最少时间及一个最优解. 二 思路分析: 设p(n)表示一串n个矩阵可能的加全部括号方案数.当n=1时,只有一个矩阵,此时p(1)=1.当n>=2时,一个加全部括号的矩阵乘积等于两个加全部括号的子矩阵乘积的乘积,而且这两个子乘积之间

javascript二维矩阵的乘法。

百度&谷歌竟然搜不到"javascript二维矩阵的乘法",那我就自己写一个分享给大家.(我写的是两个n*n的二维矩阵的乘法) 下面又到了贴代码的时候了: function matrixMultiplication(a,b){ var len=a.length,arr=[]; for(var i=0;i<len;i++){ arr[i]=[]; for(var j=0;j<len;j++){ arr[i][j]=0;//每次都重新置为0 for(var k=0;k&