第二讲:基础数学工具回顾

说实话,每次带新人做决策算法仿真,我都要先问一句:「你数学底子怎么样?」

不是我要刁难人。而是我踩过太多坑了——明明算法逻辑没问题,结果跑出来一团糟,最后发现是向量运算写错了。所以这一讲,咱们把基础打牢。

向量与矩阵:算法的「砖瓦」

决策算法里,数据很少是单个数字。它通常是一堆数字打包在一起。这就是向量和矩阵的用武之地。

向量,说白了就是一列数。比如一个机器人的位置 (x, y, z),就是一个三维向量。

矩阵,就是多排多列的数。比如多个机器人的位置,就可以排成一个矩阵。

我习惯把矩阵想象成一个「表格」。每一行是一个样本,每一列是一个特征。这样理解起来特别顺。

核心运算

  • 加法:对应位置相加。维度必须相同。
  • 数乘:每个元素乘以同一个数。
  • 点积:两个向量对应位置相乘再求和。这个在计算相似度时特别常用。
  • 矩阵乘法:行乘列。注意维度匹配——前一个的列数必须等于后一个的行数。

重点提醒:矩阵乘法不满足交换律。A×B 和 B×A 通常不一样。我见过有人在这上面栽跟头,调试了一整天。

概率论基础:不确定性的「语言」

决策算法面对的世界,从来不是确定的。传感器有噪声,环境在变化。概率论就是描述这种不确定性的工具。

随机变量

你可以把随机变量理解成一个「会变的数」。比如明天测得的温度,就是一个随机变量。

它有两种类型:

  • 离散型:取值有限,比如掷骰子的点数。
  • 连续型:取值连续,比如人的身高。

期望

期望就是「平均下来会是多少」。我经常用它来评估一个决策的「平均表现」。

公式很简单:每个可能的值乘以它出现的概率,然后求和。

我的经验:期望不代表一定会发生。它只是一个参考值。我在做路径规划时,经常用期望来比较不同路线的「平均耗时」。

方差

方差衡量的是「波动大小」。方差大,说明数据很分散;方差小,说明数据很集中。

举个例子:两个传感器测同一个距离。一个每次误差都在 1cm 以内,另一个有时偏 5cm。后者的方差就大得多。

避坑指南:我曾经只关注期望,忽略了方差。结果算法在「平均情况」下表现很好,但遇到极端情况就崩了。记住:决策不仅要看平均,还要看风险。

用 NumPy 实现基础运算

理论说完了,咱们上手。NumPy 是 Python 里做数值计算的核心库。我几乎每天都在用。

创建向量和矩阵

import numpy as np

# 创建向量
v = np.array([1, 2, 3])

# 创建矩阵
M = np.array([[1, 2], [3, 4], [5, 6]])

# 特殊矩阵
zeros = np.zeros((3, 3))   # 全零矩阵
ones = np.ones((2, 4))     # 全一矩阵
eye = np.eye(3)            # 单位矩阵

向量运算

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 加法
c = a + b          # [5, 7, 9]

# 数乘
d = 2 * a          # [2, 4, 6]

# 点积
dot = np.dot(a, b) # 32

# 范数(长度)
norm = np.linalg.norm(a)  # sqrt(14)

矩阵运算

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# 矩阵乘法
C = np.dot(A, B)   # 或者 A @ B

# 转置
A_T = A.T

# 求逆(如果可逆)
A_inv = np.linalg.inv(A)

概率统计

# 生成随机数
samples = np.random.randn(1000)  # 1000个标准正态分布样本

# 计算期望和方差
mean = np.mean(samples)
var = np.var(samples)

# 直方图(用于估计概率分布)
hist, bins = np.histogram(samples, bins=30)

小技巧:用 np.random.seed(42) 固定随机种子。这样每次运行结果都一样,方便调试。我每次写仿真代码,第一行就是这个。

知识体系总览

下面这张图,把这一讲的核心逻辑串起来了。你可以把它当作一个「思维导图」来用。

基础数学工具 向量与矩阵 • 向量:一列数 • 矩阵:多排多列 • 核心运算:加、乘、点积 概率论基础 • 随机变量:会变的数 • 期望:平均表现 • 方差:波动大小 NumPy 实现 • 创建数组 • 向量/矩阵运算 • 概率统计函数 核心思想:用数学描述问题,用代码验证想法 三者结合,才能搭建可靠的决策算法仿真

嗯,这一讲的内容就这些。向量矩阵是「骨架」,概率论是「血肉」,NumPy 是「工具」。三者缺一不可。

你想想看,如果连向量乘法都搞错,后面仿真出来的结果你敢信吗?所以别嫌基础,多练练手。

可可精品资料库