将形如
f
=
x
T
A
x
f=\boldsymbol{x^TAx}
f=xTAx称为二次型,其中
x
\boldsymbol x
x是
n
n
n维列向量,
A
\boldsymbol A
A为
n
×
n
n\times n
n×n的矩阵,
f
f
f为标量。二次型由于其良好的正定性、凸性在控制理论中经常用在判断系统稳定性、最优控制等。但是有个数学上的疑问,如何求二次型函数对自变量向量的导数
(1)
d
f
d
x
=
?
\frac{\text df}{\text d\boldsymbol x}=? \tag{1}
dxdf=?(1)
1. 标量对向量导数的定义
控制理论中都会使用到标量函数对向量的导数,比如在李雅普诺夫第二法判断稳定性中,但大多数控制理论的教材都没有给出如何对向量求导数,实际上高等数学也未明确地讲这件事情。最近在看《最优控制理论与应用》-解学书编著,一本很老的书,发现该书花了一章来讨论数学基础。
标量函数
f
(
x
)
f(\boldsymbol x)
f(x)对
n
n
n维列向量
x
=
[
x
1
,
x
2
.
.
.
x
n
]
T
\boldsymbol x=[x_{1},~x_{2}...~x_{n}]^{\text T}
x=[x1, x2... xn]T的导数定义为
(2)
d
f
d
x
=
Δ
[
d
f
d
x
1
,
d
f
d
x
2
,
.
.
.
d
f
d
x
n
]
T
\frac{\text df}{\text d \boldsymbol x}\overset{\Delta}{=} \left[\frac{\text d f}{\text d x_1},~\frac{\text d f}{\text dx_2},...\frac{\text d f}{\text d x_n}\right]^{\text{T}} \tag{2}
dxdf=Δ[dx1df, dx2df,...dxndf]T(2)
实际上,式(2)的定义高等数学下中的梯度
g
r
a
d
f
\bold{grad }f
gradf,或者记为
∇
f
\nabla f
∇f。也就是说,对列向量的导数是一个列向量。类似地,可以定义对行向量的导数。
(3)
d
f
d
x
T
=
Δ
[
d
f
d
x
1
,
d
f
d
x
2
,
.
.
.
d
f
d
x
n
]
\frac{\text d f}{\text d \boldsymbol x^{\text T}} \overset{\Delta}{=} \left[\frac{\text d f}{\text d x_1},~\frac{\text d f}{\text d x_2},...\frac{\text d f}{\text d x_n}\right] \tag{3}
dxTdf=Δ[dx1df, dx2df,...dxndf](3)
2. 向量对向量导数的定义
函数
f
(
x
)
=
[
f
1
(
x
)
,
f
2
(
x
)
.
.
.
f
m
(
x
)
]
T
\boldsymbol f(\boldsymbol x)=[f_{1}(\boldsymbol x), ~f_{2}(\boldsymbol x)...~f_{m}(\boldsymbol x)]^{\text{T}}
f(x)=[f1(x), f2(x)... fm(x)]T是
n
n
n维列向量
x
=
[
x
1
,
x
2
.
.
.
x
n
]
T
\boldsymbol x=[x_{1},~x_{2}...~x_{n}]^{\text T}
x=[x1, x2... xn]T的
m
m
m维函数向量。该向量函数对向量的导数定义为
(4)
d
f
d
x
=
Δ
d
f
d
x
T
=
Δ
[
d
f
1
d
x
1
,
d
f
1
d
x
2
,
⋯
d
f
1
d
x
n
d
f
2
d
x
1
,
d
f
2
d
x
2
,
⋯
d
f
2
d
x
n
⋮
⋮
⋯
⋮
d
f
m
d
x
1
,
d
f
m
d
x
2
,
⋯
d
f
m
d
x
n
]
\frac{\text d \boldsymbol f}{\text d \boldsymbol x}\overset{\Delta}{=}\frac{\text d \boldsymbol f}{\text d \boldsymbol x^{\text T}}\overset{\Delta}{=} \begin{bmatrix} \frac{\text d f_{1}}{\text d x_{1}},&~ \frac{\text d f_{1}}{\text d x_{2}}, &\cdots&\frac{\text d f_{1}}{\text d x_{n}} \\ \frac{\text d f_{2}}{\text d x_{1}},&~ \frac{\text d f_{2}}{\text d x_{2}}, &\cdots&\frac{\text d f_{2}}{\text d x_{n}} \\ \vdots &\vdots& \cdots& \vdots\\ \frac{\text d f_{m}}{\text d x_{1}},&~ \frac{\text d f_{m}}{\text d x_{2}}, &\cdots&\frac{\text d f_{m}}{\text d x_{n}} \end{bmatrix} \tag{4}
dxdf=ΔdxTdf=Δ⎣⎢⎢⎢⎢⎡dx1df1,dx1df2,⋮dx1dfm, dx2df1, dx2df2,⋮ dx2dfm,⋯⋯⋯⋯dxndf1dxndf2⋮dxndfm⎦⎥⎥⎥⎥⎤(4)
可以根据上面的定义直接得到
(5)
d
x
d
x
T
=
d
x
T
d
x
=
I
\frac{\text d \boldsymbol x}{\text d \boldsymbol x^{\text T}}=\frac{\text d \boldsymbol x^{\text T}}{\text d \boldsymbol x}=\boldsymbol I \tag{5}
dxTdx=dxdxT=I(5)
3. 二次型的导数
有了上述的定义之后,可以根据定义得出对向量求导数的一些性质。
(6)
d
(
a
T
b
)
d
x
=
d
a
T
d
x
b
+
d
b
T
d
x
a
\frac{\text d (\boldsymbol{a^{\text{T}}b})}{\text d \boldsymbol x}=\frac{\text d \boldsymbol{a^{\text{T}}}}{\text d \boldsymbol x}\boldsymbol b+\frac{\text d \boldsymbol{b^{\text{T}}}}{\text d \boldsymbol x}\boldsymbol a \tag{6}
dxd(aTb)=dxdaTb+dxdbTa(6)
A
=
[
a
1
,
a
2
⋯
a
m
]
\boldsymbol A=[\boldsymbol a_{1},~\boldsymbol a_{2}\cdots\boldsymbol a_{m}]
A=[a1, a2⋯am]是
n
×
m
n\times m
n×m的矩阵,可以根据上面的定义和性质计算
(7)
d
(
x
T
A
)
d
x
=
[
d
d
x
(
x
T
a
1
)
,
d
d
x
(
x
T
a
2
)
⋯
d
d
x
(
x
T
a
m
)
]
\frac{\text d (\boldsymbol {x^{\text{T}}A})}{\text d\boldsymbol {x}}= [\frac{\text d}{\text d \boldsymbol x}\boldsymbol ({x^{\text{T}}}\boldsymbol a_{1}),~\frac{\text d}{\text d \boldsymbol x}(\boldsymbol {x^{\text{T}}}\boldsymbol a_{2})\cdots\frac{\text d}{\text d \boldsymbol x}(\boldsymbol {x^{\text{T}}}\boldsymbol a_{m})] \tag{7}
dxd(xTA)=[dxd(xTa1), dxd(xTa2)⋯dxd(xTam)](7)
又因为,
(8)
d
d
x
(
x
T
a
i
)
=
d
x
T
d
x
a
i
+
d
a
i
T
d
x
x
=
a
i
\frac{\text d}{\text d \boldsymbol x}\boldsymbol ({x^{\text{T}}}\boldsymbol a_{i})=\frac{\text d\boldsymbol {x^{\text{T}}}}{\text d \boldsymbol x}\boldsymbol a_{i}+\frac{\text d{\boldsymbol a_{i}^{\text{T}}}}{\text d \boldsymbol x}\boldsymbol x=\boldsymbol a_{i} \tag{8}
dxd(xTai)=dxdxTai+dxdaiTx=ai(8)
所以,
(9)
d
(
x
T
A
)
d
x
=
A
\frac{\text d (\boldsymbol {x^{\text{T}}A})}{\text d\boldsymbol {x}}=\boldsymbol A \tag{9}
dxd(xTA)=A(9)
根据式(6)得到二次型函数
f
=
x
T
A
x
f=\boldsymbol{x^TAx}
f=xTAx对自变量
x
\boldsymbol{x}
x的导数可以表为
(10)
d
f
d
x
=
d
x
T
d
x
A
x
+
d
(
A
x
)
T
d
x
x
=
d
x
T
d
x
A
x
+
d
(
x
T
A
T
)
d
x
x
=
A
x
+
A
T
x
=
(
A
+
A
T
)
x
\begin{matrix} \frac{\text df}{\text d\boldsymbol x} = \frac{\text d\boldsymbol{x^\text T}}{\text d\boldsymbol x}\boldsymbol{Ax}+\frac{\text d\boldsymbol{(Ax)^\text T}}{\text d\boldsymbol x}\boldsymbol{x}\\ = \frac{\text d\boldsymbol{x^\text T}}{\text d\boldsymbol x}\boldsymbol{Ax}+\frac{\text d\boldsymbol{(x^\text TA^{\text T})}}{\text d\boldsymbol x}\boldsymbol{x}\\ = \boldsymbol{Ax}+\boldsymbol{A^{\text T}x}\\ = (\boldsymbol{A+A^{\text T})x} \end{matrix} \tag{10}
dxdf=dxdxTAx+dxd(Ax)Tx=dxdxTAx+dxd(xTAT)x=Ax+ATx=(A+AT)x(10)
如果
A
\boldsymbol A
A是对称阵,则有
(11)
d
f
d
x
=
d
(
x
T
A
x
)
d
x
=
2
A
x
\frac{\text df}{\text d\boldsymbol x} =\frac{\text d(\boldsymbol{x^TAx})}{\text d\boldsymbol x} = 2\boldsymbol{Ax} \tag{11}
dxdf=dxd(xTAx)=2Ax(11)
这就是在教材上给出的结果。