个人学习 学,以致用

线性代数 1 - 图像

2017-10-07
Geng

这部分主要就是洗脑吧.

我不知道别人, 我在上大学的时候, 老师不管三七二十一, 上来就是看不懂的各种矩阵定义, 公式啥的, 最后基本通过背公式过了线性代数, 然后发誓再也不要碰这个东西了. 现在听了 MIT 老爷爷的课, 感觉发誓还是不靠谱的, 又被老爷爷忽悠来学习了.

洗脑

二元一次方程

这个方程:

写成矩阵形式:

我们可以将这个矩阵形式看成 \(系数矩阵 \times 未知向量 = 结果向量\)

行图像

我们知道, 方程组(1)可以在平面中画出两个直线:

未知向量就是这两条直线的交点.

列图像

我们将上面方程组按照列组合, 可以写作:

列组合情况下, 可以方程看做是列向量的线性组合(因为作图软件问题, 下图 a 为 x 取值, b 为 y 取值). 当 y 取值固定, 比如 \(y = 2\) 时, 不同 x 取值会产生不同向量:

同样的, 当 x 取值固定, 比如 \(x = 1\) 时, 不同 y 取值也会产生不同向量:

根据上面的两张动图, 可以明显看出来, x, y 取值分别为 1, 2 时, 方程(3)两边相等.

三元一次方程

高阶的情况类似, 比如下面这个方程组:

他的行图像就是三个平面在三维空间的情形. 从下图来看, 已经有点看晕了吧.

但是如果从列图像来看, 就简单许多:

比较”凑巧”的是, 这个例子中结果向量也是 \((0, -1, 4)^T\)(这里使用行向量的转置来记录列向量)

单从图像上看, 我们可以发现列图像更简单, 对于我们这些凡夫俗子来说, 简单就是好.

线性组合

现在考虑这个问题:

  • 对于 \(\mathbf{A}\vec{X}=\vec{b}\) , 任取一个 \(\vec{b}\) 都会有解吗?

或者这样考虑这个问题:

  • \(\mathbf{A}\) 的各种线性组合, 可以填满整个三维空间吗?

对于上面的例子是可以的, 但是有的情况就不行. 比如三个列向量如果都在一个平面内, 那就没办法填满这个三维空间了.

向量基础

经过上面行图像和列图像的洗脑, 我们应该习惯开始用列图像来思考了吧. 下面就是一些基本的概念了.

对于线性代数的概念, 理解的时候最好在脑子里出一张图, 至少二维的图能出一张吧?

线性组合

\(c \vec{v} + d \vec{w}\) 就是一个简单的线性组合(两个向量都是列向量). 只要两个向量不在一条直线, 那么他们就能通过不同组合布满整个平面.

点乘(内积)

点乘是向量几何性质(长度,角度)的变换:

假设 \(\vec{v}=(v_1, v_2)\), \(\vec{w}=(w_1, w_2)\), 他们的夹角为\(\theta\): \begin{equation} \vec{v} \cdot \vec{w} = v_1 w_1 + v_2 w_2 = ||\vec{v}|| \cdot ||\vec{w}|| \cdot cos\theta \end{equation}

Python 计算

import numpy as np

v = np.array([2, 3, 4])
w = np.array([1, 1, 1])

# 标量与向量乘积
u = 2*v + 3*w
u

array([ 7, 9, 11])

# 点乘
u = np.dot(v, w)
u

9

矩阵基础

从向量到矩阵

现在假设有三个列向量: \(\vec{u}=(1, -1, 0)^T\), \(\vec{v}=(0, 1, -1)^T\), \(\vec{w}=(0, 0, 1)^T\), 他们在三维空间的组合可以记为:

现在, 我们使用矩阵来重写这个组合. 那么现在可以将方程(7)写为:

现在有一个向量 \(\vec{x}\) 为 \( (c, d, e)^T \), 那么:

现在我们的视角需要有所变换了: 开始的时候, 数字 c, d, e 与向量相乘; 现在, 矩阵与这些数字相乘.

注意现在的视角不是点乘的视角. 点乘的时候, 我们想象的是矩阵的每一行, 分别乘以列向量. 而现在的视角是每一列的线性组合

Python 计算

import numpy as np

A = np.array([[1, 2, 3],
[2, 5, 2],
[6, -3, 1]])
x = np.array([[0],
[0],
[2]])

b = np.dot(A, x)
b

array([[6], [4], [2]])


Similar Posts

Comments

你可以请我喝喝茶,聊聊天,鼓励我

Wechat Pay
wechat

Thanks!