二元函数怎么求海森矩阵

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二元函数怎么求海森矩阵相关的知识,希望对你有一定的参考价值。

参考技术A Hessian Matrix,译作黑塞矩阵、海森矩阵、海瑟矩阵、海塞矩阵等。是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。Hessian Matrix最早于19世纪由德国数学家Ludwig Otto Hesse提出,并以其名字命名。

Hessian Matrix常用于牛顿法解决优化问题,利用Hessian Matrix可判定多元函数的极值问题。

在工程实际问题的优化设计中,所列的目标函数往往很复杂,为了使问题简化,常常将目标函数在某点邻域展开成泰勒多项式来逼近原函数,此时函数在某点泰勒展开式的矩阵形式中会涉及到Hessian Matrix。
参考技术B anghh
管理
随笔 - 228 文章 - 0 评论 - 14 阅读 - 41万
海森矩阵
海森矩阵:是一个多元函数的二阶偏导数构成的方阵。

1. 二元函数的海森矩阵

如果不理解二元函数的泰勒展开可先阅读博客。

f(x0+h,y0+k)=f(x0,y0)+h⋅∂∂x+k⋅∂∂y1!f(x0,y0)+(h⋅∂∂x+k⋅∂∂y)22!f(x0,y0)+...+(h⋅∂∂x+k⋅∂∂y)nn!f(x0,y0)+R
参考技术C f(x0+h,y0+k)=f(x0,y0)+[∂f∂x∂f∂y]|(x0,y0) 参考技术D 海森矩阵:是一个多元函数的二阶偏导数构成的方阵。
1. 二元函数的海森矩阵

如果不理解二元函数的泰勒展开可先阅读博客。

f(x0+h,y0+k)=f(x0,y0)+h⋅∂∂x+k⋅∂∂y1!f(x0,y0)+(h⋅∂∂x+k⋅∂∂y)22!f(x0,y0)+...+(h⋅∂∂x+k⋅∂∂y)nn!f(x0,y0)+Rn
f(x0+h,y0+k)=f(x0,y0)+h⋅∂∂x+k⋅∂∂y1!f(x0,y0)+(h⋅∂∂x+k⋅∂∂y)22!f(x0,y0)+...+(h⋅∂∂x+k⋅∂∂y)nn!f(x0,y0)+Rn

写成矩阵形式为

f(x0+h,y0+k)=f(x0,y0)+[∂f∂x∂f∂y]∣∣∣(x0,y0)[hk]+12[hk]⎡⎣⎢∂2f∂x2∂2f∂x∂y∂2f∂x∂y∂2f∂y2⎤⎦⎥∣∣∣(x0,y0)[hk]+⋯
f(x0+h,y0+k)=f(x0,y0)+[∂f∂x∂f∂y]|(x0,y0)[hk]+12[hk][∂2f∂x2∂2f∂x∂y∂2f∂x∂y∂2f∂y2]|(x0,y0)[hk]+⋯

这里我们只写泰勒展开的前三项,第三项就是一个二次型。后面的项太过复杂,一般前三项够了。

记自变量为 x=(x(1),x(2))x=(x(1),x(2)),是一个向量,将函数 f(x)f(x) 在 x0x0 处展开,于是 Δx=[x(1)−x(1)0x(2)−x(2)0]Δx=[x(1)−x0(1)x(2)−x0(2)],将上面的展开式进一步表示为梯度形式:

f(x)=f(x0)+∇f(x0)TΔx+12ΔxTG(x0)Δx+⋯
f(x)=f(x0)+∇f(x0)TΔx+12ΔxTG(x0)Δx+⋯

其中,∇f(x0)∇f(x0) 为 f(x)f(x) 在点 x0x0 处的梯度向量,G(x0)G(x0) 是一个二阶矩阵,称为 f(x)f(x) 在 x0x0 处的海森矩阵,它们取值为别为:

∇f(x0)=(∂f∂x(1),∂f∂x(2))∣∣∣(x0)
∇f(x0)=(∂f∂x(1),∂f∂x(2))|(x0)

G(x0)=⎡⎣⎢∂2f∂x(1)2∂2f∂x(1)∂x(2)∂2f∂x(1)∂x(2)∂2f∂x(2)2⎤⎦⎥∣∣∣(x0)
G(x0)=[∂2f∂x(1)2∂2f∂x(1)∂x(2)∂2f∂x(1)∂x(2)∂2f∂x(2)2]|(x0)

2. 多元函数的海森矩阵

由上面介绍的二元函数的海森矩阵,进一步推广到多元函数的海森矩阵。这里也仅仅是展开到二阶。

记自变量向量为 x=(x(1),x(2),⋯,x(n))x=(x(1),x(2),⋯,x(n)),f(x)f(x) 是一个 nn 元的函数,则其在点 x0x0 处的泰勒展开式为

f(x)=f(x0)+∇f(x0)TΔx+12ΔxTG(x0)Δx+⋯
f(x)=f(x0)+∇f(x0)TΔx+12ΔxTG(x0)Δx+⋯

这个形式和二元的展开是一样的,但是一些取值不一样:

Δx=⎡⎣⎢⎢⎢⎢⎢⎢x(1)−x(1)0x(2)−x(2)0⋮x(n)−x(n)0⎤⎦⎥⎥⎥⎥⎥⎥
Δx=[x(1)−x0(1)x(2)−x0(2)⋮x(n)−x0(n)]

∇f(x0)=(∂f∂x(1),∂f∂x(2),⋯,∂f∂x(n))∣∣∣(x0)
∇f(x0)=(∂f∂x(1),∂f∂x(2),⋯,∂f∂x(n))|(x0)

G(x0)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢∂2f∂x(1)2∂2f∂x(1)∂x(2)⋮∂2f∂x(1)∂x(n)∂2f∂x(1)∂x(2)∂2f∂x(2)2⋮∂2f∂x(2)∂x(n)⋯⋯⋱⋯∂2f∂x(1)∂x(n)∂2f∂x(2)∂x(n)⋮∂2f∂x(n)2⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥
G(x0)=[∂2f∂x(1)2∂2f∂x(1)∂x(2)⋯∂2f∂x(1)∂x(n)∂2f∂x(1)∂x(2)∂2f∂x(2)2⋯∂2f∂x(2)∂x(n)⋮⋮⋱⋮∂2f∂x(1)∂x(n)∂2f∂x(2)∂x(n)⋯∂2f∂x(n)2]

这个 nn 阶矩阵 G(x0)G(x0) 称为 f(x)f(x) 在 x0x0 处的海森矩阵。

3. 利用海森矩阵判定多元函数的极值

我们已经知道如何判断二元函数的极值点,如果不了解,可先去阅读博客。

现在来考虑 nn 元函数的极值,自变量为向量 x=(x(1),x(2),⋯,x(n))x=(x(1),x(2),⋯,x(n)),假如 f(x)f(x) 在点 x0x0 的邻域有二阶连续偏导数,若

∂f∂x(j)=0,j=1,2,⋯,n
∂f∂x(j)=0,j=1,2,⋯,n

并且

A=G(x0)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢∂2f∂x(1)2∂2f∂x(1)∂x(2)⋮∂2f∂x(1)∂x(n)∂2f∂x(1)∂x(2)∂2f∂x(2)2⋮∂2f∂x(2)∂x(n)⋯⋯⋱⋯∂2f∂x(1)∂x(n)∂2f∂x(2)∂x(n)⋮∂2f∂x(n)2⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥
A=G(x0)=[∂2f∂x(1)2∂2f∂x(1)∂x(2)⋯∂2f∂x(1)∂x(n)∂2f∂x(1)∂x(2)∂2f∂x(2)2⋯∂2f∂x(2)∂x(n)⋮⋮⋱⋮∂2f∂x(1)∂x(n)∂2f∂x(2)∂x(n)⋯∂2f∂x(n)2]

则有如下结果:

1)当 AA 为正定矩阵时,f(x)f(x) 在 x0x0 处是极小值。

2)当 BB 为负定矩阵时,f(x)f(x) 在 x0x0 处是极大值

以上是关于二元函数怎么求海森矩阵的主要内容,如果未能解决你的问题,请参考以下文章

怎么理解海森矩阵和雅可比矩阵

海森矩阵和牛顿法

雅克比矩阵、海森矩阵

请问哪本教材介绍了海森(Hessian)矩阵

使用python求海森Hessian矩阵

海森(Hessian)矩阵