MWORKS.Syslab基础数学工具箱
版本 2024a · 90 节
第 1 页
第 2 页
第 3 页
第 4 页
第 5 页
第 6 页
第 7 页
第 8 页
第 9 页
第 10 页
第 11 页
第 12 页
第 13 页
第 14 页
第 15 页
第 16 页
第 17 页
第 18 页
第 19 页
第 20 页
2.2.4 特征值和奇异值
特征值与奇异值是矩阵分析中的核心工具。在 MWORKS.Syslab 中,eig 和 svd 函数分别用于计算方阵的特征值与特征向量,以及任意矩阵的奇异值分解。这些运算广泛应用于信号处理、系统稳定性分析、主成分分析(PCA)及图像压缩等领域。
特征值分解
对于方阵 ( A ),特征值分解的目标是找到标量 ( \lambda ) 和非零向量 ( v ),满足:
( A v = \lambda v )
其中 ( \lambda ) 是特征值,( v ) 是对应的特征向量。Syslab 中的 eig 函数支持两种调用方式:
- 仅计算特征值:
d = eig(A),返回列向量d,包含所有特征值。 - 同时计算特征向量:
[V, D] = eig(A),返回对角矩阵D(对角线元素为特征值)和矩阵V(列向量为对应特征向量),满足 ( A \cdot V = V \cdot D )。
示例:计算 3×3 矩阵的特征值与特征向量
A = [1 2 3; 4 5 6; 7 8 10]
d = eig(A) # 仅获取特征值
[V, D] = eig(A) # 获取特征向量矩阵 V 和特征值对角矩阵 D
运行后,d 将显示三个特征值,V 的每一列对应一个特征向量,D 对角线元素与 d 一致。验证时,可检查 A * V ≈ V * D。
奇异值分解
奇异值分解(SVD)适用于任意 ( m \times n ) 矩阵 ( A ),将其分解为:
( A = U \cdot \Sigma \cdot V^T )
其中 ( U ) 和 ( V ) 是正交矩阵,( \Sigma ) 是对角矩阵,对角线元素为奇异值(非负,按降序排列)。Syslab 中的 svd 函数提供三种输出形式:
- 仅奇异值:
s = svd(A),返回列向量s。 - 完整分解:
[U, S, V] = svd(A),返回三个矩阵。 - 经济型分解:
[U, S, V] = svd(A, "econ"),当 ( m > n ) 时仅计算前 ( n ) 列,节省内存。
示例:对 4×3 矩阵进行 SVD
A = rand(4, 3) # 随机生成 4×3 矩阵
s = svd(A) # 仅获取奇异值向量
[U, S, V] = svd(A) # 完整分解
[Ue, Se, Ve] = svd(A, "econ") # 经济型分解
完整分解中 U 为 4×4 矩阵,S 为 4×3 对角矩阵,V 为 3×3 矩阵。经济型分解中 Ue 为 4×3 矩阵,Se 为 3×3 对角矩阵,Ve 为 3×3 矩阵。验证时,检查 U * S * V' 是否近似等于原矩阵 A。
数值精度与注意事项
- 特征值和奇异值计算均基于数值算法,对于病态矩阵(如接近奇异的矩阵),结果可能对输入误差敏感。
- 奇异值按降序排列,可用于矩阵的低秩近似:保留前 ( k ) 个最大奇异值,截断对应 ( U ) 和 ( V ) 的列,可得到 ( A ) 的最优 ( k ) 秩近似。
- 当矩阵为对称正定时,特征值与奇异值相等;否则,奇异值一般大于等于特征值的绝对值。
MWORKS
上图展示了特征值分解(方阵)与奇异值分解(任意矩阵)的几何意义:特征向量指示变换方向,奇异值反映各方向上的缩放因子。