笔记1-《程序员的数学3:线性代数》向量与空间  

目录
  1. 向量与空间
  2. 最直接的定义:把数值罗列起来就是向量
  3. 「空间」的形象
  4. 基底

向量与空间

  • 第 0 章 动机

    • 我们生活在 3 维空间中,为了处理现实世界的问题,需要一种合适的方式描述「空间」
    • 作线性代数施展作用的舞台,向量空间是对现实空间进行一定程度抽象化后得到的东西
    • 打个比方:把 3 维空间中的物体在 2 维的显示屏上展示出来的时候,我们需要面对很多问题
      • 当我们的目光跟随物体的变换而移动、旋转时,映入眼帘的 2 维画面是怎么变化的?
      • 要解决这类问题,线性代数发挥了基础性的作用
    • 学习线性代数可不只是为了了解现实空间的问题
    • 几乎处处都会遇到由多个数值组成的一组数据,即使与「空间」看似没什么直接关系,也能进行推理
    • 只要将数据诠释为高维空间中的点,就可以利用自己的直观感受,通过「空间」来理解数据的行为
    • 直观认知仅限于 3 维以下的空间,但只要稍加推广,对于一般的 nn 维空间中的现象,同样可以从直观上理解
    • 这已经是数据分析中强有力的工具了
  • 有效利用线性近似的手段

    • 线性代数在「空间」中大显身手的地方:主成分分析、最小二乘法
    • 本书作为「基础篇」,原则上不考虑带度量的问题,以无量度的问题为中心

最直接的定义:把数值罗列起来就是向量

  • 把数排成一列就是向量

    • 比如

      (25)和(633)和(2.9−0.31/7π42)\begin{pmatrix} 2 \\ 5 \end{pmatrix} \quad 和 \quad \begin{pmatrix} 6 \\ 3 \\ 3 \end{pmatrix} \quad 和 \quad \begin{pmatrix} 2.9 \\ -0.3 \\ 1/7 \\ \sqrt{\pi} \\ 42 \end{pmatrix}

    • 需要强调分量个数时,分别称为 2 维向量、3 维向量和 5 维向量

    • 提到向量,不特别说明就指上面这样的竖排的「列向量」

    • 也存在像 (2,3,5,8)(2, 3, 5, 8) 这样的横排的「行向量」,但本书中不加说明时默认为列向量

    • 列向量书写起来比较占空间,所以使用以下写法

      (2,3,5,8)T=(2358)=(2358)T(2, 3, 5, 8)^T = \begin{pmatrix} 2 \\ 3 \\ 5 \\ 8 \end{pmatrix} = \begin{pmatrix} 2 \\ 3 \\ 5 \\ 8 \end{pmatrix}^{T}

    • 其中 TT 是 Transpose(转置)的首字母

  • 为什么偏爱列向量

    • 对于「将映射 ff 作用于 xx」的操作,一般人会写成 f(x)f(x)
    • 对于「将矩阵 AA(所表示的线性映射)作用于向量 xx」的操作,用 AxAx 表示
    • 如果这里的 xx 是行向量,结果就变成了 xAxA —— 先对象后操作的写法,不太符合一般人的思维
    • 面向对象程序设计的读者,相比 f(x) 来说,说不准会觉得 x.f 的写法更加自然
  • 一个应用场景

    • 一个搭载了 10 个传感器的机器人观测到了 10 组数据,当想要把它们作为一个整体来处理时,向量就派上用场了

「空间」的形象

  • 什么是空间

    • 直觉上,空间是「能容纳物体的容器」
    • 1 维的空间是一条线,2 维是平面,3 维是立体
    • 更高维的空间无法直接想象,但有办法构造出来
  • 构造 nn 维空间

    • 用 nn 个数来指定一个点的位置,这 nn 个数就是坐标
    • 关键在于「坐标」这个概念:坐标一旦给定,点就唯一确定了
    • 在 2 维平面上,每个点由 2 个数指定;在 3 维空间中,每个点由 3 个数指定

基底

  • 为什么要基底

    • 有了坐标就能描述点的位置,但「坐标本身」依赖于用什么来度量
    • 同一个物理位置,在不同的坐标下是不同的数值
    • 基底就是一组「用来造坐标的基准」
  • 基底的定义

    • 一组向量,如果它们能「撑起」整个空间,就称为这组向量构成该空间的一个基底
    • 构成基底的条件(1.1.4):
      • 线性无关 —— 不能由其他向量线性组合得到
      • 张成整个空间 —— 空间里的任何向量都能由它们线性组合得到
    • 基底不唯一,但只要选定一个,空间里的每个向量就有唯一的表示
  • 维数

    • 基底里向量的个数,称为这个空间的维数
    • 2 维空间维数为 2,3 维空间维数为 3
    • nn 维空间的基底含 nn 个向量
  • 坐标

    • 有了基底,向量就能唯一分解成基底的线性组合

    • 各个系数就是这个向量在这组基底下的坐标

    • 用 Ruby 验证:向量在标准基底和另一组基底下的坐标

      #ruby
      # 向量 v = (2, 5),在标准基底下的坐标就是它自己
      v = [2.0, 5.0]

      # 换一组基底:b1 = (1, 0), b2 = (1, 1)
      # 解 c1*b1 + c2*b2 = v,即 c1 + c2 = 2, c2 = 5
      b1 = [1.0, 0.0]
      b2 = [1.0, 1.0]
      # 由 c2 = v[1],c1 = v[0] - c2
      c2 = v[1]
      c1 = v[0] - c2
      coords = [c1, c2]

      puts "坐标: #{coords}" # 坐标: [-3.0, 5.0]
      # 还原:c1*b1 + c2*b2 应该等于 v
      restored = 2.times.map { |j| coords[0] * b1[j] + coords[1] * b2[j] }
      puts "还原: #{restored}" # 还原: [2.0, 5.0]
      puts "与原向量相等? #{restored == v}" # 与原向量相等? true

      # 标准基底下的坐标
      puts "标准基底坐标: #{v}" # 标准基底坐标: [2.0, 5.0]
123.8k