范数、奇异值

本文介绍了矩阵和向量的范数计算,包括不同范数的定义和用途,如1范数、2范数、无穷范数和Frobenius范数。此外,还详细解析了奇异值分解(SVD),解释了SVD如何生成酉矩阵U、奇异值矩阵S和酉矩阵V,以及它们在数据挖掘中的应用。

【范数】
格式:n=norm(A,p)
功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数
以下是Matlab中help norm 的解释
NORM Matrix or vector norm.
For matrices…
NORM(X) is the largest singular value of X, max(svd(X)).
NORM(X,2) is the same as NORM(X).
NORM(X,1) is the 1-norm of X, the largest column sum,
= max(sum(abs(X))).
NORM(X,inf) is the infinity norm of X, the largest row sum,
= max(sum(abs(X’))).
NORM(X,’fro’) is the Frobenius norm, sqrt(sum(diag(X’*X))).
NORM(X,P) is available for matrix X only if P is 1, 2, inf or ‘fro’.
For vectors…
NORM(V,P) = sum(abs(V).^P)^(1/P).
NORM(V) = norm(V,2).
NORM(V,inf) = max(abs(V)).
NORM(V,-inf) = min(abs(V)).
1、如果A为矩阵
n=norm(A) ,返回A的最大奇异值,即max(svd(A))
n=norm(A,p) ,根据p的不同,返回不同的值
p 返回值
1 返回A中最大一列和,即max(sum(abs(A)))
2 返回A的最大奇异值,和n=norm(A)用法一样
inf 返回A中最大一行和,即max(sum(abs(A’)))
fro’ 返回A和A‘的积的对角线和的平方根,即sqrt(sum(diag(A’*A)))

2、如果A为向量
norm(A,p) 返回向量A的p范数。即返回 sum(abs(A).^p)^(1/p),对任意p大于1小于正无穷;
norm(A) 返回向量A的2范数,即等价于norm(A,2),即sum(abs(A).^2)^(1/2)
norm(A,inf) 返回max(abs(A))
norm(A,-inf) 返回min(abs(A))
【奇异值】
格式:[U,S,V] = svd(X)
解释: [U,S,V] = svd(X) produces a diagonal matrix S of the same dimension as X, with nonnegative diagonal elements in decreasing order, and unitary matrices U and V so that X = U*S*V’.
假设X为mn矩阵,则S为奇异值矩阵,它为m*n阶对角矩阵,其对角线上的值为X^* X的非负特征值的算术平方根;U为m*m阶酉矩阵,它是X*X^(X的共轭转置)的特征向量;V为n*n阶酉矩阵,它是X^(X的共轭转置)* X的特征向量;

范数奇异值之间存在着紧密的联系,不同类型的范数可以通过奇异值来定义和表示: - **Frobenius范数**:矩阵 $\mathbf{A}$ 的Frobenius范数 $\|\mathbf{A}\|_{F}$ 与奇异值的关系为 $\|\mathbf{A} - {\mathbf{A}}_k \|_{F}^2 = \sum_{i=k+1}^{{\rm rank}({\mathbf{A}})} \sigma_i(\mathbf{A})^2 = \sum_{i=1}^{{\rm rank}({\mathbf{A}})-k} \sigma_{i+k}(\mathbf{A})^2$,它等于矩阵奇异值平方和的平方根,即 $\|\mathbf{A}\|_{F} = \sqrt{\sum_{i=1}^{\min\{m,n\}} \sigma_{i}(\mathbf{A})^2}$,体现了矩阵整体的“大小”[^1]。 - **樊畿k - 范数**:把矩阵奇异值从大到小排列,前 $k$ 个奇异值的和就是樊畿 $k$ - 范数,用公式定义为 $\parallel A \parallel_{(k)}=\sum_{i=1}^k\sigma_i^{\downarrow}$。当 $k = 1$ 时就是矩阵的2 - 范数,当 $k = n$ 时等于沙滕1 - 范数[^2]。 - **沙滕p - 范数**:沙滕 $p$ - 范数是基于奇异值定义的范数,其定义为 $\parallel A \parallel_{Sp}=(\sum_{i=1}^n\sigma_i^p)^{\frac{1}{p}}$。例如,矩阵的2 - 范数最大奇异值,沙滕2 - 范数却是矩阵的Frobenius范数[^2]。 - **核范数**:核范数又叫迹范数,就是沙滕1 - 范数,也是樊畿 - $n$ 范数,即矩阵所有奇异值之和 $\sum_{i=1}^{n} \sigma_{i}(\mathbf{A})$ [^2]。 ### 代码示例 ```python import numpy as np # 定义矩阵 A = np.array([[1, 2], [3, 4]]) # 计算奇异值 singular_values = np.linalg.svd(A, compute_uv=False) # 计算Frobenius范数 frobenius_norm = np.linalg.norm(A, 'fro') frobenius_norm_from_sv = np.sqrt(np.sum(singular_values**2)) # 计算樊畿k - 范数 (k = 1) ky_fan_k_norm = np.sum(sorted(singular_values, reverse=True)[:1]) # 计算沙滕p - 范数 (p = 2) schatten_p_norm = (np.sum(singular_values**2))**(1/2) # 计算核范数 nuclear_norm = np.sum(singular_values) print(f"Frobenius范数 (直接计算): {frobenius_norm}") print(f"Frobenius范数 (从奇异值计算): {frobenius_norm_from_sv}") print(f"樊畿k - 范数 (k = 1): {ky_fan_k_norm}") print(f"沙滕p - 范数 (p = 2): {schatten_p_norm}") print(f"核范数: {nuclear_norm}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值