这个计算器能做什么
本工具可以为任意实数 n×m 矩阵 \(A = \{a_{ij}\}\) 计算四种最常用的矩阵范数:L1 范数(各列绝对值之和的最大值)、L2 / 谱范数(最大奇异值)、Frobenius 范数(所有元素平方和的平方根)以及 L-∞ 范数(各行绝对值之和的最大值)。矩阵范数用来衡量矩阵的“大小”,以及它能把向量拉伸的最大倍数,因此在数值线性代数、最优化、机器学习和稳定性分析中都不可或缺。这是纯数学概念,世界各地的定义完全一致。
使用方法
先设置行数(\(n\))和列数(\(m\)),然后在文本框中输入矩阵,每行占一行,行内元素用空格或逗号分隔。任何空白单元格都会按 0 处理。选择需要显示的有效数字位数后,即可一次读出全部四种范数。计算会自动处理负数元素,因为相关公式在需要时都使用绝对值。
公式详解
1-范数是把每一列的元素取绝对值后相加,保留其中最大的那个总和。∞-范数则对每一行做同样的处理。Frobenius 范数把整个矩阵“拉直”成一个向量后取其欧几里得长度,即所有元素平方和的平方根。谱范数等于最大奇异值 \(\sigma_{\max}(A)\),它是对称 Gram 矩阵 \(A^{\mathsf{T}}A\) 的最大特征值的平方根;我们通过幂迭代法求出该特征值。若矩阵全为零,则所有范数都直接为 0。
$$\|\text{A}\|_{1} = \max_{1 \le j \le m} \sum_{i=1}^{n} |a_{ij}|$$
$$\|\text{A}\|_{\infty} = \max_{1 \le i \le n} \sum_{j=1}^{m} |a_{ij}|$$
$$\|\text{A}\|_{F} = \sqrt{\sum_{i=1}^{n} \sum_{j=1}^{m} a_{ij}^{2}}$$
$$\|\text{A}\|_{2} = \sigma_{\max}(\text{A}) = \sqrt{\lambda_{\max}\!\left(\text{A}^{\mathsf{T}}\text{A}\right)}$$
计算实例
以 \(A = [[1, 2], [3, 4]]\) 为例:各列之和分别为 4 和 6,所以 L1 范数为 6;各行之和分别为 3 和 7,所以 L-∞ 范数为 7。Frobenius 范数为 $$\sqrt{1+4+9+16} = \sqrt{30} = 5.4772255751.$$ Gram 矩阵 \(A^{\mathsf{T}}A = [[10,14],[14,20]]\),其特征值满足 \(\lambda^{2} - 30\lambda + 4 = 0\),解得 \(\lambda_{\max} = 29.8660687473\),因此谱范数为 $$\sqrt{29.8660687473} = 5.4649857042.$$
常见问题
谱范数和 Frobenius 范数是一回事吗?只有对秩为 1 的矩阵(比如单个行向量或列向量)才相等。一般情况下,\(\text{norm2} \le \text{normF}\),并且 \(\text{normF}\) 至多等于 \(\sqrt{\text{rank}}\) 乘以 \(\text{norm2}\)。
复数矩阵怎么办?在涉及绝对值的部分把每个元素替换为它的模,并用共轭转置来计算谱范数。本计算器面向实数矩阵。
为什么 L1 范数按列、L-∞ 范数按行计算?它们分别是由 L1 向量范数和 L-∞ 向量范数导出的诱导范数(算子范数),推导结果恰好分别对应最大列和与最大行和。