多个变量的函数
- 比如, w = f ( x , y ) w=f(x,y) w=f(x,y)是三维空间中的曲面, w = f ( x , y , z ) w=f(x,y,z) w=f(x,y,z)是四维空间中的曲面.
- 对于定义域是平面的函数 f ( x , y ) f(x,y) f(x,y), 我们定义 等高线(level curve, contour curve) f ( x , y ) = k f(x,y)=k f(x,y)=k 为二维曲线, 可以由 w = k w=k w=k 得到, 其中 k k k 是一个常数.
- 对于定义域是三维的函数 f ( x , y , z ) f(x,y,z) f(x,y,z), 我们相应的可以定义 等高面(level surfaces) f ( x , y , z ) = k f(x,y,z)=k f(x,y,z)=k.
- 等高线是 z = f ( x , y ) z=f(x,y) z=f(x,y)和 z = k z=k z=k两个曲面的交叉, 另一个定义traces是 z = f ( x , y ) z=f(x,y) z=f(x,y)与 x = k x=k x=k 或 y = k y=k y=k的交叉.
See https://tutorial.math.lamar.edu/classes/calciii/MultiVrbleFcns.aspx#LevelCurve example 4 for more visual illustrations.
偏导数
偏导数的定义很简单,比如说对于一个函数
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
f(x_1,x_2,...,x_n)
f(x1,x2,...,xn),
f
f
f 对
x
i
x_i
xi 的偏导即为
∂
f
∂
x
i
=
lim
α
→
0
f
(
x
1
,
x
2
,
.
.
.
,
x
i
+
α
,
.
.
.
,
x
n
)
−
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
α
\frac{\partial f}{\partial x_i}=\lim_{\alpha\rightarrow 0}\frac{f(x_1,x_2, ..., x_i+\alpha,...,x_n)-f(x_1,x_2,...,x_n)}{\alpha}
∂xi∂f=α→0limαf(x1,x2,...,xi+α,...,xn)−f(x1,x2,...,xn)
即,当沿着
[
0
,
.
.
.
,
α
,
.
.
.
,
0
]
[0,...,\alpha,...,0]
[0,...,α,...,0]的方向移动时,
f
f
f的变化快慢. 注意对于偏导数而言, 方向固定为
[
0
,
.
.
.
,
α
,
.
.
.
,
0
]
[0,...,\alpha,...,0]
[0,...,α,...,0]这是在
R
n
\mathbb{R}^n
Rn中移动的. 如果
n
=
2
n=2
n=2,那实际上方向是二维的,就只在水平面上移动, 这个偏导数的大小就是沿着给定方向变化的快慢.
方向导数
那么如果我们想看 f f f沿着 R n \mathbb{R}^n Rn任一方向的变化快慢 (而不仅仅是bases的方向), 就得用到方向导数了. 定义如下:
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
f(x_1,x_2,...,x_n)
f(x1,x2,...,xn) 沿着方向
t
=
(
t
1
,
t
2
,
.
.
.
,
t
n
)
⊤
\bm{t}=(t_1,t_2,...,t_n)^\top
t=(t1,t2,...,tn)⊤ (通常
t
\bm{t}
t模长为1) 的方向导数为
D
t
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
lim
α
→
0
f
(
x
1
+
t
1
α
,
x
2
+
t
2
α
,
.
.
.
,
x
n
+
t
n
α
)
−
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
α
D_\bm{t} f(x_1,x_2,...,x_n)=\lim_{\alpha\rightarrow 0}\frac{f(x_1+t_1\alpha,x_2+t_2\alpha, ...,x_n+t_n\alpha)-f(x_1,x_2,...,x_n)}{\alpha}
Dtf(x1,x2,...,xn)=α→0limαf(x1+t1α,x2+t2α,...,xn+tnα)−f(x1,x2,...,xn)
=
∂
f
∂
x
1
t
1
+
∂
f
∂
x
2
t
2
+
.
.
.
+
∂
f
∂
x
n
t
n
=\frac{\partial f}{\partial x_1}t_1+\frac{\partial f}{\partial x_2}t_2+...+\frac{\partial f}{\partial x_n}t_n
=∂x1∂ft1+∂x2∂ft2+...+∂xn∂ftn
定义gradient
∇
f
=
[
∂
f
∂
x
1
,
∂
f
∂
x
2
,
.
.
.
,
∂
f
∂
x
n
]
⊤
\nabla f=\left[\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, ...,\frac{\partial f}{\partial x_n}\right]^\top
∇f=[∂x1∂f,∂x2∂f,...,∂xn∂f]⊤
f
(
x
)
f(\bm{x})
f(x)沿着
t
\bm{t}
t 的方向导数可以更简洁的写为
D
t
f
(
x
)
=
(
∇
f
)
⊤
⋅
t
D_t f(\bm{x})=(\nabla f)^\top \cdot \bm{t}
Dtf(x)=(∇f)⊤⋅t
where
x
,
t
∈
R
n
\bm{x}, \bm{t}\ \in\mathbb{R}^n
x,t ∈Rn.
注意:梯度gradient是一个方向(且只在 R n \mathbb{R}^n Rn上), 方向导数则是一个数(沿着某一方向的变化率).
- 当
t
\bm{t}
t和
∇
f
\nabla f
∇f同向时,方向导数最大, 函数上升速度最快; 反向时,方向导数最小(负的),
函数下降速度最快. - 对于
f
(
x
1
,
x
2
,
.
.
,
x
n
)
f(x_1,x_2,..,x_n)
f(x1,x2,..,xn), 它在
t
=
(
t
1
,
t
2
,
.
.
.
,
t
n
)
\bm{t}=(t_1,t_2,...,t_n)
t=(t1,t2,...,tn)处的梯度与等高面
f
(
x
1
,
x
2
,
.
.
,
x
n
)
=
k
f(x_1,x_2,..,x_n)=k
f(x1,x2,..,xn)=k正交,
其中 f ( x 1 , x 2 , . . , x n ) = k f(x_1,x_2,..,x_n)=k f(x1,x2,..,xn)=k经过 t \bm{t} t.
=> 令等高面为 S \mathcal{S} S, t \bm{t} t在 S \mathcal{S} S上, 且 S \mathcal{S} S上的任意一条经过 t \bm{t} t的curve都与 ∇ f ( x 1 , x 2 , . . , x n ) \nabla f(x_1,x_2,..,x_n) ∇f(x1,x2,..,xn) 正交
曲面的两种写法
好,最后我们来看看高维曲面的切平面和法向量.
首先, 我们知道一个曲面有两种写法
[第一种写法]
z
=
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
z=f(x_1,x_2,...,x_n)
z=f(x1,x2,...,xn)
第一种写法表示
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn) 的定义域在一个
n
n
n 维空间中, 自变量只能在这个空间中到处跑然后
z
z
z取得不同的值. 所以当我们算任意一点的 gradient 时 – 这里的任意一点指的是
(
x
1
,
x
2
,
.
.
.
,
x
n
)
(x_1,x_2,...,x_n)
(x1,x2,...,xn), 一般是optimization 问题的定义域
∇
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
[
∂
f
∂
x
1
,
∂
f
∂
x
2
,
⋯
,
∂
f
∂
x
n
]
⊤
\nabla f(x_1,x_2,...,x_n)=\left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2} , \cdots, \frac{\partial f}{\partial x_n} \right]^\top
∇f(x1,x2,...,xn)=[∂x1∂f,∂x2∂f,⋯,∂xn∂f]⊤
他表示的是一个 n n n维空间的向量, 在任意一点都指示着接下来往哪走是函数上升最快的方向.
[第二种写法]
F ( x 1 , x 2 , . . . , x n , z ) = f ( x 1 , x 2 , . . . , x n ) − z = 0 F(x_1,x_2,...,x_n,z)=f(x_1,x_2,...,x_n)-z=0 F(x1,x2,...,xn,z)=f(x1,x2,...,xn)−z=0
不同于第一种写法,这种写法是将 f ( x 1 , x 2 , . . . , x n ) f(x_1,x_2,...,x_n) f(x1,x2,...,xn) 描述为 一个 n + 1 n+1 n+1 维空间中一个图形 F ( x 1 , x 2 , . . . , x n , z ) F(x_1,x_2,...,x_n,z) F(x1,x2,...,xn,z) 的一个截面: 若令 w = F ( x 1 , x 2 , . . . , x n , z ) w=F(x_1,x_2,...,x_n,z) w=F(x1,x2,...,xn,z), 那么 f ( x 1 , x 2 , . . . , x n ) f(x_1,x_2,...,x_n) f(x1,x2,...,xn) 是 w = F ( x 1 , x 2 , . . . , x n , z ) w= F(x_1,x_2,...,x_n,z) w=F(x1,x2,...,xn,z) 和 w = 0 w=0 w=0 的截面.
若对
F
F
F 求gradient, 那么这个 gradient 实际上是一个
n
+
1
n+1
n+1 维的向量 – “任意一点的梯度” 这句话中的任意一点是
(
x
1
,
x
2
,
.
.
.
,
x
n
,
z
)
(x_1,x_2,...,x_n,z)
(x1,x2,...,xn,z)
∇
F
(
x
1
,
x
2
,
.
.
.
,
x
n
,
z
)
=
[
∂
F
∂
x
1
,
∂
F
∂
x
2
,
⋯
,
∂
F
∂
x
n
,
∂
F
∂
z
]
⊤
\nabla F(x_1,x_2,...,x_n,z)=\left[ \frac{\partial F}{\partial x_1},\frac{\partial F}{\partial x_2} , \cdots, \frac{\partial F}{\partial x_n}, \frac{\partial F}{\partial z} \right]^\top
∇F(x1,x2,...,xn,z)=[∂x1∂F,∂x2∂F,⋯,∂xn∂F,∂z∂F]⊤
= [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯ , ∂ f ∂ x n , − 1 ] ⊤ = \left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2} , \cdots, \frac{\partial f}{\partial x_n}, -1 \right]^\top =[∂x1∂f,∂x2∂f,⋯,∂xn∂f,−1]⊤
注意,这个梯度的前 n n n 项与 第一种写法下的梯度 ∇ f ( x 1 , x 2 , . . . , x n ) \nabla f(x_1,x_2,...,x_n) ∇f(x1,x2,...,xn) 是完全一致的, 是同一个方向, 因此,
- ∇ f ( x 1 , x 2 , . . . , x n ) \nabla f(x_1,x_2,...,x_n) ∇f(x1,x2,...,xn)是 ∇ F ( x 1 , x 2 , . . . , x n , z ) \nabla F(x_1,x_2,...,x_n,z) ∇F(x1,x2,...,xn,z) 在 R n \mathbb{R}^n Rn 上的投影
切平面, 法向量, 法线
现在让我们想想, 对于 f f f上任意一点 ( t 1 , t 2 , . . . , t n , t z ) (t_1,t_2,...,t_n, t_z) (t1,t2,...,tn,tz), where t z = f ( t 1 , t 2 , . . . , t n ) t_z=f(t_1,t_2,...,t_n) tz=f(t1,t2,...,tn), 我们怎么写出它的切平面 tangent (hyper) plane) 和 法线 normal line. 显然, 如果我们用第一种写法, 是得不到的因为他只限于 n n n 维空间. 而切平面 和 法线 实际上都是 n + 1 n+1 n+1 维空间的. 所以我们采用第二种写法.
已知:
- 曲面上任意一点的 gradient 与 该surface垂直. 所以这个gradient是法向量.
=> 这个可以由上一节最后的结论推出: n + 1 n+1 n+1 维函数 F F F 令 k = 0 k=0 k=0. - 曲面上任意一点的切平面由 所有与法向量垂直的高维直线 构成.
则有: 切平面
[
∇
F
(
x
,
z
)
]
⊤
[
x
1
−
t
1
,
x
2
−
t
2
,
.
.
.
,
x
n
−
t
n
,
z
−
t
z
]
⊤
=
0
\left[\nabla F(\bm{x},z)\right]^\top [x_1-t_1,x_2-t_2,...,x_n-t_n, z-t_z]^\top= 0
[∇F(x,z)]⊤[x1−t1,x2−t2,...,xn−tn,z−tz]⊤=0
[ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ⋯ , ∂ f ∂ x n , − 1 ] [ x 1 − t 1 , x 2 − t 2 , . . . , x n − t n , z − t z ] ⊤ = 0 \left[ \frac{\partial f}{\partial x_1},\frac{\partial f}{\partial x_2} , \cdots, \frac{\partial f}{\partial x_n}, -1 \right] [x_1-t_1,x_2-t_2,...,x_n-t_n, z-t_z]^\top=0 [∂x1∂f,∂x2∂f,⋯,∂xn∂f,−1][x1−t1,x2−t2,...,xn−tn,z−tz]⊤=0
从这个式子中,我们也能得到第一种表达方式下的切平面方程. Let x = ( x 1 , x 2 , . . . , x n , z ) ⊤ \bm{x} = (x_1,x_2,...,x_n, z)^\top x=(x1,x2,...,xn,z)⊤, t = ( t 1 , t 2 , . . . , t n , t z ) ⊤ \bm{t} = (t_1,t_2,...,t_n, t_z)^\top t=(t1,t2,...,tn,tz)⊤,
[ ∇ f ( x 1 , x 2 , . . . , x n ) ] ⊤ ( x − t ) + f ( t 1 , t 2 , . . . , t n ) = z [\nabla f(x_1,x_2,...,x_n) ]^\top (\bm{x}-\bm{t}) + f(t_1,t_2,...,t_n) = z [∇f(x1,x2,...,xn)]⊤(x−t)+f(t1,t2,...,tn)=z
最后我们来求法线. 已知,
- 法向量是 ∇ F ( x 1 , x 2 , . . . , x n , z ) \nabla F(x_1,x_2,...,x_n,z) ∇F(x1,x2,...,xn,z)
- 法线过点 ( t 1 , t 2 , . . . , t n , t z ) (t_1,t_2,...,t_n, t_z) (t1,t2,...,tn,tz)
hyperplane中的一条线可以用参数方程表示: 任意一个向量, 比如 ∇ F ( x 1 , x 2 , . . . , x n , z ) \nabla F(x_1,x_2,...,x_n,z) ∇F(x1,x2,...,xn,z), scale之后可以用来表示穿过原点的一条直线上的所有点, 若我们在这个向量上再加一个vector,就可以让他平行的移动了. 所以, 法线的参数方程为
( t 1 , t 2 , . . . , t n , t z ) + t ∇ F ( x 1 , x 2 , . . . , x n , z ) (t_1,t_2,...,t_n, t_z)+t\nabla F(x_1,x_2,...,x_n,z) (t1,t2,...,tn,tz)+t∇F(x1,x2,...,xn,z)
Reference:
https://tutorial.math.lamar.edu/classes/calciii/DirectionalDeriv.aspx#Gradient_Defn
https://tutorial.math.lamar.edu/classes/calciii/gradientvectortangentplane.aspx