MATLAB norm函数入门:范数类型及其计算方法 – wiki基地


MATLAB norm 函数入门:范数类型及其计算方法

在数学,尤其是线性代数和数值分析中,范数 (Norm) 是一个衡量向量或矩阵“大小”的函数。它是一个从向量空间到非负实数的映射,满足一定的性质(非负性、齐次性、三角不等式)。在 MATLAB 中,norm 函数提供了一个方便且强大的工具来计算各种类型的向量和矩阵范数。

本文将详细介绍 norm 函数的基本用法、支持的范数类型以及它们的计算方法。

1. norm 函数简介

norm 函数的目的是计算向量或矩阵的范数。根据输入参数的不同,它会计算不同类型的范数。

基本语法:

  • n = norm(v): 计算向量 v 的 2-范数(欧几里得范数)。
  • n = norm(v, p): 计算向量 v 的 p-范数。
  • n = norm(A): 计算矩阵 A 的 2-范数(谱范数)。
  • n = norm(A, p): 计算矩阵 A 的 p-范数。

接下来,我们将分向量范数和矩阵范数两部分进行深入探讨。

2. 向量范数 (Vector Norms)

对于向量 v = [v1, v2, ..., vn]norm(v, p) 可以计算不同的 p-范数。

2.1 1-范数 (L1 Norm / Manhattan Norm)

1-范数是向量元素绝对值之和。它也被称为曼哈顿距离或出租车范数。

公式:
$$
|v|1 = \sum{i=1}^{n} |v_i|
$$

MATLAB 语法: norm(v, 1)

示例:
matlab
v = [3, -4, 0, 5];
n1 = norm(v, 1);
disp(['向量的 1-范数: ', num2str(n1)]); % 结果: 3 + 4 + 0 + 5 = 12

2.2 2-范数 (L2 Norm / Euclidean Norm)

2-范数是向量元素平方和的平方根。它通常被称为欧几里得范数,表示向量的长度或大小。这是 norm(v) 的默认行为。

公式:
$$
|v|2 = \sqrt{\sum{i=1}^{n} |v_i|^2}
$$

MATLAB 语法: norm(v, 2)norm(v)

示例:
matlab
v = [3, -4, 0, 5];
n2 = norm(v, 2);
disp(['向量的 2-范数: ', num2str(n2)]); % 结果: sqrt(9 + 16 + 0 + 25) = sqrt(50) ≈ 7.0711

2.3 无穷范数 (Infinity Norm / Max Norm)

无穷范数是向量元素绝对值的最大值。

公式:
$$
|v|\infty = \max{i} |v_i|
$$

MATLAB 语法: norm(v, Inf)

示例:
matlab
v = [3, -4, 0, 5];
nInf = norm(v, Inf);
disp(['向量的 ∞-范数: ', num2str(nInf)]); % 结果: max(3, 4, 0, 5) = 5

2.4 负无穷范数 (Negative Infinity Norm / Min Norm)

负无穷范数是向量元素绝对值的最小值。

公式:
$$
|v|{-\infty} = \min{i} |v_i|
$$

MATLAB 语法: norm(v, -Inf)

示例:
matlab
v = [3, -4, 0, 5];
nNegInf = norm(v, -Inf);
disp(['向量的 -∞-范数: ', num2str(nNegInf)]); % 结果: min(3, 4, 0, 5) = 0

2.5 p-范数 (Lp Norm)

p-范数是向量元素绝对值的 p 次方和的 p 次方根。前面提到的 1-范数和 2-范数都是 p-范数的特例。

公式:
$$
|v|p = \left( \sum{i=1}^{n} |v_i|^p \right)^{1/p}
$$

MATLAB 语法: norm(v, p)

示例:
matlab
v = [3, -4, 0, 5];
p = 3;
np = norm(v, p);
disp(['向量的 3-范数: ', num2str(np)]); % 结果: (3^3 + 4^3 + 0^3 + 5^3)^(1/3) = (27 + 64 + 0 + 125)^(1/3) = (216)^(1/3) = 6

3. 矩阵范数 (Matrix Norms)

对于矩阵 Anorm(A, p) 可以计算不同的矩阵范数。

3.1 1-范数 (Column Sum Norm)

矩阵的 1-范数是矩阵列的绝对值之和的最大值。

公式:
$$
|A|1 = \max{j} \sum_{i=1}^{m} |a_{ij}|
$$
即:各列元素绝对值之和的最大值。

MATLAB 语法: norm(A, 1)

示例:
matlab
A = [1, -2, 3; 4, 5, -6; -7, 8, 9];
n_A1 = norm(A, 1);
% 列和绝对值:
% 列 1: |1|+|4|+|-7| = 1+4+7 = 12
% 列 2: |-2|+|5|+|8| = 2+5+8 = 15
% 列 3: |3|+|-6|+|9| = 3+6+9 = 18
disp(['矩阵的 1-范数: ', num2str(n_A1)]); % 结果: 18

3.2 2-范数 (Spectral Norm)

矩阵的 2-范数是矩阵的最大奇异值。它也被称为谱范数,是 norm(A) 的默认行为。对于对称矩阵,2-范数等于其最大特征值的绝对值。

公式:
$$
|A|2 = \sigma{\max}(A)
$$
其中 $\sigma_{\max}(A)$ 是矩阵 A 的最大奇异值。

MATLAB 语法: norm(A, 2)norm(A)

示例:
matlab
A = [1, 2; 3, 4];
n_A2 = norm(A, 2);
% 或者 s = svd(A); n_A2 = max(s);
disp(['矩阵的 2-范数: ', num2str(n_A2)]); % 结果: 5.4649

3.3 无穷范数 (Row Sum Norm)

矩阵的无穷范数是矩阵行的绝对值之和的最大值。

公式:
$$
|A|\infty = \max{i} \sum_{j=1}^{n} |a_{ij}|
$$
即:各行元素绝对值之和的最大值。

MATLAB 语法: norm(A, Inf)

示例:
matlab
A = [1, -2, 3; 4, 5, -6; -7, 8, 9];
n_AInf = norm(A, Inf);
% 行和绝对值:
% 行 1: |1|+|-2|+|3| = 1+2+3 = 6
% 行 2: |4|+|5|+|-6| = 4+5+6 = 15
% 行 3: |-7|+|8|+|9| = 7+8+9 = 24
disp(['矩阵的 ∞-范数: ', num2str(n_AInf)]); % 结果: 24

3.4 Frobenius 范数 (Frobenius Norm)

Frobenius 范数是矩阵所有元素平方和的平方根,类似于向量的 2-范数在矩阵上的推广。

公式:
$$
|A|F = \sqrt{\sum{i=1}^{m} \sum_{j=1}^{n} |a_{ij}|^2}
$$

MATLAB 语法: norm(A, 'fro')

示例:
matlab
A = [1, 2; 3, 4];
n_AFro = norm(A, 'fro');
% 结果: sqrt(1^2 + 2^2 + 3^2 + 4^2) = sqrt(1 + 4 + 9 + 16) = sqrt(30) ≈ 5.4772
disp(['矩阵的 Frobenius 范数: ', num2str(n_AFro)]);

4. 范数的实际应用

范数在许多科学和工程领域都有广泛应用:

  • 误差分析: 衡量计算误差的大小,例如在迭代算法中判断收敛性。
  • 距离度量: 计算两个向量或函数之间的距离,用于模式识别、机器学习等。
  • 优化问题: 很多优化算法的目标是最小化某个范数。
  • 稳定性分析: 矩阵范数在分析线性系统稳定性、条件数等方面至关重要。
  • 数据压缩与降维: 在主成分分析 (PCA) 等技术中,范数用于衡量信息损失。

5. 总结

norm 函数是 MATLAB 中一个基本而强大的工具,用于计算向量和矩阵的各种范数。理解不同范数的定义及其物理意义对于数值分析、数据科学和工程计算至关重要。通过灵活使用 norm(v, p)norm(A, p) 语法,您可以有效地衡量数据的大小、距离和复杂度,从而更好地理解和处理数学模型。


滚动至顶部