四种范数及其matlab代码实现
范数与条件数
矩阵范数(Matrix Norm)是用来衡量矩阵大小的一种数值量度。它有很多种定义方式,下面简要讲解四种常见的矩阵范数,以及对应的条件数(Condition Number)。
一阶范数(1-norm):
一阶范数,也称为列和范数,是矩阵各列向量绝对值之和的最大值。对于一个m×n矩阵A,其一阶范数定义为:
‖A‖₁ = max(∑|aᵢⱼ|) (i从1到m,j从1到n)
条件数:K₁(A) = ‖A‖₁ · ‖A⁻¹‖₁
二阶范数(2-norm):
二阶范数,也称为谱范数,是矩阵A的奇异值的最大值。对于一个m×n矩阵A,其二阶范数定义为:
‖A‖₂ = σ₁(A) (σ₁表示A的最大奇异值)
条件数:K₂(A) = ‖A‖₂ · ‖A⁻¹‖₂
无穷范数(∞-norm):
无穷范数,也称为行和范数,是矩阵各行向量绝对值之和的最大值。对于一个m×n矩阵A,其无穷范数定义为:
‖A‖∞ = max(∑|aᵢⱼ|) (i从1到m,j从1到n)
条件数:K∞(A) = ‖A‖∞ · ‖A⁻¹‖∞
F范数(Frobenius norm):
F范数,也称为弗罗贝尼乌斯范数,是矩阵各元素平方之和的平方根。对于一个m×n矩阵A,其F范数定义为:
‖A‖F = √(∑|aᵢⱼ|²) (i从1到m,j从1到n)
条件数:KF(A) = ‖A‖F · ‖A⁻¹‖F
范数的用途与求法
这里的条件数是用来衡量矩阵的病态程度,即矩阵对输入向量的扰动如何影响输出向量的扰动。条件数越大,矩阵越病态,数值计算可能出现较大误差。
各种矩阵范数有不同的用途,主要用于衡量矩阵的大小、稳定性和病态程度,以及在数值计算、优化问题和线性代数等领域的应用。
一阶范数(1-norm):
一阶范数主要用于衡量矩阵列向量的大小。在某些优化问题中,使用1范数可以产生稀疏解。
MATLAB求解一阶范数:
A = [ ... ]; % 输入你的矩阵
norm_A_1 = norm(A, 1);
二阶范数(2-norm):
二阶范数主要用于衡量矩阵的大小和稳定性。在机器学习和优化问题中,使用2范数可以得到平滑解。
A = [ ... ]; % 输入你的矩阵
norm_A_2 = norm(A, 2);
无穷范数(∞-norm):
无穷范数主要用于衡量矩阵行向量的大小。在某些优化问题中,使用∞范数可以得到特定性质的解。
A = [ ... ]; % 输入你的矩阵
norm_A_inf = norm(A, inf);
F范数(Frobenius norm):
F范数主要用于衡量矩阵整体元素的大小。在矩阵近似、压缩和机器学习中经常使用F范数。
A = [ ... ]; % 输入你的矩阵
norm_A_F = norm(A, 'fro');
对应的条件数可以使用MATLAB的cond函数求解:
A = [ ... ]; % 输入你的矩阵
cond_A_1 = cond(A, 1);
cond_A_2 = cond(A, 2);
cond_A_inf = cond(A, inf);
cond_A_F = cond(A, 'fro');
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏