Storm of Formulae(2)

仍是一期后续的公式推导及代码验证,让我们开始吧。



实用的矩阵等式


1. ( P − 1 + B T R − 1 B ) − 1 B T R − 1 = P B T ( B P B T + R ) − 1 ( P^{-1}+ B^TR^{-1}B )^{-1}B^TR^{-1} = PB^T( BPB^T + R)^{-1} (P1+BTR1B)1BTR1=PBT(BPBT+R)1

证明与代码验证见前文《Storm of Formulae(1)》。


2. ( A + B D − 1 C ) − 1 = A − 1 − A − 1 B ( D + C A − 1 B ) − 1 C A − 1 (A+BD^{-1}C)^{-1} =A^{-1}-A^{-1}B(D+CA^{-1}B)^{-1}CA^{-1} (A+BD1C)1=A1A1B(D+CA1B)1CA1

证明与代码验证见前文《Storm of Formulae(1)》。


3. det ⁡ ( A B ) = det ⁡ ( A ) det ⁡ ( B ) \det(AB)=\det(A)\det(B) det(AB)=det(A)det(B)


3.1 证明

A A A是可逆矩阵,则可由一系列行、列初等操作转为单位矩阵1。初等行、列操作可由左乘、右乘初等矩阵来完成。即有
E 1 E 2 ⋯ E m A E m + 1 E m + 2 ⋯ E n = I E_{1}E_{2}\cdots E_{m}A E_{m+1}E_{m+2}\cdots E_{n}=I E1E2EmAEm+1Em+2En=I
初等矩阵可逆,且逆矩阵仍为初等矩阵。左乘右乘逆矩阵,露出矩阵 A A A
A = E 1 ′ E 2 ′ ⋯ E n ′ A=E_{1}^{'}E_{2}^{'}\cdots E_{n}^{'} A=E1E2En
从而
det ⁡ ( A B ) = det ⁡ ( E 1 ′ E 2 ′ ⋯ E n ′ B ) \det(AB)=\det(E_{1}^{'}E_{2}^{'}\cdots E_{n}^{'}B) det(AB)=det(E1E2EnB)
∀ 初等矩阵 E , det ⁡ ( E B ) = det ⁡ ( E ) det ⁡ ( B ) \forall 初等矩阵E,\det(EB)=\det(E)\det(B) 初等矩阵E,det(EB)=det(E)det(B),故从右至左使用 n n n次该性质得到
det ⁡ ( E 1 ′ E 2 ′ ⋯ E n ′ B ) = det ⁡ ( E 1 ′ ) det ⁡ ( E 2 ′ ) ⋯ det ⁡ ( E n ′ ) det ⁡ ( B ) \det(E_{1}^{'}E_{2}^{'}\cdots E_{n}^{'}B)=\det(E_{1}^{'})\det(E_{2}^{'})\cdots \det(E_{n}^{'})\det(B) det(E1E2EnB)=det(E1)det(E2)det(En)det(B)
最后从左至右使用 n − 1 n-1 n1次该性质结合出 A A A
det ⁡ ( E 1 ′ ) det ⁡ ( E 2 ′ ) ⋯ det ⁡ ( E n ′ ) det ⁡ ( B ) = det ⁡ ( E 1 ′ E 2 ′ ⋯ E n ′ ) det ⁡ ( B ) = det ⁡ ( A ) det ⁡ ( B ) \det(E_{1}^{'})\det(E_{2}^{'})\cdots \det(E_{n}^{'})\det(B)=\\ \det(E_{1}^{'}E_{2}^{'}\cdots E_{n}^{'})\det(B)=\det(A)\det(B) det(E1)det(E2)det(En)det(B)=det(E1E2En)det(B)=det(A)det(B)
对于 A A A不为可逆矩阵的情形,此时 det ⁡ ( A ) = 0 \det(A)=0 det(A)=0。故 det ⁡ ( A T ) = det ⁡ ( A ) = 0 \det(A^{T})=\det(A)=0 det(AT)=det(A)=0。因为 A T A^{T} AT奇异矩阵1 ∃ \exists 非零向量 x x x A T x = 0 A^{T}x = 0 ATx=0,进而有 B T A T x = 0 B^{T}A^{T}x=0 BTATx=0。所以 B T A T B^{T}A^{T} BTAT为奇异矩阵, det ⁡ ( A B ) = det ⁡ ( ( A B ) T ) = det ⁡ ( B T A T ) = 0 。 \det(AB)=\det((AB)^{T})=\det(B^{T}A^{T})=0。 det(AB)=det((AB)T)=det(BTAT)=0


3.2 代码验证

代码有三个部分:

  1. 生成随机的元素在 [ 0 , 1 ) [0,1) [0,1)内的 n n n维矩阵
  2. 调用np.linalg.det计算行列式
  3. 以浮点数的方式判断两个行列式相等
# 生成随机矩阵 A 和 B
n = 3  # 矩阵维度
A = np.random.rand(n, n)
B = np.random.rand(n, n)

# 计算 AB 的行列式
det_AB = np.linalg.det(np.dot(A, B))

# 计算 A 和 B 的行列式的乘积
det_A_times_det_B = np.linalg.det(A) * np.linalg.det(B)

# 验证两者是否相等(考虑浮点数误差)
tolerance = 1e-10
is_equal = np.abs(det_AB - det_A_times_det_B) < tolerance

3.3 闲话

难得在本意是为机器学习提供非正经数学基础知识普及的博文中推导了一大段。2 对于书中给出的意欲使用行列式定义的推导,光是写出公式都已经大汗淋漓,显然不是负责任的说辞。没有根据的揣度是,作者想给个理由搪塞过去刨根问底的读者吧。


  1. 如对部分步骤缺少前置知识,简单的AI搜索便能补齐相关信息。 ↩︎ ↩︎

  2. 推导完成后难以置信地说了这么一长段不是正常人说的话。 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值