矩阵复习
1 课程概览
本课复习向量和矩阵的基本运算,包括向量的大小(模长)和方向、向量的加减法、向量与标量的运算、向量转置、矩阵相乘等。重点讲解矩阵相乘的条件(A的列数等于B的行数)和计算方法,为后续正规方程法求解线性回归做准备。
2 核心概念与定义
- 向量大小(模长):向量的长度,用勾股定理计算。
- 向量方向:向量与坐标轴的夹角。
- 向量加减法:对应元素相加减。
- 向量与标量运算:每个元素与标量进行运算。
- 转置(T):行变列,列变行。
- 矩阵相乘:A的列数等于B的行数时才能相乘。
3 算法与模型详解
3.1 向量的大小和方向
向量:[1, 2]
大小(模长): $$|v| = \sqrt{1^2 + 2^2} = \sqrt{5}$$
三维向量:[1, 2, 3] $$|v| = \sqrt{1^2 + 2^2 + 3^2} = \sqrt{14}$$
方向:夹角,用arctan计算
3.2 向量加减法
加法(对应元素相加): $$\begin{bmatrix} 1 \ 2 \ 3 \end{bmatrix} + \begin{bmatrix} 4 \ 5 \ 6 \end{bmatrix} = \begin{bmatrix} 5 \ 7 \ 9 \end{bmatrix}$$
减法(对应元素相减): $$\begin{bmatrix} 1 \ 2 \ 3 \end{bmatrix} - \begin{bmatrix} 4 \ 5 \ 6 \end{bmatrix} = \begin{bmatrix} -3 \ -3 \ -3 \end{bmatrix}$$
3.3 向量与标量运算
示例:向量 [1, 2, 3] × 4 $$\begin{bmatrix} 1 \ 2 \ 3 \end{bmatrix} \times 4 = \begin{bmatrix} 4 \ 8 \ 12 \end{bmatrix}$$
说明:每个元素都与标量进行运算
3.4 向量转置
转置前(列向量): $$\begin{bmatrix} 1 \ 2 \end{bmatrix}$$
转置后(行向量): $$\begin{bmatrix} 1 & 2 \end{bmatrix}$$
规则:行变列,列变行
表示:$X^T$
3.5 矩阵相乘
相乘条件:A的列数 = B的行数
示例: $$A = \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \ 7 & 8 \end{bmatrix}$$
$$A \times B = \begin{bmatrix} 1 \times 5 + 2 \times 7 & 1 \times 6 + 2 \times 8 \ 3 \times 5 + 4 \times 7 & 3 \times 6 + 4 \times 8 \end{bmatrix} = \begin{bmatrix} 19 & 22 \ 43 & 50 \end{bmatrix}$$
计算规则:
- 结果矩阵的行数 = A的行数
- 结果矩阵的列数 = B的列数
- 每个元素 = A对应行 × B对应列的元素之和
3.6 矩阵相乘的条件验证
| 矩阵A | 矩阵B | 能否相乘 | 结果形状 |
|---|---|---|---|
| 2×3 | 3×2 | ✅ | 2×2 |
| 2×3 | 2×3 | ❌ | - |
| 3×3 | 3×1 | ✅ | 3×1 |
| 1×3 | 3×1 | ✅ | 1×1 |
4 数学原理与推导
4.1 向量模长
$$|v| = \sqrt{v_1^2 + v_2^2 + ... + v_n^2}$$
4.2 矩阵相乘
$$C_{ij} = \sum_{k=1}^{n} A_{ik} \times B_{kj}$$
条件:A的列数 = B的行数
4.3 转置
$$A^T_{ij} = A_{ji}$$
5 代码示例
import numpy as np
# 向量模长
v = np.array([1, 2, 3])
print("模长:", np.linalg.norm(v)) # sqrt(14)
# 向量加减法
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
print("加法:", v1 + v2) # [5, 7, 9]
print("减法:", v1 - v2) # [-3, -3, -3]
# 向量与标量运算
print("标量乘法:", v1 * 4) # [4, 8, 12]
# 转置
v_col = np.array([[1], [2], [3]]) # 列向量
print("转置:", v_col.T) # [[1, 2, 3]]
# 矩阵相乘
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print("矩阵相乘:\n", np.dot(A, B))
# [[19, 22],
# [43, 50]]
6 重难点与易错提醒
- ❗重点:向量模长用勾股定理计算。
- ❗重点:向量加减法是对应元素相加减。
- ❗重点:转置是行变列、列变行。
- ❗重点:矩阵相乘条件是A的列数等于B的行数。
- ⚠️易错:矩阵相乘顺序不能交换(AB ≠ BA)。
- ⚠️易错:忘记检查矩阵相乘的条件。
- 💡深入理解:矩阵相乘是正规方程法的基础。
7 课堂问答精选
Q: 矩阵相乘的条件是什么?
A: 矩阵相乘的条件是A的列数等于B的行数。例如A是2×3矩阵,B是3×2矩阵,可以相乘,结果是2×2矩阵。如果A是2×3,B也是2×3,则不能相乘。
Q: 转置的作用是什么?
A: 转置将行向量变为列向量,或将列向量变为行向量。在多元线性回归中,需要通过转置使W和X满足矩阵相乘的条件,从而计算 $W^T X$。
8 本课小结
- 向量模长:$\sqrt{v_1^2 + v_2^2 + ... + v_n^2}$
- 向量加减法:对应元素相加减
- 向量与标量运算:每个元素与标量运算
- 转置:行变列,列变行
- 矩阵相乘条件:A的列数 = B的行数
- 矩阵相乘:结果行数=A行数,结果列数=B列数
9 延伸思考与实践
- 实践:用NumPy进行矩阵运算。
- 预习:正规方程法求解线性回归。
- 思考:为什么矩阵相乘顺序不能交换?