一文带你直观理解线性变换

笔者是一名软件工程专硕的研一小菜鸡,若是文章中出现纰漏,请不吝赐教。
本篇笔记仅供交流学习,如需转载请注明出处。

一、线性变换的定义

百度百科关于线性变换的定义如下:

线性映射( linear mapping)是从一个向量空间V到另一个向量空间W的映射且保持加法运算和数量乘法运算,而线性变换(linear transformation)是线性空间V到其自身的线性映射。

这里的意思是线性映射是由向量空间 V → W V \rightarrow W VW 的映射,而线性变换是线性映射的一个特例,是由线性空间 V V V到其自身的映射。

维基百科关于线性映射的定义如下:

In mathematics, and more specifically in linear algebra, a linear map (also called a linear mapping, linear transformation, vector space homomorphism, or in some contexts linear function) is a mapping V → W \displaystyle V\to W VW between two vector spaces that preserves the operations of vector addition and scalar multiplication.

大体翻译一下:在数学中,更具体地说是在线性代数中,线性映射(也被称为线性变换、向量空间同态,或者在某些情况下也被叫做线性函数)是一种 V → W \displaystyle V\to W VW的映射,这种映射保留了向量加法和标量乘法运算。

从维基百科的定义来看,可以不用区分线性映射和线性变换。

二、如何判断是否为线性变换

你可以将线性变换理解为一个特殊的函数,这个可以使得 V → W \displaystyle V\to W VW,并且满足以下条件:
T ( x + y ) = T ( x ) + T ( y ) T ( a x ) = a T ( x ) (1) \begin{array}{l} \mathbf{T}(\mathbf{x}+\mathbf{y})=\mathbf{T}(\mathbf{x})+\mathbf{T}(\mathbf{y}) \\ \mathbf{T}(a \mathbf{x})=a \mathbf{T}(\mathbf{x}) \end{array}\tag{1} T(x+y)=T(x)+T(y)T(ax)=aT(x)(1)
其中 x , y ∈ V x,y \in V x,yV a ∈ R a \in R aR

识别给定函数 f ( x ) f(x) f(x)是否为线性变换非常简单,只需要查看 f ( x ) f(x) f(x)中的每一项是否都是 x x x与一个数的乘积,如果是, f f f则是线性变换。

举个例子:
f ( x , y , z ) = ( 3 x − y , 3 z , 0 , z − 2 x ) (2) \mathbf{f}(x, y, z)=(3 x-y, 3 z, 0, z-2 x)\tag{2} f(x,y,z)=(3xy,3z,0,z2x)(2)
便是一个线性变换,而
g ( x , y , z ) = ( 3 x − y , 3 z + 2 , 0 , z − 2 x ) h ( x , y , z ) = ( 3 x − y , 3 x z , 0 , z − 2 x ) (3) \mathbf{g}(x, y, z)=(3 x-y, 3 z+2,0, z-2 x) \\ \mathbf{h}(x, y, z)=(3 x-y, 3 x z, 0, z-2 x) \tag{3} g(x,y,z)=(3xy,3z+2,0,z2x)h(x,y,z)=(3xy,3xz,0,z2x)(3)
这两个都不是线性变换。因为在函数 g g g中,第二个分量为 3 z + 2 3z+2 3z+2 2 2 2是一个常数,并不包含输入向量 ( x , y , z ) (x,y,z) (x,y,z)中的任何分量,也可以换种解释方法,按照 ( 1 ) (1) (1)中的第二个公式,应有 T ( 0 ) = 0 \mathbf{T}(\mathbf{0})=\mathbf{0} T(0)=0,而 g ( 0 , 0 , 0 ) = ( 0 , 2 , 0 , 0 ) g(0,0,0)=(0,2,0,0) g(0,0,0)=(0,2,0,0)与上式矛盾。在函数 h h h中,很明显含有一个非线性分量 3 x z 3xz 3xz,因此也不是一个线性变换。

三、线性变换的直观解释

本篇文章最重要的部分终于来了,废话不多说,直接进入正题。

变换本质上是函数,其接受一个输入,然后输出对应的结果。之所以叫变换,是因为从几何的角度我们可以用运动的方式来理解变换,如旋转、伸缩、投影或几者叠加等操作。下面通过一个动图来演示一下。
3B1B线性代数的本质
那如何理解线性呢?其在几何直观上必须满足以下条件:

  1. 变换前是直线,变换后依然是直线
  2. 原点保持固定不动

也就是说,你应该把线性变换看作是“保持坐标网格平行并等距分布”的变换

1、一点不太直观的东西

以前上线性代数课的时候老师肯定告诉过你,可以将下面这个式子
f ( x , y ) = ( 3 x − y , 2 x ) (4) \mathbf{f}(x, y)=(3 x-y, 2 x) \tag{4} f(x,

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eclipse是一个开放源代码的集成开发环境(IDE),可用于Java开发,但也可以用于其他编程语言的开发。在本文中,我将向你展示如何使用Eclipse进行Java开发。 1. 下载Eclipse 首先,你需要从Eclipse官方网站下载Eclipse IDE。下载页面上将提供几个不同的版本,包括Eclipse IDE for Java Developers、Eclipse IDE for JavaScript and Web Developers,以及Eclipse IDE for C/C++ Developers等。选择适合你的版本,然后按照安装向导进行安装。 2. 创建Java项目 一旦你安装了Eclipse,你可以启动它并创建一个新的Java项目。选择“File”->“New”->“Java Project”,然后按照向导创建一个新的Java项目。在创建项目时,你需要指定项目名称、项目类型以及JRE版本等信息。 3. 创建Java类 一旦你创建了一个Java项目,你就可以创建一个Java类。选择你的Java项目,在“src”文件夹上右键单击,然后选择“New”->“Class”。输入类名和选择要继承的类(如果有的话),然后点击“Finish”。 4. 编写Java代码 现在你已经创建了一个Java类,可以开始编写Java代码了。在Eclipse的编辑器中,你可以输入Java代码并保存它。当你保存Java文件时,Eclipse会自动编译你的代码,并在Problems视图中显示任何编译错误。 5. 运行Java程序 一旦你编写了Java代码并保存了它,你可以运行Java程序。右键单击Java文件,然后选择“Run As”->“Java Application”。如果一切顺利,你的Java程序将在控制台中输出结果。 6. 调试Java程序 如果你的Java程序出现了错误或不按预期运行,你可以使用Eclipse的调试器来调试它。在Eclipse的编辑器中,你可以设置断点并启动调试器。当程序执行到断点时,调试器会暂停程序并允许你检查变量、运行代码等。 7. 导入外部JAR包 有时,你可能需要使用外部JAR包来完成你的Java项目。在Eclipse中,你可以简单地将外部JAR包导入到你的项目中。右键单击Java项目,然后选择“Build Path”->“Configure Build Path”。在“Libraries”选项卡上,你可以添加外部JAR包。 总结 在本文中,我们介绍了如何使用Eclipse进行Java开发。我们学习了如何创建Java项目、创建Java类、编写Java代码、运行Java程序、调试Java程序以及导入外部JAR包。Eclipse具有强大的功能,可以大大提高Java开发的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值