1. 引入:函数展开
- 设函数
y
=
f
(
x
)
y = f(x)
y=f(x) 在点
x
0
x_0
x0 处可导,则在点
x
0
x_0
x0 的某邻域内,可以用下式表示原函数值
f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + o ( x − x 0 ) , x → x 0 f(x) = f(x_0)+f'(x_0)(x - x_0) + o(x - x_0),\space\space\space x \rightarrow x_0 f(x)=f(x0)+f′(x0)(x−x0)+o(x−x0), x→x0
对于这种一元函数,示意图如下
- 上面这个式子,可以看作在点 x 0 x_0 x0 处对 f ( x ) f(x) f(x) 进行了一步展开,使用线性主部 f ′ ( x 0 ) ( x − x 0 ) f'(x_0)(x - x_0) f′(x0)(x−x0) 和与展开点 x 0 x_0 x0 的偏差 △ x \triangle x △x 的高阶无穷小表示原函数。
- 函数展开的应用非常广泛,这种方法可以把复杂的原始目标函数近似转换为多项式函数,从而简化问题。使用泰勒展开,只要原函数任意阶可导,就可以将其展开为任意阶的多项式函数,得到更高精度的表示
2. 泰勒展开
2.1 一元函数泰勒展开
- 使用泰勒展开,可以把在
x
k
x_k
xk 处
n
n
n 阶可导的函数
f
(
x
)
f(x)
f(x) 展开为关于
△
x
=
x
−
x
k
\triangle x = x-x_k
△x=x−xk 的
n
n
n 次多项式,如下
f ( x ) = f ( x k ) + ( x − x k ) f ′ ( x k ) + 1 2 ! ( x − x k ) 2 f ′ ′ ( x k ) + . . . = ∑ n = 0 ∞ f ( n ) ( x k ) n ! ( x − x k ) n \begin{aligned} f(x) &= f(x_k) + (x-x_k)f'(x_k)+\frac{1}{2!}(x-x_k)^2f''(x_k) + ... \\ &= \sum_{n=0}^\infin \frac{f^{(n)}(x_k)}{n!}(x-x_k)^n \end{aligned} f(x)=f(xk)+(x−xk)f′(xk)+2!1(x−xk)2f′′(xk)+...=n=0∑∞n!f(n)(xk)(x−xk)n - 当 n n n 有上界时,需要在展开式最后添加 △ x = ( x − x k ) \triangle x = (x-x_k) △x=(x−xk) 的 n n n 次方的高阶无穷小 o ( ( x − x k ) n ) o((x-x_k)^n) o((x−xk)n) 以补足近似差距,保证等号成立。可见,随着展开阶数提高,展开式精度也在不断提高
2.2 二元函数泰勒展开
- 记
△
x
=
x
−
x
k
,
△
y
=
y
−
y
k
\triangle x = x-x_k,\space\space \triangle y = y-y_k
△x=x−xk, △y=y−yk,设二元函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在
(
x
k
,
y
k
)
(x_k,y_k)
(xk,yk) 处可导,可以如下展开:
f ( x , y ) = f ( x k , y k ) + [ f x ′ ( x k , y k ) △ x + f y ′ ( x k , y k ) △ y ] + 1 2 ! [ f x x ′ ′ ( x k , y k ) △ x 2 + f x y ′ ′ ( x k , y k ) △ x △ y + f y x ′ ′ ( x k , y k ) △ x △ y + f y y ′ ′ ( x k , y k ) △ y 2 ] + . . . \begin{aligned} f(x,y) = f(x_k,y_k) &+ \Big[f'_x(x_k,y_k) \triangle x +f'_y(x_k,y_k)\triangle y\Big]\\ &+ \frac{1}{2!}\Big[f''_{xx}(x_k,y_k)\triangle x^2 + f''_{xy}(x_k,y_k)\triangle x\triangle y+f''_{yx}(x_k,y_k)\triangle x\triangle y+f''_{yy}(x_k,y_k)\triangle y^2 \Big] \\ &+ ... \end{aligned} f(x,y)=f(xk,yk)+[fx′(xk,yk)△x+fy′(xk,yk)△y]+2!1[fxx′′(xk,yk)△x2+fxy′′(xk,yk)△x△y+fyx′′(xk,yk)△x△y+fyy′′(xk,yk)△y2]+...
通常写成矩阵形式
f ( x , y ) = f ( x k , y k ) + [ f x ′ ( x k , y k ) f y ′ ( x k , y k ) ] [ △ x △ y ] + 1 2 ! [ △ x △ y ] [ f x x ′ ′ f ( x k , y k ) f x y ′ ′ f ( x k , y k ) f y x ′ ′ f ( x k , y k ) f y y ′ ′ f ( x k , y k ) ] [ △ x △ y ] + . . . \begin{aligned} f(x,y) = f(x_k,y_k) &+ \begin{bmatrix}f'_x(x_k,y_k)&f'_y(x_k,y_k)\end{bmatrix} \begin{bmatrix}\triangle x \\\triangle y\end{bmatrix} \\ &+ \frac{1}{2!}\begin{bmatrix}\triangle x &\triangle y\end{bmatrix} \begin{bmatrix}f''_{xx}f(x_k,y_k) &f''_{xy}f(x_k,y_k)\\f''_{yx}f(x_k,y_k) &f''_{yy}f(x_k,y_k)\end{bmatrix} \begin{bmatrix}\triangle x \\\triangle y\end{bmatrix} \\ &+... \end{aligned} f(x,y)=f(xk,yk)+[fx′(xk,yk)fy′(xk,yk)][△x△y]+2!1[△x△y][fxx′′f(xk,yk)fyx′′f(xk,yk)fxy′′f(xk,yk)fyy′′f(xk,yk)][△x△y]+... - 以上展开到2阶,所以至少要求2阶可导,若二阶导数连续(原函数为光滑曲线),则有 f x y ′ ′ = f y x ′ ′ f''_{xy}=f''_{yx} fxy′′=fyx′′,可进一步化简
2.3 n元函数泰勒展开
-
记 △ x i = x − x k i \triangle x^i = x-x_k^i △xi=x−xki,设 x = ( x 1 , x 2 , . . . , x n ) T \pmb{x} = (x^1,x^2,...,x^n)^T xxx=(x1,x2,...,xn)T, n n n 元函数 f ( x ) f(\pmb{x}) f(xxx) 在 x k = ( x k 1 , x k 2 , . . . , x k n ) T \pmb{x}_k = (x_k^1,x_k^2,...,x_k^n)^T xxxk=(xk1,xk2,...,xkn)T 处可导,可以如下展开:
f ( x ) = f ( x k ) + ∑ i = 1 n f x i ′ ( x ) △ x i + 1 2 ! ∑ i , j = 1 n f i j ′ ′ ( x k ) ( x i − x k i ) + . . . \begin{aligned} f(\pmb{x}) = f(\pmb{x}_k) &+ \sum_{i=1}^n f'_{x^i}(\pmb{x}) \triangle x^i \\ &+ \frac{1}{2!} \sum_{i,j=1}^nf''_{ij}(\pmb{x}_k)(x^i-x^i_k)\\ &+ ... \end{aligned} f(xxx)=f(xxxk)+i=1∑nfxi′(xxx)△xi+2!1i,j=1∑nfij′′(xxxk)(xi−xki)+...
通常写成矩阵形式
f ( x ) = f ( x k ) + [ f x 1 ′ ( x k ) f x 2 ′ ( x k ) … f x n ′ ( x k ) ] [ △ x 1 △ x 2 ⋮ △ x n ] + 1 2 ! [ △ x 1 △ x 2 … △ x n ] H ( x k ) [ △ x 1 △ x 2 ⋮ △ x n ] + . . . \begin{aligned} f(\pmb{x}) = f(\pmb{x}_k) &+ \begin{bmatrix}f'_{x^1}(\pmb{x}_k)&f'_{x^2}(\pmb{x}_k) &\dots &f'_{x^n}(\pmb{x}_k)\end{bmatrix} \begin{bmatrix}\triangle x^1 \\\triangle x^2 \\ \vdots\\ \triangle x^n \end{bmatrix} \\ &+ \frac{1}{2!}\begin{bmatrix}\triangle x^1 &\triangle x^2 & \dots & \triangle x^n \end{bmatrix} \pmb{H}(\pmb{x}_k) \begin{bmatrix}\triangle x^1 \\\triangle x^2 \\ \vdots\\ \triangle x^n \end{bmatrix}\\ &+ ... \end{aligned} f(xxx)=f(xxxk)+[fx1′(xxxk)fx2′(xxxk)…fxn′(xxxk)]⎣⎢⎢⎢⎡△x1△x2⋮△xn⎦⎥⎥⎥⎤+2!1[△x1△x2…△xn]HHH(xxxk)⎣⎢⎢⎢⎡△x1△x2⋮△xn⎦⎥⎥⎥⎤+...
其中 [ f x 1 ′ ( x k ) f x 2 ′ ( x k ) … f x n ′ ( x k ) ] \begin{bmatrix}f'_{x^1}(\pmb{x}_k)&f'_{x^2}(\pmb{x}_k) &\dots &f'_{x^n}(\pmb{x}_k)\end{bmatrix} [fx1′(xxxk)fx2′(xxxk)…fxn′(xxxk)] 就是 f ( x ) f(\pmb{x}) f(xxx) 的梯度,化简符号如下:
f ( x ) = f ( x k ) + [ ▽ f ( x k ) ] T [ x − x k ] + 1 2 ! [ x − x k ] T H ( x k ) [ x − x k ] + . . . \begin{aligned} f(\pmb{x}) = f(\pmb{x}_k) &+ [\triangledown f(\pmb{x}_k)]^T[\pmb{x}-\pmb{x}_k] \\ &+ \frac{1}{2!}[\pmb{x}-\pmb{x}_k]^T H(\pmb{x}_k) [\pmb{x}-\pmb{x}_k]\\ &+ ... \end{aligned} f(xxx)=f(xxxk)+[▽f(xxxk)]T[xxx−xxxk]+2!1[xxx−xxxk]TH(xxxk)[xxx−xxxk]+... -
以上展开到2阶,所以至少要求2阶可导,若二阶导数连续(原函数为光滑曲线),则有 f x y ′ ′ = f y x ′ ′ f''_{xy}=f''_{yx} fxy′′=fyx′′,可进一步化简。上式中 H ( x k ) H(\pmb{x}_k) H(xxxk) 是黑塞矩阵,当展开到二阶时就会出现
3. 黑塞矩阵(海森矩阵)
- 黑塞矩阵是由某个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率
黑塞矩阵常用于牛顿法解决优化问题,利用黑塞矩阵可判定多元函数的极值问题。在工程实际问题的优化设计中,所列的目标函数往往很复杂,为了使问题简化,常常将目标函数在某点邻域展开成泰勒多项式来逼近原函数,此时函数在某点泰勒展开式的矩阵形式中会涉及到黑塞矩阵
- 在 2.3 节设定下,黑塞矩阵为
对称性
:要求 f ( x ) f(\pmb{x}) f(xxx) 在展开区域内二阶连续可导(二阶偏导数连续,原函数光滑),则原函数的混合偏导数相等,黑塞矩阵成为对称矩阵- 可以使用黑塞矩阵判断多元函数极值,这个以后的文章再详细分析