MATLAB `norm` 函数:向量和矩阵范数计算指南 – wiki基地

My apologies, I am encountering issues with the available tools and cannot directly write to a file using the current set of functions. It appears I do not have a write_file or run_shell_command tool available to create a new file with the article content.

However, I have prepared the article content as requested. I will provide it to you here, and you can manually save it to a file if you wish.


MATLAB norm 函数:向量和矩阵范数计算指南

MATLAB 是一款强大的数值计算和数据可视化工具,广泛应用于工程、科学和金融领域。在其丰富的函数库中,norm 函数是一个核心工具,用于计算向量和矩阵的范数。范数是数学中衡量向量大小或矩阵“强度”的一种方式,它在机器学习、优化、信号处理和数值分析等多个领域都扮演着至关重要的角色。

本文将详细介绍 MATLAB norm 函数的用法,包括不同类型的向量范数和矩阵范数,并提供清晰的示例。

什么是范数?

在数学中,范数是一个函数,它为向量空间中的每个向量指定一个非负长度。简单来说,它衡量一个向量或矩阵的“大小”或“长度”。不同的范数类型会根据其定义方式,给出不同的“大小”度量。

norm 函数的基本语法

MATLAB norm 函数的基本语法如下:

  1. n = norm(v): 计算向量 v 的 2-范数(欧几里得范数)或矩阵 A 的 2-范数(谱范数)。
  2. n = norm(v, p): 计算向量 vp-范数。
  3. n = norm(A, p): 计算矩阵 Ap-范数。

接下来,我们将深入探讨向量和矩阵的不同范数类型。

向量范数 (Vector Norms)

对于向量 vnorm(v, p) 可以计算多种 p-范数。最常用的向量范数包括:

1. 2-范数 (欧几里得范数)

这是最常见的范数,也称为欧几里得长度。它表示向量在几何空间中的长度。
计算方式: norm(v)norm(v, 2)
数学定义: ||v||₂ = √(Σ|vᵢ|²)

示例:
“`matlab
v = [3; -4; 0];
n2_norm = norm(v); % 默认计算2-范数
disp([‘向量的2-范数 (Euclidean norm): ‘, num2str(n2_norm)]);

n2_norm_explicit = norm(v, 2); % 显式指定p=2
disp([‘向量的2-范数 (explicit p=2): ‘, num2str(n2_norm_explicit)]);
输出:
向量的2-范数 (Euclidean norm): 5
向量的2-范数 (explicit p=2): 5
“`

2. 1-范数 (曼哈顿范数)

1-范数是向量所有元素的绝对值之和。
计算方式: norm(v, 1)
数学定义: ||v||₁ = Σ|vᵢ|

示例:
matlab
v = [3; -4; 0];
n1_norm = norm(v, 1);
disp(['向量的1-范数 (Manhattan norm): ', num2str(n1_norm)]);

输出:
向量的1-范数 (Manhattan norm): 7

3. 无穷范数 (Maximum Absolute Value Norm)

无穷范数是向量中元素绝对值的最大值。
计算方式: norm(v, inf)
数学定义: ||v||∞ = max(|vᵢ|)

示例:
matlab
v = [3; -4; 0];
ninf_norm = norm(v, inf);
disp(['向量的无穷范数 (Maximum Absolute Value norm): ', num2str(ninf_norm)]);

输出:
向量的无穷范数 (Maximum Absolute Value norm): 4

4. p-范数 (General p-norm)

对于任何 p ≥ 1p-范数定义为向量元素绝对值的 p 次方之和的 1/p 次方。
计算方式: norm(v, p)
数学定义: ||v||ₚ = (Σ|vᵢ|ᵖ)¹ᐟᵖ

示例:
matlab
v = [1; 2; -3];
p = 3;
np_norm = norm(v, p);
disp(['向量的3-范数: ', num2str(np_norm)]);

输出:
向量的3-范数: 3.3019

矩阵范数 (Matrix Norms)

对于矩阵 Anorm(A, p) 可以计算多种矩阵范数。常用的矩阵范数包括:

1. 2-范数 (谱范数)

这是矩阵的最大奇异值,也是 norm(A) 的默认行为。它通常用于衡量矩阵对向量的“拉伸”程度。
计算方式: norm(A)norm(A, 2)
数学定义: ||A||₂ = max(σᵢ) (其中 σᵢ 是矩阵 A 的奇异值)

示例:
“`matlab
A = [1 2; 3 4];
n2_norm_matrix = norm(A); % 默认计算2-范数 (谱范数)
disp([‘矩阵的2-范数 (Spectral norm): ‘, num2str(n2_norm_matrix)]);

n2_norm_matrix_explicit = norm(A, 2); % 显式指定p=2
disp([‘矩阵的2-范数 (explicit p=2): ‘, num2str(n2_norm_matrix_explicit)]);
输出:
矩阵的2-范数 (Spectral norm): 5.4649
矩阵的2-范数 (explicit p=2): 5.4649
“`

2. 1-范数 (列和最大值范数)

1-范数是矩阵所有列的绝对值之和中的最大值。
计算方式: norm(A, 1)
数学定义: ||A||₁ = maxⱼ(Σᵢ|aᵢⱼ|)

示例:
matlab
A = [1 -2; 3 4];
n1_norm_matrix = norm(A, 1);
disp(['矩阵的1-范数 (Maximum Column Sum norm): ', num2str(n1_norm_matrix)]);

输出:
矩阵的1-范数 (Maximum Column Sum norm): 6
(因为第一列绝对值和是 |1|+|3|=4,第二列绝对值和是 |-2|+|4|=6,最大值是 6)

3. 无穷范数 (行和最大值范数)

无穷范数是矩阵所有行的绝对值之和中的最大值。
计算方式: norm(A, inf)
数学定义: ||A||∞ = maxᵢ(Σⱼ|aᵢⱼ|)

示例:
matlab
A = [1 -2; 3 4];
ninf_norm_matrix = norm(A, inf);
disp(['矩阵的无穷范数 (Maximum Row Sum norm): ', num2str(ninf_norm_matrix)]);

输出:
矩阵的无穷范数 (Maximum Absolute Value norm): 7
(因为第一行绝对值和是 |1|+|-2|=3,第二行绝对值和是 |3|+|4|=7,最大值是 7)

4. Frobenius 范数

Frobenius 范数是矩阵所有元素的平方和的平方根,可以看作是将矩阵“展平”成一个长向量后的 2-范数。
计算方式: norm(A, 'fro')
数学定义: ||A||_F = √(Σᵢⱼ|aᵢⱼ|²)

示例:
matlab
A = [1 2; 3 4];
nfro_norm_matrix = norm(A, 'fro');
disp(['矩阵的Frobenius范数: ', num2str(nfro_norm_matrix)]);

输出:
矩阵的Frobenius范数: 5.4772

总结

MATLAB 的 norm 函数是计算向量和矩阵范数的强大而灵活的工具。通过了解不同的 p 值参数,您可以计算适用于各种数学和工程应用的特定范数。无论是衡量向量的欧几里得长度,还是评估矩阵的谱强度或 Frobenius 范数,norm 函数都能提供精确且高效的计算。熟练掌握 norm 函数的使用,将极大地增强您在 MATLAB 中进行数值分析和算法开发的效率。


滚动至顶部