NumPy - 矩阵范数
什么是矩阵范数?
矩阵范数是一个将非负数赋给矩阵的函数。它衡量矩阵的大小。
通常,矩阵范数用于量化矩阵的大小,并且在涉及矩阵方程的问题中起着重要作用,例如求解线性方程组或执行矩阵因式分解。
矩阵范数的常见类型
矩阵范数有几种类型,但最常用的是 -
- Frobenius 范数
- 1-范数
- 无穷范数
- 2-范数(谱范数)
Frobenius 范数
Frobenius 范数是最简单、最常用的矩阵范数之一。它被定义为矩阵元素绝对值平方和的平方根。数学上,它表示为 −
‖A‖F = √(i=1 j=1 |aij|2)
其中 A 为矩阵,aij 为矩阵元素。Frobenius 范数等价于矩阵作为向量时的 L2 范数。
1-范数
矩阵的 1-范数(也称为最大列和范数)定义为列和的绝对值之和。从数学上讲,它表示为 −
‖A‖1 = maxj i=1 |aij|
简单来说,1范数是矩阵任意列元素绝对值之和的最大值。
无穷范数
矩阵的无穷范数(也称为最大行和范数)定义为行和的绝对值之和的最大值。从数学上讲,它表示为 −
‖A‖∞ = maxi j=1 |aij|
无穷范数给出了矩阵中任意一行元素绝对值之和的最大值。
2-范数(谱范数)
矩阵的2-范数(也称为谱范数)定义为矩阵的最大奇异值。它衡量矩阵应用于向量时的最大拉伸因子。2-范数由下式给出:-
‖A‖2 = max(A)
其中,max(A)是矩阵A的最大奇异值。在这种情况下,2-范数与矩阵的奇异值相关,可以使用奇异值分解 (SVD) 计算。
NumPy 中的矩阵范数
NumPy 提供了用于计算各种矩阵范数的函数。numpy.linalg.norm() 函数可用于计算大多数常见的矩阵范数。让我们探索如何将此函数用于不同类型的矩阵范数。
使用 NumPy 计算 Frobenius 范数
要使用 NumPy 计算 Frobenius 范数,我们使用带有参数 ord='fro' 的 numpy.linalg.norm() 函数。
示例
以下示例中,矩阵 A 的弗罗贝尼乌斯范数是通过对矩阵中所有元素的平方和取平方根来计算的 -
import numpy as np # 定义矩阵 A A = np.array([[1, 2], [3, 4]]) # 计算矩阵的弗罗贝尼乌斯范数 frobenius_norm = np.linalg.norm(A, 'fro') print("A 的弗罗贝尼乌斯范数:", frobenius_norm)
以下是得到的输出 -
A 的弗罗贝尼乌斯范数: 5.477225575051661
使用 NumPy 计算 1-范数
为了计算 1-范数,我们使用 numpy.linalg.norm() 函数,并传入参数 ord=1。矩阵的 1-范数是矩阵任意列元素绝对值之和的最大值。
示例
在本例中,列和分别为 4 和 6,因此 1-范数为 6 −
import numpy as np # 定义矩阵 A A = np.array([[1, 2], [3, 4]]) # 计算矩阵的 1-范数 one_norm = np.linalg.norm(A, 1) print("A 的 1-范数:", one_norm)
以下是得到的输出 −
A 的 1-范数:6.0
使用 NumPy 计算无穷范数
为了计算无穷范数,我们使用 numpy.linalg.norm() 函数,并传入参数 ord=np.inf。矩阵的无穷范数是矩阵任意行元素绝对值之和的最大值。
示例
本例中,行和为 3 和 7,因此无穷范数为 7 −
import numpy as np # 定义矩阵 A A = np.array([[1, 2], [3, 4]]) # 计算矩阵的无穷范数 infinity_norm = np.linalg.norm(A, np.inf) print("A 的无穷范数:", infinity_norm)
以下是得到的输出 −
A 的无穷范数: 7.0
使用 NumPy 计算 2-范数
为了计算 2-范数(谱范数),我们使用 numpy.linalg.norm() 函数,并传入参数 ord=2。矩阵的 2-范数(谱范数)是矩阵的最大奇异值,它衡量矩阵应用于向量时的最大拉伸因子。
示例
以下是在 NumPy 中计算 2-范数的示例 -
import numpy as np # 定义矩阵 A A = np.array([[1, 2], [3, 4]]) # 计算矩阵的 2-范数 two_norm = np.linalg.norm(A, 2) print("A 的 2-范数(谱范数):", two_norm)
以下是得到的输出 -
2-范数A 的谱范数:5.464985704219043
矩阵范数的应用
矩阵范数在数值分析、机器学习、优化等领域有着广泛的实际应用 -
- 数值稳定性:矩阵范数用于分析数值算法的稳定性,尤其是在求解线性系统或执行矩阵分解时。
- 机器学习:在机器学习中,矩阵范数通常用于正则化模型并防止过拟合。例如,L2 正则化使用 Frobenius 范数来惩罚模型中的大权重。
- 优化:矩阵范数用于度量优化问题中与期望解的误差或偏差。
- 信号处理:在信号处理中,矩阵范数用于度量信号和滤波器的"能量"或幅度。