线性代数学习之路

前言

线性代数非常抽象,我简直不知道如何加以应用。但是,他奠定了计算机图形学、计算机辅助设计、密码学、网络技术、经济学……说出来我都不信,不过我知道这是真的,
我本想按部就班的一章一章过,无奈智商压制,真心不会。所以我开始用一篇博文记录我的学习历程,把每一节都详细弄懂,打好线代基础。

向量与矩阵

向量

向量的基本概念

物理量有矢量和标量,数学上分别称为向量和数量。向量可以用数组表示,一个向量就是一个数组。数组中包含“数”的数目,称为向量的维数,标量可看成一维向量。水平书写的向量称为行向量,垂直书写的向量称为列向量。
如$\begin{bmatrix} 3&4\end{bmatrix}$为二维行向量,$\begin{bmatrix} 2&8&5&3 \end{bmatrix}$为四维行向量。是三维列向量$\begin{bmatrix} -1 \\ 2 \\ 0 \end{bmatrix}$。

向量的几何定义

几何直观上,向量是有大小和方向的有向线段,好像一支箭。有向线段的长度表示向量的大小,箭头的指向表示向量的方向。
$\require{AMScd}$
\begin{CD}
A @>a>> B
\end{CD}

向量a,A是起点,B是终点

以A为起点,B为终点的有向线段记作$\overrightarrow{AB}$

  • 向量AB的长度(模)记作$\begin{vmatrix} AB \end{vmatrix} $,长度为0的向量叫做零向量(Zero Vector)
  • 长度为1的向量叫做单位向量(Unit Vector),通常记作$a_{norm}$
  • 方向相同或相反的向量叫做平行向量

为了方便,书写时也用$\vec{a}$、$\vec{b}$表示向量。

在线性代数中,n维向量的$v=\begin{bmatrix}v_1,v_2,v_3,\cdots,v_n \end{bmatrix}$ 的大小用向量两边加竖线表示,计算公式如下:
$$ \begin{Vmatrix}v\end{Vmatrix}=\sqrt{v^2_1+v^2_2+ \cdots +v^2_n}$$

向量的基本运算

向量的基本运算有:向量标准化、向量的加法、减法、数乘向量、向量投影、向量的数量积、向量的向量积。

向量标准化
单位向量经常被称为标准化向量。所以,非零向量标准化就是将该向量长度变成1,将向量除以它的模即可,这里我看了半天,不懂,先跳过。
$$ a_{norm} = \frac{a}{\begin{Vmatrix} a \end{Vmatrix}},a \neq 0 $$


向量的加法
两个向量相加,将对应分量相加即可。
$$ \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} + \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{bmatrix} = \begin{bmatrix} a_1 + b_1 \\ a_2 + b_2 \\ \vdots \\ a_n + b_n \end{bmatrix} $$
向量加法的几何解释是:

  • 三角形法则:将向量的a的尾与向量b的首相连,以a的首为起点,b的尾为终点的有向线段为a+b:
  • 平行四边形法则:以向量邻边作平行四边形,同一起点的对角线的有向线段就是a+b

向量的减法
不解释
$$ \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} - \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{bmatrix} = \begin{bmatrix} a_1 - b_1 \\ a_2 - b_2 \\ \vdots \\ a_n - b_n \end{bmatrix} $$
也可以用三角形法则解释。以向量a、b作邻边三角形,从b的尾端向a的尾端作的有向线段就是a-b


数乘以向量
将没个向量的分量与数相乘即可。
$$ k \times \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{bmatrix} = \begin{bmatrix} kb_1 \\ ka_2 \\ \vdots \\ ka_n \end{bmatrix} $$
注意:数量不能和向量相加
数k乘以向量a的几何意义是将向量a的长度缩小或者放大了k倍。方向与a相同(k>0)或者相反(k<0)


向量投影
设非零向量a、b,

后语

在这个网页上写这个公式头都大了

我从没想过有一天有如此高涨的学习热情,以前说白了唯利是图,比如外语吧,我只会学英语,这不是专注,只是一种功利的惰性。如今我同时学四五门语言你敢信?虽然很垃圾,但是这是出于一种对未知的渴望。于是,我把自己的输入法给改了,初涉了五笔、二笔、仓颉、双拼。兼顾效率的情况下,我选择了加加双拼。这是一种革命。当然有人要说我无聊了,其实这个可以提高打字速度。也不难惊奇我居然毕业了还去学数学了。
大学专业是软件工程,中专学的是C语言,大学学JAVA我就很不开心。而现在,Go、swift、Python、Scala一些可能无人问津的编程语言都想了解和学习,我突然醒悟,这才是一个创造者呀,对于我的职业来说,也应该如此进取。不然谈何发展?这些年计算机之所以发展这么快,离不开那些对知识渴望的先驱者。