视频加载失败

18.06 第 34 讲:期末复习

3450 字
17 分钟
18.06 第 34 讲:期末复习
  1. 118.06 第 1 讲:方程组的行图与列图
  2. 218.06 第 2 讲:用矩阵做消元
  3. 318.06 第 3 讲:矩阵乘法的四种看法与逆矩阵
  4. 418.06 第 4 讲:分解成 A = LU
  5. 518.06 第 5 讲:转置、置换与向量空间
  6. 618.06 第 6 讲:列空间与零空间
  7. 718.06 第 7 讲:解 Ax = 0,主变量与特解
  8. 818.06 第 8 讲:解 Ax = b,行最简形 R
  9. 918.06 第 9 讲:线性无关、基与维数
  10. 1018.06 第 10 讲:四个基本子空间
  11. 1118.06 第 11 讲:矩阵空间、秩 1 矩阵与小世界图
  12. 1218.06 第 12 讲:图、网络与关联矩阵
  13. 1318.06 第 13 讲:第一次测验复习
  14. 1418.06 第 14 讲:正交向量与正交子空间
  15. 1518.06 第 15 讲:投影到子空间
  16. 1618.06 第 16 讲:投影矩阵与最小二乘
  17. 1718.06 第 17 讲:正交矩阵与 Gram-Schmidt
  18. 1818.06 第 18 讲:行列式的性质
  19. 1918.06 第 19 讲:行列式公式与代数余子式
  20. 2018.06 第 20 讲:Cramer 法则、逆矩阵与体积
  21. 2118.06 第 21 讲:特征值与特征向量
  22. 2218.06 第 22 讲:对角化与矩阵的幂
  23. 2318.06 第 23 讲:微分方程与 exp(At)
  24. 2418.06 第 24 讲:Markov 矩阵与 Fourier 级数
  25. 2518.06 第 24b 讲:第二次测验复习
  26. 2618.06 第 25 讲:对称矩阵与正定性
  27. 2718.06 第 26 讲:复矩阵与快速 Fourier 变换
  28. 2818.06 第 27 讲:正定矩阵与极小值
  29. 2918.06 第 28 讲:相似矩阵与 Jordan 标准形
  30. 3018.06 第 29 讲:奇异值分解
  31. 3118.06 第 30 讲:线性变换及其矩阵
  32. 3218.06 第 31 讲:基变换与图像压缩
  33. 3318.06 第 32 讲:第三次测验复习
  34. 3418.06 第 33 讲:左逆、右逆与伪逆
  35. 3518.06 第 34 讲:期末复习本文

最后一讲没有新内容,Strang 的做法是翻出老试卷,把题一道一道念出来,让全班一起想。我把每道题都交给 NumPy 过了一遍:一个 3 × 2 矩阵同时满足“一个右端项无解、另一个恰好一个解”,det⁡(ATA)=1\det(A^\mathsf{T}A) = 1 而 det⁡(AAT)=0\det(AA^\mathsf{T}) = 0;Markov 矩阵从 (0,10,0)(0, 10, 0) 出发迭代 10 步,离稳态 (3,3,4)(3, 3, 4) 只剩 7.24×10−77.24 \times 10^{-7}。

本讲速览

视频:Lecture 34: Final course review(OCW 页面与字幕) 教材:《Introduction to Linear Algebra》第 6 版 全书第 1 到 8 章 前置:第 33 讲:左逆、右逆与伪逆 一句话:期末题考的几乎都是同一件事:看到 mm、nn、rr 就想到四个子空间,看到解的个数就想到零空间。

配合视频
  • 开头几句是考试安排,可以跳过。第一道题(3 × nn 矩阵,一个右端项无解、一个有唯一解)值得认真看,他一步步把 mm、nn、rr 的关系推出来。
  • 求 Markov 矩阵稳态向量的那一段,他在黑板上猜 (3,3,4)(3, 3, 4),猜之前冷了一会儿场,可以倍速。“总人数不变所以 c2=1c_2 = 1”这一句要听。
  • 2 × 2 矩阵的快问快答和最后的最小二乘,本篇都已经算过,倍速即可。
  • 结尾他向全班道谢。这是整门课的最后几句话,我觉得值得原速看完。

一个矩阵,三个数#

他的第一道题: 一个 3×n3 \times n 矩阵 AA,已知 Ax=(1,0,0)A\mathbf{x} = (1, 0, 0) 无解,Ax=(0,1,0)A\mathbf{x} = (0, 1, 0) 恰好有一个解。mm、nn、rr 能说什么?

推理只有两步。有的右端项无解,说明不是每一行都有主元,所以 r<mr < m,而 mm 本来就是 3。有解时只有一个解,说明零空间里只有零向量,所以 r=nr = n,列无关。合起来是 r=n<m=3r = n < m = 3。

他要一个例子。我猜他心里想的是最省事的那个:只有一列 (0,1,0)(0, 1, 0)。他也允许加第二列,我取 (0,0,1)(0, 0, 1),这样 ATAA^\mathsf{T}A 恰好是单位阵,后面的判断题好查:

A=[001001]A = \begin{bmatrix} 0 & 0 \\ 1 & 0 \\ 0 & 1 \end{bmatrix}

接着是三道判断题:det⁡(ATA)=det⁡(AAT)\det(A^\mathsf{T}A) = \det(AA^\mathsf{T});ATAA^\mathsf{T}A 可逆;AATAA^\mathsf{T} 正定。最后他还要求证明 ATy=cA^\mathsf{T}\mathbf{y} = \mathbf{c} 对每个 c\mathbf{c} 都有解,而且有无穷多个解。下面一次全算:

import numpy as np
def main() -> None:
np.set_printoptions(precision=4, suppress=True)
# 3 x 2 的例子:列空间里有 (0, 1, 0) 和 (0, 0, 1),没有 (1, 0, 0)
A = np.array([[0.0, 0.0], [1.0, 0.0], [0.0, 1.0]])
e1 = np.array([1.0, 0.0, 0.0])
e2 = np.array([0.0, 1.0, 0.0])
m, n = A.shape
r = np.linalg.matrix_rank(A)
print("m, n, r =", m, n, r)
# Ax = (1, 0, 0) 没有解:最小二乘的残差不为 0
for name, rhs in [("(1, 0, 0)", e1), ("(0, 1, 0)", e2)]:
x, *_ = np.linalg.lstsq(A, rhs, rcond=None)
print(
f"Ax = {name}:x = {x},残差 = {np.linalg.norm(A @ x - rhs):.4f}"
)
# 三个判断题
AtA = A.T @ A
AAt = A @ A.T
print("AtA =")
print(AtA)
print("det(AtA) =", np.linalg.det(AtA), ",det(AAt) =", np.linalg.det(AAt))
print("AAt 的特征值:", np.linalg.eigvalsh(AAt))
print("AAt 的秩:", np.linalg.matrix_rank(AAt))
# A^T y = c 对每个 c 有解,而且解不唯一:左零空间的维数是 m - r
c = np.array([2.0, -5.0])
y, *_ = np.linalg.lstsq(A.T, c, rcond=None)
print("A^T y = c 的一个解 y =", y, ",残差 =", np.linalg.norm(A.T @ y - c))
print("左零空间的维数 m - r =", m - r)
y_other = y + 7.0 * e1
print(
"加上左零空间里的 7 * (1, 0, 0) 之后仍然是解:",
np.allclose(A.T @ y_other, c),
)
if __name__ == "__main__":
main()
m, n, r = 3 2 2
Ax = (1, 0, 0):x = [0. 0.],残差 = 1.0000
Ax = (0, 1, 0):x = [1. 0.],残差 = 0.0000
AtA =
[[1. 0.]
[0. 1.]]
det(AtA) = 1.0 ,det(AAt) = 0.0
AAt 的特征值: [0. 1. 1.]
AAt 的秩: 2
A^T y = c 的一个解 y = [ 0. 2. -5.] ,残差 = 0.0
左零空间的维数 m - r = 1
加上左零空间里的 7 * (1, 0, 0) 之后仍然是解: True

输出对着题目一条条读。

  • r=n=2<m=3r = n = 2 < m = 3,和推理一致;(1,0,0)(1, 0, 0) 的最小二乘残差是 1.0000,没有精确解,(0,1,0)(0, 1, 0) 的残差是 0.0000。
  • ATAA^\mathsf{T}A 是单位阵,可逆(列无关),为真。
  • det⁡(ATA)=1.0\det(A^\mathsf{T}A) = 1.0,det⁡(AAT)=0.0\det(AA^\mathsf{T}) = 0.0,所以第一条为假。陷阱在于 det⁡(AB)=det⁡(BA)\det(AB) = \det(BA) 只对两个方阵成立:AA 是 3 × 2 时,AATAA^\mathsf{T} 是 3 × 3、秩只有 2。
  • AATAA^\mathsf{T} 的特征值是 0,1,10, 1, 1,有 0,所以不是正定,只是半正定。他说的“第一行一定全是 0”在这个例子里就是特征值 0 的来源。
  • ATA^\mathsf{T} 是 n×mn \times m,行无关(r=nr = n),所以 ATy=cA^\mathsf{T}\mathbf{y} = \mathbf{c} 总有解;左零空间的维数是 m−r=1>0m - r = 1 > 0,所以解有无穷多个。代码里给解加上 7(1,0,0)7(1, 0, 0),仍然满足方程。

整道题没有一步用到消元,全靠 rr、mm、nn 和四个子空间的维数(这套账 rr、n−rn - r、rr、m−rm - r 在第 10 讲里算过)。

三个列向量能说明什么#

第二道题: AA 有三列 v1,v2,v3\mathbf{v}_1, \mathbf{v}_2, \mathbf{v}_3。(a) 解 Ax=v1−v2+v3A\mathbf{x} = \mathbf{v}_1 - \mathbf{v}_2 + \mathbf{v}_3;(b) 如果这个组合等于零,解唯一吗;(c) 如果三个向量标准正交,v1\mathbf{v}_1 与 v2\mathbf{v}_2 的哪个组合最接近 v3\mathbf{v}_3。

(a) 是第一讲的“按列乘”,x=(1,−1,1)\mathbf{x} = (1, -1, 1)。(b) 组合为零,说明这个 x\mathbf{x} 在零空间里,解永远不唯一,因为总能把它加到任何解上。(c) 想象 v1,v2,v3\mathbf{v}_1, \mathbf{v}_2, \mathbf{v}_3 是 xx、yy、zz 轴,zz 轴到 xyxy 平面的最近点就是原点,答案是 0 份和 0 份。

我用固定种子的随机向量验证三问,(c) 用 np.linalg.qr 造一组标准正交的列:

import numpy as np
def main() -> None:
np.set_printoptions(precision=4, suppress=True)
rng = np.random.default_rng(1806)
# (a) A x = v1 - v2 + v3,按列乘
V = rng.standard_normal((4, 3))
x = np.array([1.0, -1.0, 1.0])
print(
"(a) A @ x 等于 v1 - v2 + v3:",
np.allclose(V @ x, V[:, 0] - V[:, 1] + V[:, 2]),
)
# (b) 如果 v1 - v2 + v3 = 0,则 (1, -1, 1) 在零空间里,解不唯一
W = V.copy()
W[:, 2] = W[:, 1] - W[:, 0]
print("(b) W @ x =", W @ x)
print(" W 的秩:", np.linalg.matrix_rank(W), "< 3,零空间不只有 0")
# (c) 如果 v1, v2, v3 标准正交,v3 在 v1, v2 平面上的最近点是 0
Q, _ = np.linalg.qr(rng.standard_normal((5, 3)))
coef, *_ = np.linalg.lstsq(Q[:, :2], Q[:, 2], rcond=None)
print(
"(c) Q^T Q 与单位阵的距离:",
f"{np.linalg.norm(Q.T @ Q - np.eye(3)):.1e}",
)
print(
" 最近组合的系数 =",
np.round(coef, 6) + 0.0,
",误差 =",
f"{np.linalg.norm(Q[:, :2] @ coef - Q[:, 2]):.4f}",
)
if __name__ == "__main__":
main()
(a) A @ x 等于 v1 - v2 + v3: True
(b) W @ x = [0. 0. 0. 0.]
W 的秩: 2 < 3,零空间不只有 0
(c) Q^T Q 与单位阵的距离: 3.3e-16
最近组合的系数 = [0. 0.] ,误差 = 1.0000

(b) 里 WxW\mathbf{x} 是零向量,秩是 2,小于 3。(c) 里 QTQQ^\mathsf{T}Q 离单位阵只差 3.3×10−163.3 \times 10^{-16},最近组合的系数是两个 0,误差 1.0000,恰好是 v3\mathbf{v}_3 自己的长度。标准正交的好处就在这里:投影时各个方向互不干扰,不用解正规方程。

Markov 矩阵与稳态#

第三道题: 给一个 Markov 矩阵,问特征值,再问从 u0=(0,10,0)\mathbf{u}_0 = (0, 10, 0) 出发,Aku0A^k\mathbf{u}_0 趋向哪里。

字幕是语音转写,矩阵的数字被听写得一团糟。我按他念的性质还原:每列和为 1、第一列加第二列等于两倍第三列、迹是 0.8、(3,3,4)(3, 3, 4) 是 λ=1\lambda = 1 的特征向量,得到

A=[0.20.40.30.40.20.30.40.40.4]A = \begin{bmatrix} 0.2 & 0.4 & 0.3 \\ 0.4 & 0.2 & 0.3 \\ 0.4 & 0.4 & 0.4 \end{bmatrix}

这个矩阵同时满足上面全部四条,我认为就是黑板上的那个,不过这是还原,不是抄录。他的推理顺序是:列有线性关系,所以奇异,有一个特征值 0;Markov 矩阵必有特征值 1;迹是 0.8,所以第三个是 0.8−0−1=−0.20.8 - 0 - 1 = -0.2。稳态只剩 c2x2c_2\mathbf{x}_2,x2\mathbf{x}_2 是 λ=1\lambda = 1 的特征向量,c2c_2 靠“总人数不变”:起点总共 10 人,所以 c2=1c_2 = 1,u∞=(3,3,4)\mathbf{u}_\infty = (3, 3, 4)。

import numpy as np
def main() -> None:
np.set_printoptions(precision=4, suppress=True)
A = np.array([[0.2, 0.4, 0.3], [0.4, 0.2, 0.3], [0.4, 0.4, 0.4]])
u0 = np.array([0.0, 10.0, 0.0])
print("列和:", A.sum(axis=0))
print(
"第一列加第二列等于两倍第三列:",
np.allclose(A[:, 0] + A[:, 1], 2 * A[:, 2]),
)
print("迹:", np.trace(A), ",det:", f"{np.linalg.det(A):.1e}")
print("特征值:", np.sort(np.linalg.eigvals(A).real))
# 稳态:lambda = 1 的特征向量,按总人数 10 缩放
lam, S = np.linalg.eig(A)
x = S[:, np.argmin(np.abs(lam - 1.0))].real
steady = 10.0 * x / x.sum()
print(
"稳态 u_inf =",
steady,
",A @ u_inf 不变:",
np.allclose(A @ steady, steady),
)
# 误差按 (-0.2)^k 衰减
u = u0.copy()
for k in range(1, 11):
u = A @ u
if k in (1, 2, 5, 10):
print(
f"k = {k:2d}:u = {u},到稳态的距离 =",
f"{np.linalg.norm(u - steady):.2e}",
)
if __name__ == "__main__":
main()
列和: [1. 1. 1.]
第一列加第二列等于两倍第三列: True
迹: 0.8 ,det: -6.7e-18
特征值: [-0.2 0. 1. ]
稳态 u_inf = [3. 3. 4.] ,A @ u_inf 不变: True
k = 1:u = [4. 2. 4.],到稳态的距离 = 1.41e+00
k = 2:u = [2.8 3.2 4. ],到稳态的距离 = 2.83e-01
k = 5:u = [3.0016 2.9984 4. ],到稳态的距离 = 2.26e-03
k = 10:u = [3. 3. 4.],到稳态的距离 = 7.24e-07

特征值是 −0.2,0,1-0.2, 0, 1,稳态正好是 (3,3,4)(3, 3, 4),每一步误差大约缩小到原来的 0.20.2 倍:k=5k = 5 时离稳态 2.26×10−32.26 \times 10^{-3},k=10k = 10 时 7.24×10−77.24 \times 10^{-7},从第 1 步到第 10 步缩小了约 2×1062 \times 10^6 倍。行列式打印出 −6.7×10−18-6.7 \times 10^{-18},那是浮点误差,真值是 0。

2 × 2 快问快答#

第四组: 他念性质,全班给 2 × 2 的例子,没有就说没有。

  • 投影到过 a=(4,−3)\mathbf{a} = (4, -3) 的直线:P=aaT/aTaP = \mathbf{a}\mathbf{a}^\mathsf{T} / \mathbf{a}^\mathsf{T}\mathbf{a},分母是个数,直接除。
  • 特征值 0 和 3,特征向量 (1,2)(1, 2) 和 (2,1)(2, 1):A=SΛS−1A = S\Lambda S^{-1}。
  • 不能写成 BTBB^\mathsf{T}B 的实矩阵:BTBB^\mathsf{T}B 总是对称的,所以任意一个不对称矩阵都行。
  • 特征向量正交但不对称:反对称矩阵或正交(旋转)矩阵,特征向量是复的,但在复内积下正交。
import numpy as np
def main() -> None:
np.set_printoptions(precision=4, suppress=True)
# 1. 投影到过 a = (4, -3) 的直线
a = np.array([[4.0], [-3.0]])
P = a @ a.T / (a.T @ a)
print("P =")
print(P)
print(
"P @ P == P:",
np.allclose(P @ P, P),
",P.T == P:",
np.allclose(P.T, P),
)
# 2. 特征值 0 与 3,特征向量 (1, 2) 与 (2, 1)
S = np.array([[1.0, 2.0], [2.0, 1.0]])
Lam = np.diag([0.0, 3.0])
A = S @ Lam @ np.linalg.inv(S)
print("A = S Lam S^-1 =")
print(A)
print("特征值:", np.sort(np.linalg.eigvals(A).real))
# 3. 不对称的矩阵不可能写成 B^T B
N = np.array([[1.0, 2.0], [0.0, 1.0]])
print("N 对称吗:", np.allclose(N, N.T))
# 4. 反对称与正交矩阵:特征向量复正交,但矩阵不对称
theta = 0.7
K = np.array([[0.0, 1.0], [-1.0, 0.0]])
Q = np.array(
[[np.cos(theta), np.sin(theta)], [-np.sin(theta), np.cos(theta)]]
)
for name, M in [("反对称 K", K), ("旋转 Q", Q)]:
lam, V = np.linalg.eig(M)
inner = np.vdot(V[:, 0], V[:, 1])
print(
name,
":特征值",
lam,
",复内积 =",
f"{abs(inner):.1e}",
",对称:",
np.allclose(M, M.T),
)
if __name__ == "__main__":
main()
P =
[[ 0.64 -0.48]
[-0.48 0.36]]
P @ P == P: True ,P.T == P: True
A = S Lam S^-1 =
[[ 4. -2.]
[ 2. -1.]]
特征值: [0. 3.]
N 对称吗: False
反对称 K :特征值 [0.+1.j 0.-1.j] ,复内积 = 0.0e+00 ,对称: False
旋转 Q :特征值 [0.7648+0.6442j 0.7648-0.6442j] ,复内积 = 0.0e+00 ,对称: False

PP 满足 P2=PP^2 = P 与 PT=PP^\mathsf{T} = P。SΛS−1S\Lambda S^{-1} 给出 [4−22−1]\begin{bmatrix} 4 & -2 \\ 2 & -1 \end{bmatrix},特征值回到 0 和 3。最后一条里,反对称矩阵的特征值是 ±i\pm i,旋转 0.7 弧度的矩阵是 cos⁡0.7±isin⁡0.7\cos 0.7 \pm i \sin 0.7,两者的特征向量复内积都是 0,矩阵却都不对称。复内积我用 np.vdot 算,它会自动取共轭,这是第 26 讲的内容。

最小二乘:给答案,找问题#

最后一道: 他说像 Jeopardy 节目,先给答案再问问题。系统是

[101112][CD]=[341]\begin{bmatrix} 1 & 0 \\ 1 & 1 \\ 1 & 2 \end{bmatrix} \begin{bmatrix} C \\ D \end{bmatrix} = \begin{bmatrix} 3 \\ 4 \\ 1 \end{bmatrix}

最小二乘解是 (C^,D^)=(11/3,−1)(\hat{C}, \hat{D}) = (11/3, -1)。问题有三个:b\mathbf{b} 在列空间上的投影 p\mathbf{p} 是什么;对应的直线拟合问题画出来是什么样;再找一个不全为零的 b\mathbf{b},让最小二乘解变成零。

答案依次是:p=113 列一−列二\mathbf{p} = \frac{11}{3}\,\text{列一} - \text{列二},最小二乘找的就是“列的最近组合”;直线在 t=0,1,2t = 0, 1, 2 处拟合高度 3,4,13, 4, 1,截距 11/311/3、斜率 −1-1;最后,b\mathbf{b} 要和两列都正交,比如 (1,−2,1)(1, -2, 1)。

import numpy as np
def main() -> None:
np.set_printoptions(precision=4, suppress=True)
A = np.array([[1.0, 0.0], [1.0, 1.0], [1.0, 2.0]])
b = np.array([3.0, 4.0, 1.0])
# 正规方程与 lstsq
x_hat = np.linalg.solve(A.T @ A, A.T @ b)
x_lstsq, *_ = np.linalg.lstsq(A, b, rcond=None)
print("x_hat =", x_hat, ",11/3 =", 11 / 3)
print("两种解法一致:", np.allclose(x_hat, x_lstsq))
# 投影 p = A x_hat:11/3 倍列一,减一倍列二
p = A @ x_hat
print("p =", p)
print(
"p = 11/3 * 列一 - 列二:", np.allclose(p, 11 / 3 * A[:, 0] - A[:, 1])
)
print("误差 b - p 与两列正交:", np.allclose(A.T @ (b - p), 0))
print(
"||b|| =",
f"{np.linalg.norm(b):.4f}",
",||p|| =",
f"{np.linalg.norm(p):.4f}",
",||b - p|| =",
f"{np.linalg.norm(b - p):.4f}",
)
# 最小二乘解是 0 的 b:与两列都正交,比如 (1, -2, 1)
b0 = np.array([1.0, -2.0, 1.0])
print("A^T b0 =", A.T @ b0)
x0, *_ = np.linalg.lstsq(A, b0, rcond=None)
print("b0 的最小二乘解 =", x0 + 0.0)
if __name__ == "__main__":
main()
x_hat = [ 3.6667 -1. ] ,11/3 = 3.6666666666666665
两种解法一致: True
p = [3.6667 2.6667 1.6667]
p = 11/3 * 列一 - 列二: True
误差 b - p 与两列正交: True
||b|| = 5.0990 ,||p|| = 4.8305 ,||b - p|| = 1.6330
A^T b0 = [0. 0.]
b0 的最小二乘解 = [0. 0.]

p=(3.6667,2.6667,1.6667)\mathbf{p} = (3.6667, 2.6667, 1.6667)。勾股定理在这里看得很清楚:∥b∥=5.0990\|\mathbf{b}\| = 5.0990,投影 ∥p∥=4.8305\|\mathbf{p}\| = 4.8305,误差 ∥b−p∥=1.6330\|\mathbf{b} - \mathbf{p}\| = 1.6330,4.83052+1.63302=26.00=5.099024.8305^2 + 1.6330^2 = 26.00 = 5.0990^2。ATb0=(0,0)A^\mathsf{T}\mathbf{b}_0 = (0, 0),所以 b0=(1,−2,1)\mathbf{b}_0 = (1, -2, 1) 的最小二乘解是零。

他念完这道题就收了,说一个小时只能做这么多,考试有三个小时。

如果你是从第 1 讲一路跟下来的,到这里 35 篇就结束了。接下来可以去看 Strang 的另一门课 18.065(Matrix Methods in Data Analysis, Signal Processing, and Machine Learning),它默认你已经学过 18.06,SVD、低秩近似和优化会用得更多。以前我看到 Ax=bA\mathbf{x} = \mathbf{b} 只会想到“解”,现在想到的是“列的组合”,这个变化,大概是这个系列最大的收获。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
18.06 第 34 讲:期末复习
https://bfmhno3.github.io/posts/linear-algebra-34-final-review/
作者
bfmhno3
发布于
2026-10-18
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
18.06 第 10 讲:四个基本子空间
NoteMIT 18.06 第 10 讲的配套笔记:我用 Python 3.13 和 NumPy 2.4 对 Strang 的 3 × 4 矩阵分别用消元和 SVD 求出四个子空间的基,维数是 2、2、2、1,再用 5 个随机造的不同形状矩阵验证 r、n - r、r、m - r 全部成立。
2
18.06 第 32 讲:第三次测验复习
NoteMIT 18.06 第 32 讲的配套笔记:我用 Python 3.13 和 NumPy 2.4 把 Strang 复习课里的反对称矩阵、特征值判断题、SVD 的符号问题和“对称又正交”的真假题逐一验证,SVD 的 U 有 4 种符号选法,只有 1 种能还原 A。
3
18.06 第 24b 讲:第二次测验复习
NoteMIT 18.06 第 24b 讲的配套笔记:我用 Python 3.13 和 NumPy 2.4 把 Strang 在复习课上讲的 1984 年期中题与 1992 年期末题逐题重算了一遍,三对角行列式的递推矩阵 M 的六次幂恰好是单位矩阵,4 阶那个矩阵的行列式是 9。
4
18.06 第 13 讲:第一次测验复习
NoteMIT 18.06 第 13 讲的配套笔记:我用 Python 3.13 和 NumPy 2.4 把 Strang 在课上带着做的旧测验题逐题跑了一遍,其中 10 × 6 的矩阵 C 秩为 6,所以 C 转置的零空间维数是 10 - 6 = 4。
5
18.06 第 29 讲:奇异值分解
NoteMIT 18.06 第 29 讲的配套笔记:我用 Python 3.13 和 NumPy 2.4 把 Strang 黑板上的矩阵 [[4, 4], [-3, 3]] 做了奇异值分解,σ 是 5.6569 和 4.2426,单位圆被映成面积 75.3981 的椭圆,再用同一套办法算出 Wood–Berry 精馏塔增益矩阵的条件数是 7.48。
随机文章随机推荐

评论区

Profile Image of the Author
bfmhno3
Hello, I'm bfmhno3.
公告
本站曾使用 Jekyll + Minimal Mistakes 主题,现已迁移至 Astro + Firefly。博客内容未变,但文章链接有所调整,请自行查找需要的文章。
分类
标签
最新动态
站点统计
文章
123
分类
2
标签
239
总字数
753,253
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录