雅可比矩阵是以一阶偏导数按一定方式排列而成的矩阵,如果为方阵,其行列式就是 雅可比行列式,雅克比行列式最重要的就是能够提供一个最佳线性逼近。 雅克比矩阵体现的是多重映射关系,假设有 m 个自变量,n 个因变量,那么它们就可 以表示成一个
m
×
n
\mathrm{m} \times \mathrm{n}
m×n 的矩阵,其元素即为一个对应映射的偏导数,比如给定三个自变量
x
1
、
x
2
,
x
3
x_{1} 、 x_{2}, x_{3}
x1、x2,x3 和三个因变量
y
1
、
y
2
、
y
3
,
y_{1} 、 y_{2} 、 y_{3},
y1、y2、y3, 然后我们可以得到一个矩阵:
J
=
[
∂
y
1
∂
x
1
∂
y
2
∂
x
1
∂
y
3
∂
x
1
∂
y
1
∂
x
2
∂
y
2
∂
x
2
∂
y
3
∂
x
2
∂
y
1
∂
x
3
∂
y
2
∂
x
3
∂
y
3
∂
x
3
]
,
J=\left[\begin{array}{lll}\frac{\partial y_{1}}{\partial x_{1}} & \frac{\partial y_{2}}{\partial x_{1}} & \frac{\partial y_{3}}{\partial x_{1}} \\ \frac{\partial y_{1}}{\partial x_{2}} & \frac{\partial y_{2}}{\partial x_{2}} & \frac{\partial y_{3}}{\partial x_{2}} \\ \frac{\partial y_{1}}{\partial x_{3}} & \frac{\partial y_{2}}{\partial x_{3}} & \frac{\partial y_{3}}{\partial x_{3}}\end{array}\right],
J=⎣⎢⎡∂x1∂y1∂x2∂y1∂x3∂y1∂x1∂y2∂x2∂y2∂x3∂y2∂x1∂y3∂x2∂y3∂x3∂y3⎦⎥⎤,
由于它正好是方阵,所以其行列式就为雅克比行列式,
如果p是
R
n
\mathbb{R}^{n}
Rn 中的一点, F在 p点可微分,根据高等微祐分
,
J
P
(
p
)
, \quad J_{P}(p)
,JP(p) 是在这点的导数。在此情况下
,
J
F
(
p
)
, \quad J_{F}(p)
,JF(p) 这个线性映射即
F
F
F 在点p附近的最优线性逼近,也就是说当x足够靠近点p时,我们有
F
(
x
)
≈
F
(
p
)
+
J
F
(
p
)
⋅
(
x
−
p
)
F(x) \approx F(p)+J_{F}(p) \cdot(x-p)
F(x)≈F(p)+JF(p)⋅(x−p)
雅克比方法的理论基础就是正交对角化,其基本思想就是通过一系列平面旋转矩阵构 成的正交变换使得实对称矩阵最终化为一个对角矩阵,在代码复现过程中,我的目的并不是 要求实对称矩阵的特征向量,我只是需要那个最终的对角矩阵。现在我就对雅克比方法进行 一个简单的推导,设一个实对称矩阵:
A
=
[
a
11
a
12
⋯
a
1
j
⋯
a
1
n
a
21
a
22
⋯
a
2
j
⋯
a
2
n
⋮
⋮
⋮
⋮
a
i
1
a
i
2
⋯
a
i
j
⋯
a
i
n
⋮
⋮
⋮
⋮
a
n
1
a
n
2
⋯
a
n
j
⋯
a
n
n
]
\boldsymbol{A}=\left[\begin{array}{llllll} a_{11} & a_{12} & \cdots & a_{1 j} & \cdots & a_{1 n} \\ a_{21} & a_{22} & \cdots & a_{2 j} & \cdots & a_{2 n} \\ \vdots & \vdots & & \vdots & & \vdots \\ a_{i 1} & a_{i 2} & \cdots & a_{i j} & \cdots & a_{i n} \\ \vdots & \vdots & & \vdots & & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n j} & \cdots & a_{n n} \end{array}\right]
A=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡a11a21⋮ai1⋮an1a12a22⋮ai2⋮an2⋯⋯⋯⋯a1ja2j⋮aij⋮anj⋯⋯⋯⋯a1na2n⋮ain⋮ann⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤
我们知道旋转变换矩阵是这样的:
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
\left[\begin{array}{cc} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{array}\right]
[cosθsinθ−sinθcosθ]
我们想要对对角化 A,但这里就四个元素,如果我们要构造一个更大的旋转矩阵
P
\boldsymbol{P}
P 去对
A
\boldsymbol{A}
A
作一些处理,我们想要也只能让
P
\boldsymbol{P}
P 或
P
\boldsymbol{P}
P 的转置一次对两列或者两行作一个旋转变换,而不 去影响其他其他行或列,然后我们就可以构造这么一个矩阵了,即:
除对角线外没写的元素都是 0.这就是我想要的一个平面旋转矩阵了,令
P
i
i
=
cos
θ
,
P
j
j
=
cos
θ
,
P
i
j
=
−
sin
θ
,
P
j
i
=
sin
θ
\boldsymbol{P}_{i i}=\cos \theta, \boldsymbol{P}_{j j}=\cos \theta, \boldsymbol{P}_{i j}=-\sin \theta, \boldsymbol{P}_{j i}=\sin \theta
Pii=cosθ,Pjj=cosθ,Pij=−sinθ,Pji=sinθ
那么
A
P
A P
AP 就只改变第
i
i
i 列和第
j
j
j 列的元素,类似的
P
T
A
P^{T} A
PTA 就只改变第
i
i
i 行和第
i
i
i 列元素, 针对
AP 我们就能得到下面这些式子:
{
a
i
i
′
=
a
i
i
cos
θ
+
a
i
j
sin
θ
a
i
j
′
=
−
a
i
i
sin
θ
+
a
i
j
cos
θ
a
j
i
′
=
a
j
i
cos
θ
+
a
i
j
sin
θ
a
j
j
′
=
−
a
j
i
sin
θ
+
a
i
j
cos
θ
第i列和第j列的其他元素也发生了改变
\left\{\begin{array}{l} a_{i i}^{\prime}=a_{i i} \cos \theta+a_{i j} \sin \theta \\ a_{i j}^{\prime}=-a_{i i} \sin \theta+a_{i j} \cos \theta \\ a_{j i}^{\prime}=a_{j i} \cos \theta+a_{i j} \sin \theta \\ a_{j j}^{\prime}=-a_{j i} \sin \theta+a_{i j} \cos \theta \\ \text { 第i列和第j列的其他元素也发生了改变 } \end{array}\right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧aii′=aiicosθ+aijsinθaij′=−aiisinθ+aijcosθaji′=ajicosθ+aijsinθajj′=−ajisinθ+aijcosθ 第i列和第j列的其他元素也发生了改变
其他列未发生变化,如果再左乘一个
P
T
P^{T}
PT 会得到
{
a
i
i
′
′
=
a
i
i
′
cos
θ
+
a
j
i
′
sin
θ
a
i
j
′
′
=
a
i
j
′
sin
θ
+
a
i
j
′
cos
θ
\left\{\begin{array}{l}a_{i i}^{\prime \prime}=a_{i i}^{\prime} \cos \theta+a_{j i}^{\prime} \sin \theta \\ a_{i j}^{\prime \prime}=a_{i j}^{\prime} \sin \theta+a_{i j}^{\prime} \cos \theta\end{array}\right.
{aii′′=aii′cosθ+aji′sinθaij′′=aij′sinθ+aij′cosθ
{
a
j
i
′
′
=
a
j
i
′
cos
θ
−
a
i
i
′
sin
θ
a
i
j
′
′
=
−
a
i
j
′
sin
θ
+
a
j
j
′
cos
θ
第i行和第j行的其他元素也发生了改变
\left\{\begin{array}{l}a_{j i}^{\prime \prime}=a_{j i}^{\prime} \cos \theta-a_{i i}^{\prime} \sin \theta \\ a_{i j}^{\prime \prime}=-a_{i j}^{\prime} \sin \theta+a_{j j}^{\prime} \cos \theta \\ \text { 第i行和第j行的其他元素也发生了改变 }\end{array}\right.
⎩⎨⎧aji′′=aji′cosθ−aii′sinθaij′′=−aij′sinθ+ajj′cosθ 第i行和第j行的其他元素也发生了改变
最终得到 :
{
a
i
i
′
′
=
a
i
i
cos
2
θ
+
a
j
sin
2
θ
+
a
i
j
sin
2
θ
a
i
j
′
′
=
1
2
(
a
j
−
a
i
i
)
sin
2
θ
+
a
j
cos
2
θ
a
j
i
′
′
=
1
2
(
a
j
j
−
a
i
i
)
sin
2
θ
+
a
j
cos
2
θ
a
j
j
′
′
=
a
i
i
sin
2
θ
−
a
i
j
sin
2
θ
+
a
j
cos
2
θ
第i行和第j行以及第i列和第j列的其他元素也发生了改变
\left\{\begin{array}{l}a_{i i}^{\prime \prime}=a_{i i} \cos ^{2} \theta+a_{j} \sin 2 \theta+a_{i j} \sin ^{2} \theta \\ a_{i j}^{\prime \prime}=\frac{1}{2}\left(a_{j}-a_{i i}\right) \sin 2 \theta+a_{j} \cos 2 \theta \\ a_{j i}^{\prime \prime}=\frac{1}{2}\left(a_{j j}-a_{i i}\right) \sin 2 \theta+a_{j} \cos 2 \theta \\ a_{j j}^{\prime \prime}=a_{i i} \sin ^{2} \theta-a_{i j} \sin 2 \theta+a_{j} \cos ^{2} \theta \\ \text { 第i行和第j行以及第i列和第j列的其他元素也发生了改变 }\end{array}\right.
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧aii′′=aiicos2θ+ajsin2θ+aijsin2θaij′′=21(aj−aii)sin2θ+ajcos2θaji′′=21(ajj−aii)sin2θ+ajcos2θajj′′=aiisin2θ−aijsin2θ+ajcos2θ 第i行和第j行以及第i列和第j列的其他元素也发生了改变
令
a
i
j
′
′
=
a
j
i
′
′
=
0
,
a_{i j}^{\prime \prime}=a_{j i}^{\prime \prime}=0,
aij′′=aji′′=0, 有
tan
2
θ
=
2
a
i
j
a
i
t
−
a
j
,
\tan 2 \theta=\frac{2 a_{i j}}{a_{i t}-a_{j}},
tan2θ=ait−aj2aij, 若
a
i
i
=
a
j
j
a_{i i}=a_{j j}
aii=ajj 则
θ
=
π
4
,
\theta=\frac{\pi}{4},
θ=4π, 从而将两个非对角元素化为
0
,
0,
0, 但四个元素的平方和始终没变,这意味着对角线上的元素在上面的条件下就会变大,从而达成对角化,这就是雅克比方法了。 雅克比方法每次使两列和两行的元素主要集中在两个对角线上的元素上,不断选择不同 的两列 (其实也选择了不同的两行 ) 进行上述的这种对角化,最终使得实对称矩阵得以对角化。本次主要描述雅克比方法,有关雅可比矩阵和雅克比行列式以后用到了再进行补充。
如有不当指出,还请指正!