矩阵定性-正定负定不定半正定半负定

矩阵定性:正定、负定、不定、半正定、半负定

Hessian 系列:定义与性质 → 本篇(矩阵定性)→ 特征值与特征向量的含义 → 图像处理中的 Hessian 矩阵


1. 定义:只看一个量

对对称矩阵 A,判断标准只有一个:对任意非零向量 x,二次型 xᵀAx 的符号是什么?

类型 条件 图形直觉 极值含义
正定 xᵀAx > 0,对所有 x≠0 碗口向上 局部极小
负定 xᵀAx < 0,对所有 x≠0 倒碗(向下开口) 局部极大
半正定 xᵀAx ≥ 0,有 x≠0 使等号成立 碗底是平的 可能极小
半负定 xᵀAx ≤ 0,有 x≠0 使等号成立 倒碗底是平的 可能极大
不定 有 x 使 xᵀAx>0,也有 x 使 xᵀAx<0 马鞍形 鞍点

图形直觉(侧视图):

复制代码
正定(碗):      负定(倒碗):    半正定(平底碗):

   \      /           /\                \______/
    \    /           /  \
     \__/           /    \

不定(马鞍):同一个点,沿不同方向切一刀,凹凸相反

  沿 A 方向切:  \    ·    /      谷(函数值往上弯)
  沿 B 方向切:  /‾‾‾·‾‾‾\      脊(函数值往下弯)

2. 判定方法

2.1 特征值(最本质)

类型 条件
正定 所有 λᵢ > 0
负定 所有 λᵢ < 0
半正定 所有 λᵢ ≥ 0,至少一个 = 0
半负定 所有 λᵢ ≤ 0,至少一个 = 0
不定 λᵢ 有正有负

2.2 顺序主子式(Sylvester 准则)

设 Δ₁, Δ₂, ..., Δₙ 是从左上角依次变大的子矩阵的行列式:

复制代码
2×2 矩阵为例:
  Δ₁ = |a|
  Δ₂ = |a  b|
       |b  d|
类型 条件
正定 Δ₁ > 0, Δ₂ > 0, ..., Δₙ > 0(全正)
负定 Δ₁ < 0, Δ₂ > 0, Δ₃ < 0, ...(符号交替,(-1)ᵏ)
半正定 所有主子式 ≥ 0(不仅是顺序主子式)
半负定 所有主子式 ≤ 0
不定 正定/负定的符号模式都不匹配(det < 0 可直接断定不定)

容易忽略的点:半正定/半负定不能只查顺序主子式,必须把所有主子式都查一遍------这是用 Sylvester 准则最常见的踩坑处。实战中拿特征值判定更省心。

2.3 2×2 矩阵快速判定

H = \[a, b, b, d]:

复制代码
det = ad - b²
tr  = a + d

det > 0, a > 0  →  正定
det > 0, a < 0  →  负定
det < 0         →  不定
det = 0         →  半正定(a≥0) 或 半负定(a≤0)

3. 与一维二阶导数的对应关系

正定就是一维时 f'' > 0 的高维推广。

复制代码
1D:  f'' > 0           → 正定 → 极小值
nD:  所有 λᵢ > 0       → 正定 → 极小值

本质上是一回事:从"一个方向的 f''>0"推广到"所有方向的 f'' 都>0"。

  • 单个特征值的正负只说明某个方向的凹凸
  • 正定/负定/不定描述的是所有方向合在一起的整体形状

4. 具体数值例子

复制代码
例1: H = [[4, 1],     λ₁≈3.4, λ₂≈5.6    全正 → 正定
           [1, 5]]

例2: H = [[-3, 0],    λ₁=-3, λ₂=-5      全负 → 负定
           [0, -5]]

例3: H = [[2, 3],     λ₁=-1, λ₂=5       有正有负 → 不定
           [3, 2]]

例4: H = [[4, 2],     λ₁=0, λ₂=5        非负+有零 → 半正定
           [2, 1]]     (det = 0,第2行是第1行的0.5倍,秩=1)

例5: H = [[0, 0],     λ₁=0, λ₂=0        全零 → 半正定(也是半负定)
           [0, 0]]

5. 为什么正定意味着极小值

假设 f'(x₀) = 0(驻点),在 x₀ 附近做泰勒展开:

复制代码
f(x₀ + h) - f(x₀) ≈ ½ f''(x₀) · h²     (1D)
f(x₀ + Δx) - f(x₀) ≈ ½ ΔxᵀHΔx           (nD)

关键:h² 恒为正(不管 h 正负),ΔxᵀHΔx 在 H 正定时也恒为正。

所以:

  • H 正定 → 不管往哪个方向走,函数值都增大 → 碗底 → 极小值

  • H 负定 → 不管往哪个方向走,函数值都减小 → 山顶 → 极大值

  • H 不定 → 有的方向增大有的减小 → 鞍点

    f'' > 0 的情况(1D):

    复制代码
       f' < 0          f' = 0         f' > 0
        下坡 \          平 \           / 上坡
               \          |          /
                \         |         /
                 \________|________/
                      x₀

    → 斜率从负变正(递增),x₀ 是谷底

f'' > 0 意味着"坡度在增加"------你脚下是平的(f'=0),但两边的坡都在把你往上推,所以你站在最低点。

相关推荐
个 人 练 习 生1 小时前
C++-----string基本使用详解
开发语言·c++·学习
朝朝辞暮i1 小时前
C++ 第 5 课:else if + 多条件判断 + && / || / !
开发语言·c++
千谦阙听2 小时前
【C++篇】:string类——常用接口、底层原理与深浅拷贝
开发语言·c++·学习·visual studio
特立独行的猫A2 小时前
c++的`std::future` 与 `std::promise` 简明教程(5分钟读完)
c++
特立独行的猫A2 小时前
C++ 异步编程:std::future 与 std::promise 详解(含 RPC 客户端实现实践)
c++·后端
All for pursuit.2 小时前
【分治-2】215.数组中的第K个最大元素
数据结构·c++·算法·leetcode
lcj25112 小时前
【C++】set和map——详细使用说明
开发语言·c++·笔记·面试
潼心1412o2 小时前
C++初阶(长期更新)第3讲:类和对象(中)
开发语言·c++
程序喵大人3 小时前
【C++入门】编译链接模型 - 02 预处理把头文件怎样塞进源文件
开发语言·c++·预处理·编译链接·头文件·源文件