线性代数的几何意义 - 任广千/谢聪/胡翠芳

本书使用向量的概念对国内高校工科"线性代数"的课程内容进行了较全面的几何分析,把上百个概念和定理的几何意义串在一起。
关于作者
任广千、谢聪、胡翠芳 是线性代数教育领域的实践者:
- 高校教师:长期从事线性代数教学与研究
- 教育创新者:致力于将抽象的代数概念几何化、直观化
- 技术作家:希望通过通俗的方式让更多人理解线性代数的本质
核心内容
1. 向量的几何意义
import numpy as np
import matplotlib.pyplot as plt
# 向量:既有大小又有方向的量
# 几何表示:从原点出发的有向线段
# 二维向量
v1 = np.array([3, 2])
v2 = np.array([-1, 4])
# 向量加法:平行四边形法则
v_add = v1 + v2 # [2, 6]
# 向量减法:三角形法则
v_sub = v1 - v2 # [4, -2]
# 数乘:缩放或反向
v_scaled = 2 * v1 # [6, 4]
v_negated = -v1 # [-3, -2]
# 向量的模(长度)
norm = np.linalg.norm(v1) # √(3² + 2²) = √13
# 单位向量(方向不变,长度为 1)
v_unit = v1 / np.linalg.norm(v1)
# 点积(内积):衡量两个向量的"相似程度"
# a · b = |a||b|cos(θ) = a₁b₁ + a₂b₂
dot_product = np.dot(v1, v2)
# 夹角
cos_theta = np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
theta = np.arccos(np.clip(cos_theta, -1, 1))
# 应用:
# - 投影:一个向量在另一个向量上的投影
# - 正交:点积为 0 表示垂直
# - 相似度:余弦相似度 = cos(θ)
2. 矩阵的几何意义
# 矩阵:线性变换的表示
# 矩阵 × 向量 = 对向量进行变换
A = np.array([[2, 0],
[0, 1]])
v = np.array([1, 1])
# 矩阵变换
v_transformed = A @ v # [2, 1]
# 这个矩阵表示 x 方向拉伸 2 倍
# 常见变换矩阵
# 1. 缩放变换
scale_x = np.array([[2, 0],
[0, 1]]) # x 方向拉伸 2 倍
scale_y = np.array([[1, 0],
[0, 0.5]]) # y 方向压缩 2 倍
# 2. 旋转变换(逆时针θ角)
theta = np.pi / 4 # 45 度
rotation = np.array([
[np.cos(theta), -np.sin(theta)],
[np.sin(theta), np.cos(theta)]
])
# 3. 剪切变换
shear_x = np.array([[1, 1],
[0, 1]]) # x 方向剪切
shear_y = np.array([[1, 0],
[1, 1]]) # y 方向剪切
# 4. 反射变换
reflect_x = np.array([[1, 0],
[0, -1]]) # 关于 x 轴反射
reflect_y = np.array([[-1, 0],
[0, 1]]) # 关于 y 轴反射
# 矩阵乘法:复合变换
# C = AB 表示先进行 B 变换,再进行 A 变换
combined = rotation @ scale_x # 先缩放,再旋转
3. 行列式的几何意义
# 行列式:线性变换的"缩放因子"
# |det(A)| > 1: 面积/体积放大
# |det(A)| < 1: 面积/体积缩小
# det(A) = 0: 降维(不可逆)
# det(A) < 0: 方向翻转
A = np.array([[2, 0],
[0, 3]])
det_A = np.linalg.det(A) # 6
# 表示面积放大了 6 倍
B = np.array([[1, 2],
[3, 4]])
det_B = np.linalg.det(B) # -2
# 负号表示方向翻转(如镜像)
# 几何应用
# 1. 平行四边形面积 = |det([a, b])|
# 其中 a, b 是相邻两边的向量
# 2. 平行六面体体积 = |det([a, b, c])|
# 3. 判断矩阵是否可逆
if np.isclose(det_A, 0):
print("矩阵不可逆(降维)")
else:
print("矩阵可逆")
# 4. 判断线性方程组解的情况
# det(A) ≠ 0: 唯一解
# det(A) = 0: 无解或无穷多解