矩阵的特征分解证明

特征分解(eigendecomposition)的证明

A=Vdiag(λ)V1 A = V d i a g ( λ → ) V − 1
这里写图片描述
这里写图片描述

### 矩阵奇异值分解证明 #### 定义与预备知识 奇异值分解(SVD)是一种重要的矩阵分解方法,在数值分析中有广泛应用。对于任意 \( m \times n \) 的实数矩阵 \( A \),存在两个正交矩阵 \( U_{m\times m} \) 和 \( V_{n\times n} \),使得: \[ A = U\Sigma V^T \] 其中,\( \Sigma \) 是一个 \( m \times n \) 对角矩阵,其对角线上元素称为奇异值,并按降序排列。 #### 推导过程 考虑给定矩阵 \( A \in R^{m×n} \)[^1],定义如下优化问题来寻找最大奇异值及其对应的左、右奇异向量: \[ \begin{aligned} & \max _{\|u\|=1,\|v\|=1}\left(u^{T}Av\right)^2 \\ & s.t.\quad u^Tu=1, v^Tv=1. \end{aligned} \] 通过拉格朗日乘子法可以得到最优解条件为: \[ Av=\sigma_1u \] \[ A^Tu=\sigma_1v \] 这里 \( \sigma_1=(u^TAv)\geqslant0 \) 即为最大的奇异值,而 \( (u,v) \) 则是最优单位长度的向量对[^3]。 进一步地,假设已经找到了前 k-1 个相互垂直的最大奇异值所对应的向量,则第 k 大奇异值可通过下面的方式获得: \[ \begin{array}{l} \max _{\substack{ \|u_k\|=1 \\ u_i^Tu_k=0,i<k\\ }} \max _{\substack{ \|v_k\|=1 \\ v_j^Tv_k=0,j<k\\ }}(u_k^TAv_k)^2, \end{array} \] 重复此操作直到找到所有的非零奇异值为止。此时便完成了整个 SVD 过程。 最后注意到当且仅当输入矩阵是对称半正定时,SVD 才会退化成特征分解的形式;而在更普遍的情况下两者并不相同[^4]。 ```python import numpy as np def svd(A): """ 计算矩阵A的奇异值分解 参数: A : 输入矩阵 返回: U : 左奇异矩阵 sigma : 奇异值数组 VT : 右奇异矩阵转置后的形式 """ # 计算AA'和A'A的特征值和特征向量 ATA_eigvals, V = np.linalg.eigh(np.dot(A.T,A)) AAT_eigvals, UT = np.linalg.eigh(np.dot(A,A.T)) # 获取奇异值并排序 sigmas_squared = sorted([val for val in ATA_eigvals if abs(val)>1e-8], reverse=True) sigmas = [np.sqrt(x) for x in sigmas_squared] # 构建Σ矩阵 Sigma = np.zeros((len(sigmas), len(sigmas))) np.fill_diagonal(Sigma, sigmas) return UT[:,:len(sigmas)], Sigma, V[:len(sigmas)].T if __name__ == "__main__": test_matrix = [[1,-2],[4,5]] U,s,Vt = svd(test_matrix) print("U:\n",U,"\ns:\n",s,"V transpose:\n",Vt) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NEU_SML

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值