合集 | 线性代数的直观指南
翻译小组成员介绍: 胡智杰
谢菲尔德大学 数学与统计学硕士(在读)
英文网址: betterexplained.com/articles/linear-algebra-guide/
尽管我已经听过线性代数这门课程,但我的知识仅包括“矩阵、行列式和特征什么东东之类的”.
为什么会这样呢?好的,让我们试试这种线代传统授课形式:
把课程命名为线性代数,但关注点却是矩阵与向量。
用助记法来教授行列式的概念,而不解释推理。
直到最后一周前都避免现实主题而只青睐抽象的概念示例。
那么课程下来, 那些幸存者只可能是那些物理学家,图像程序员或者其他受虐待狂。更多的学子错过了最关键的洞察力:
线性代数为你的数学方程组提供了类似"微型电子表格"展示方式。
我们可以获取一个数据表(即一个矩阵),并从原始数据中创建更新的表。这是把电子表格改写成方程式的动力。
下面是一个我希望介绍的以一个真实股票市场为例的线性代数的介绍。
代数(Algebra)一词中A的含义
What’s in A name?
“代数”大致意思是指“关系”。小学时学的代数探索了未知数之间的关系。即使不知道x和y,我们仍然可以计算出(x + y)² = x² + 2xy + y².
我们来阐明一点,“线性代数”大致意思是指“呈线性的关系”。
直线是可以拿来做预测的。想象在一个三角形屋顶:向前水平移动3英尺(相对于地面),你可能会高度上升1英尺(上升/移动=1/3)往前走6英尺,你会期望一个2英尺的高度提升。与之对比如果是攀爬一个圆形屋顶:你的每一步水平移动将会带来不同数量的高度提升。
线条是美观且可以预测的:
1、如果水平前进3英尺高度增加1英尺,那么10倍的水平移动会产生10倍的高度提升(水平前进30英尺那么高度增加10英尺)。
2、如果水平前进3英尺高度提升1英尺,水平前进6英尺高度提升2英尺,那么水平前进3+6英尺,高度会提升1+2英尺。
在数学术语中,如果缩放输入同比缩放输出,增加输入同比增加输出,那么运算F就是线性的。
在我们的例子中,F(x)计算水平移动x与高度变化的关系,其公式为:
线性运算
Linear Operations
一个运算是基于输入的计算。哪些运算是线性且可以预测的呢?乘法看起来比较像。
指数运算(F(x) = x²)是不可预测的:10² 是100, 但 20² 是400,我们的输入值增加了一倍,但是输出值增加了两倍。令人惊讶的是,常规的加法也不是线性的。考虑“加3”的函数:
我们使输入值加倍,但输出值却没有成倍增加。(是的,F(x)=x+3恰好是偏移直线的方程,但它仍然不是线性的,因为F(10)不是10倍的F(1)).
我们唯一希望的是乘以一个常数:F(x)=ax(在我们屋顶的例子中,a=1/3)。但是,我们仍然可以将线性运算组合起来,进行新的运算:
G是由3个线性子片段组成的:如果输入加倍,输出也加倍。
我们有“迷你算术”:将输入乘以一个常数,然后加上结果。它实际上很有用,因为我们可以把输入分开,单独分析,然后结合结果:
如果输入的交互方式不同(比如指数),我们就不能把它们分开——我们必须一次分析所有东西.
组织我们的输入和运算
Organizing Inputs and Operations
大多数线代课程都是用矩阵的细节来打击你的自信。“好了,孩子们,让我们学习说话。选择主语、动词和宾语。接下来,将动词变位。然后,加上介词……”
不! 这样的语法不是重点。关键是什么?
1. 我们有很多输入要跟踪
2. 我们有可预测的线性运算来执行(比如, 上面我们的“迷你算术”)
3. 我们产生一个结果,也许会再次转换它
好的,首先,我们应该如何跟踪一堆输入值呢?我们像下面这样列如何:
x
y
z
不错。我们也可以把它写成(x, y, z)——顺着这个思路。
接下来,我们应该如何跟踪我们的运算?记住,我们只有“迷你算术”:乘法,还有最后的加法。如果我们的运算F是这样的:
我们可以将整个函数缩写为(3,4,5)。我们知道将第一个输入乘以第一个值,将第二个输入乘以第二个值,等等,然后将结果相加。
只需要第一个输入值?
让我们来调整一下:我们应该如何处理多个输入集?假设我们要对(a, b, c)和(x, y, z)进行F运算,我们可以这样做:
但这行不通: F需要3个输入,而不是6个。我们应将输入值分为几组:
更整洁了。
我们如何通过几个操作来运行相同的输入?每个运算列为一行:
整洁。我们通过这样做变得更加规范: 输入值放在垂直列,运算在水平行进行。
可视化矩阵
Visualizing The Matrix
只用语言很难表达清楚。那下面是我将输入、运算和输出可视化的结果:
想象一下我们是将每一个 Data 输入“倒入”在每个运算中:
当输入的元素经过一个运算时,它会创建一个输出结果项。在我们的示例中,输入(a、b、c)与操作 F 相反,输出3a + 4b + 5c。它与操作 G 相反,输出 3a + 0 + 0。
接下来到了红色部分。下面的矩阵是我们图表的简写:
矩阵A是表示输入或运算电子表格的一个单一变量。
棘手之处之一: 阅读的顺序
我们使用功能符号, 像y = f(x)和f(x)= y,而不是按照输入=> 矩阵=>输出流的顺序。我们通常以一个矩阵以大写字母(F), 和一个单个的包含小写(x)的输入列。因为我们有几个输入值(A)和输出值(B), 如下所示的矩阵表示形式:
棘手之处之二: 编号
矩阵大小用 R × C 表示: 行计数,列计数,缩写为“m × n”(我听说,“r × c”更容易记住)。矩阵中的项目以同样的方式引用: aij是第i行和第j列(我听说,“i”和“j”在黑板上很容易混淆)。
为什么RC的排序有意义? 我们的运算矩阵是2行3列的,输入矩阵是3行2列。把他们写在一起就是下面形式:
注意,矩阵在“运算值”和“输入值”处接触(n = p),它们应该匹配! 实际上,我们只有在n = p的情况下才能对矩阵进行乘法运算。
输出矩阵对于每个输入有m个运算行,那么q个输入值,就会得出一个“m x q”矩阵。
更漂亮的运算
Fancier Operations
让我们熟悉运算。假设有3个输入,我们可以得到几个1-运算矩阵:
“Adder”就是a + b + c,“Averager”也是同样的意思: (a + b + c)/3 = a/3 + b/3 + c/3。试试这些1-liners:
First-input only: [1 0 0]
Second-input only: [0 1 0]
Third-input only: [0 0 1]
如果我们把它们合并成一个矩阵
哇哦,这是“单位矩阵”,它将3个输入复制到3个输出,结果不变。
那下面这矩阵呢?
只不过重新排列了输入值的顺序: (x, y, z)变成了(x, z, y)
然后这个呢?
它是输入倍增器。我们可以把它改写成 2*I(单位矩阵)。
是的,当我们决定把输入当作向量坐标时,运算矩阵会变换我们的向量。请看这里《图解线性代数》系列文章:
倍率:使所有输入变得更大/更小
倾斜:使某些输入变大/变小
翻转:使输入为负
旋转:在旧坐标的基础上做新坐标(东变北,北变西等)
这些是乘法的几何解释,以及如何扭曲向量空间。这里只需要记住向量是要修改的数据的例子。
一个非矢量的例子: 股票市场投资组合
A Non-Vector Example: Stock Market Portfolios
让我们在现实世界中应用线性代数:
输入数据: 以美元计价的苹果、谷歌和微软股票的股票组合
运算: 新闻事件后公司股票价格的变化
输出: 更新投资组合
另外还有奖金产出: 让我们做一个新的投资组合,列出这次活动的净利润/亏损。
通常,我们会在电子表格中跟踪它。让我们学着用线性代数思考:
输入向量可以是($Apple, $Google,$Microsoft),显示每种股票的美元。(哦!这些美元价值可以来自另一个矩阵,这个矩阵是股票数量乘以价格。太奇妙了!)
4个输出运算应该是: 更新后的苹果市值,更新后谷歌市值,更新后微软市值,计算利润.
将问题可视化。想象在每个运算中运行:
关键是理解为什么我们要像这样建立矩阵,而不是盲目地计算这些数字。
明白了吗?让我们介绍一下场景。
假设一个秘密的设备发布了: 苹果股价上涨20%,谷歌下跌5%,而微软保持不变。我们想调整每个股票价值,使用类似单位矩阵的东西:
新的苹果市值是原来的,增加了20%(谷歌= 5%下降,微软=不变)。
哦,等一下!我们需要整体利润:
总变化=(0.20 *苹果)+ (-0.05 *谷歌)+ (0 * Microsoft)
我们的最终操作矩阵:
理解吗?输入三次,输出四次。前三个操作是“调整计算后的副本”,最后一个操作将更改组合在一起。
现在让我们输入Alice($1000, $1000, $1000)和Bob($500, $2000, $500)的投资组合。我们可以手工处理这些数字,或者使用Wolfram Alpha(计算):
(注意:输入应该在列中,但是更容易键入行。由 τ (tau)表示的转置运算将行转换为列。)
最后的数字:爱丽丝拥有1200美元的苹果(AAPL), 950美元的谷歌(GOOG), 1000美元的微软(MSFT),净利润150美元。鲍勃拥有600美元的苹果(apple)、1900美元的歌(1900美元)和500美元的微软(MSFT),净利润为0美元。
发生什么事情了?我们用自己的"电子表格"计算数学。线性代数在19世纪出现,电子表格在20世纪80年代发明。我把这一差距归咎于线性代数教育的落后。
解联立方程
Solving Simultaneous equations
数字表(还不是“矩阵”)的早期使用是为线性系统记账:
就变成了
我们可以通过在矩阵和输出中添加/减去行来避免重写完整的方程组。当矩阵演变成单位矩阵时,输出端显示x、y和z的值。
这个过程叫做高斯-若尔当消元法,它可以节省计算的时间。然而,线性代数主要是关于矩阵变换的,而不是求解大型方程组。
术语,行列式,特征元
Terminology, Determinants, And Eigenstuff
词汇有专门的类别来描述它们的用法(名词、动词、形容词)。矩阵同样可以细分。请看这里《图解线性代数》系列文章.
像“上三角”、“对称”、“对角线”这样的描述是矩阵的形状,并影响它们的变换。
可视化矩阵
行列式是输出变换的“大小”。如果输入是单位向量(表示面积或体积为1),行列式就是变换后的面积或体积的大小。行列式为0意味着矩阵是“破坏性的”且不可逆转(类似于乘以零:信息丢失)。
特征向量和特征值表示变换的“轴”。比如想想旋转一个地球仪:除了两极, 每个地方都有一个新的方向。
“特征向量”是一个输入,当它通过矩阵时不会改变方向(它指向“沿轴”)。虽然方向没有改变,但大小可能会改变。特征值是特征向量在经过矩阵时放大或缩小的量。
矩阵作为输入项
Matrices As Inputs
首先有一个奇怪的想法: 我们可以把运算操作矩阵也当作输入项!
操作矩阵类似于: 要修改的命令。将一个操作矩阵应用到另一个操作矩阵中,会得到一个新的操作矩阵,按照顺序应用这两个转换。
如果 N 是“为股市新闻调整投资组合”,T 是“为税改政策调整投资组合”,则两者均适用:
TN = X
表示“创建矩阵X,它首先根据股市新闻进行调整,然后根据税改政策进行调整”。哇!我们不需要输入投资组合,我们直接将一个矩阵再应用到另一个矩阵上。
线性代数的美妙之处在于用一个字母表示整个电子表格的计算。想要多次应用相同的转换吗? 使用 N²或 N³. 这样矩阵的幂就好了。
最后
Onward
我忽略了一些线性代数的细节地方,并且我可以这样。为什么?
这些比喻帮助我用矩阵来思考问题,而不是用我侥幸通过的数学课程来思考问题。我终于可以回答“为什么线性代数有用?”, “为什么电子表格有用?”
它们不是,除非你想要一个工具来解决几乎所有现实世界的问题。问问商人,他们是愿意捐肾,还是永远被Excel禁止。这就是我们所忽略的线性代数的影响: 将电子表格引入数学方程的高效表示法。
快乐学数学!(完)
相关文章» 图解高等数学 | 线性代数