在测量平差中,我们知道平差的准则是 V T P T = m i n V^TPT=min VTPT=min,间接平差中,我们的目标依然是 V T P T = m i n V^TPT=min VTPT=min,但在附有限制条件的间接平差中,我们的目标却是 V T P V + 2 K s T ( C x ^ − W x ) = m i n V^TPV+2K_s^T(C\hat{x}−W_x)=min VTPV+2KsT(Cx^−Wx)=min。那么这个后面加上的 2 K s T ( C x ^ − W x ) 2K_s^T(C\hat{x}−W_x) 2KsT(Cx^−Wx)是什么呢?为什么要加上呢。这就要从说起拉格朗日乘数法
先举个例子
已知 4 x 2 + y 2 + x y = 1 4x^2+y^2+xy=1 4x2+y2+xy=1,求 2 x + y 2x+y 2x+y的最大值
这就是一个求极值的问题,但是是在某一个条件下。我们最容易想到的是换元法、消元法等。但在这里我们就可以用到一个新的方法——拉格朗日乘数法
先就这个问题来看,
f
(
x
)
=
2
x
+
y
f(x)=2x+y
f(x)=2x+y是我们的目标函数,
g
(
x
)
=
4
x
2
+
y
2
+
x
y
−
1
=
0
g(x)=4x^2+y^2+xy-1=0
g(x)=4x2+y2+xy−1=0是我们的条件函数,那么我们就可以构造拉格朗日函数
L
(
x
,
y
,
λ
)
=
f
(
x
,
y
)
+
λ
g
(
x
,
y
)
L(x,y,λ)=f(x,y)+λg(x,y)
L(x,y,λ)=f(x,y)+λg(x,y)
=
2
x
+
y
+
λ
(
4
x
2
+
y
2
+
x
y
−
1
)
\qquad\qquad\ =2x+y+λ(4x^2+y^2+xy-1)
=2x+y+λ(4x2+y2+xy−1)
由于 g ( x ) = 0 g(x)=0 g(x)=0,所以 L ( x , y , λ ) L(x,y,λ) L(x,y,λ)和 f ( x , y ) f(x,y) f(x,y)就是一样的,求 f ( x , y ) f(x,y) f(x,y)的最大值,就是求 L ( x , y , λ ) L(x,y,λ) L(x,y,λ)的最大值
在没有条件的求极值的时候,通常是对每个变量求偏导,然后使得每个偏导同时为零,得到驻点,再进行判断。这里的 L ( x , y , λ ) L(x,y,λ) L(x,y,λ)已经算一个没有约束的目标了,所以对各个变量求偏导并使其为零
L
x
′
(
x
,
y
,
λ
)
=
f
x
′
(
x
,
y
)
+
λ
g
x
′
(
x
,
y
)
⋅
⋅
⋅
①
L'_x(x,y,λ)=f'_x(x,y)+λg'_x(x,y)···①
Lx′(x,y,λ)=fx′(x,y)+λgx′(x,y)⋅⋅⋅①
L
y
′
(
x
,
y
,
λ
)
=
f
y
′
(
x
,
y
)
+
λ
g
y
′
(
x
,
y
)
⋅
⋅
⋅
②
L'_y(x,y,λ)=f'_y(x,y)+λg'_y(x,y)···②
Ly′(x,y,λ)=fy′(x,y)+λgy′(x,y)⋅⋅⋅②
L
λ
′
(
x
,
y
,
λ
)
=
g
(
x
,
y
)
=
0
⋅
⋅
⋅
③
L'_λ(x,y,λ)=g(x,y)=0···③
Lλ′(x,y,λ)=g(x,y)=0⋅⋅⋅③
由①②得到④
f
x
′
(
x
,
y
)
g
x
′
(
x
,
y
)
=
f
y
′
(
x
,
y
)
g
y
′
(
x
,
y
)
⋅
⋅
⋅
④
\frac{f'_x(x,y)}{g'_x(x,y)}=\frac{f'_y(x,y)}{g'_y(x,y)}···④
gx′(x,y)fx′(x,y)=gy′(x,y)fy′(x,y)⋅⋅⋅④
计算得到
y
=
2
x
y=2x
y=2x,代入③中得到
x
=
±
10
10
,
y
=
±
10
5
x=±\frac{\sqrt{10}}{10},y=±\frac{\sqrt{10}}{5}
x=±1010,y=±510,所以
f
(
x
)
m
a
x
=
2
10
5
f(x)_{max}=\frac{2\sqrt{10}}{5}
f(x)max=5210
现在我们解决了这个题,我们就可以回到开头,回答间接平差的目标是 V T P V = m i n V^TPV=min VTPV=min,而附有参数的间接平差的目标是 V T P V + 2 K s T ( C x ^ − W x ) = m i n V^TPV+2K_s^T(C\hat{x}−W_x)=min VTPV+2KsT(Cx^−Wx)=min。我们看看附有参数的间接平差的基础方程
v
=
B
x
^
−
l
误
差
方
程
v = B\hat{x} - l {\qquad\qquad误差方程}
v=Bx^−l误差方程
C
x
^
−
W
x
=
0
条
件
方
程
C\hat{x} - W_x = 0 {\qquad\ \ \ \ 条件方程}
Cx^−Wx=0 条件方程
根据误差方程我们知道
V
T
P
V
=
m
i
n
V^TPV=min
VTPV=min,也就是上面的目标函数
f
(
x
)
f(x)
f(x),而这里的条件方程
x
^
−
W
x
=
0
\hat{x}-W_x=0
x^−Wx=0就是间接平差的约束条件,也就是上面的条件函数
g
(
x
)
g(x)
g(x),那么就有
L
(
x
,
y
,
λ
)
=
f
(
x
)
+
λ
g
(
x
)
=
V
T
P
V
+
λ
(
C
x
^
−
W
x
)
L(x,y,λ)=f(x)+λg(x)=V^TPV+λ(C\hat{x}−W_x)
L(x,y,λ)=f(x)+λg(x)=VTPV+λ(Cx^−Wx)
这里的
λ
λ
λ换成
2
K
s
T
2K_s^T
2KsT,就得到了
L
(
x
,
y
,
λ
)
=
f
(
x
)
+
λ
g
(
x
)
=
V
T
P
V
+
2
K
s
T
(
C
x
^
−
W
x
)
L(x,y,λ)=f(x)+λg(x)=V^TPV+2K_s^T(C\hat{x}−W_x)
L(x,y,λ)=f(x)+λg(x)=VTPV+2KsT(Cx^−Wx)
式中
K
s
T
K^T_s
KsT是拉格朗日乘子,前面系数
2
2
2是为了让结果更简洁
现在我们知道了怎么用拉格朗日乘数法计算条件极值的问题。注意拉格朗日乘数法得到的结果是可能的极值点(偏导存在的极值点),是极大值极小值或者没有极值的情况,需要根据题目和函数判断
那么为什么这样可以得到约束下的极值。下面的图中蓝色的虚线是
f
(
x
,
y
)
=
p
f(x,y)=p
f(x,y)=p的图像,红色的是约束条件
g
(
x
)
g(x)
g(x)的图像
(图源:https://en.wikipedia.org/wiki/Lagrange_multiplier)
如我们要在图中找到一个极值,也就是这个 d 1 d_1 d1,我们可以发现 f ( x ) f(x) f(x)和 g ( x ) g(x) g(x)相切了。如果蓝色的圈还小于 d 1 d_1 d1,则根本没有满足约束条件 g ( x ) g(x) g(x),而当在 d 2 d_2 d2或 d 3 d_3 d3位置时如果是极值,那么沿着红线移动又会与其他的 d i d_i di相交,所以 d 2 d_2 d2或 d 3 d_3 d3一定不是极值点。所以就得到了极值点 f ( x ) f(x) f(x)和 g ( x ) g(x) g(x)相切。就意味着两个函数的法线在切点重合,也就是两个函数的法向量相差一个系数 λ λ λ,就得到 ( f x ′ , f y ′ ) = λ ( g x ′ , g y ′ ) (f'_x,f'_y)=λ(g'_x,g'_y) (fx′,fy′)=λ(gx′,gy′),也就是拉格朗日乘数法的几何上的理解
拉格朗日乘数法的推广
目标函数:
f
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
f(x_1,x_2,x_3···x_n)
f(x1,x2,x3⋅⋅⋅xn)
约束条件:
g
1
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
g_1(x_1,x_2,x_3···x_n)
g1(x1,x2,x3⋅⋅⋅xn)
g
2
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
g_2(x_1,x_2,x_3···x_n)
g2(x1,x2,x3⋅⋅⋅xn)
⋅
⋅
⋅
···
⋅⋅⋅
g
n
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
g_n(x_1,x_2,x_3···x_n)
gn(x1,x2,x3⋅⋅⋅xn)
拉格朗日函数:
L
(
x
,
y
,
λ
)
=
f
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
+
λ
1
g
1
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
+
λ
2
g
2
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
+
⋅
⋅
⋅
+
λ
n
g
n
(
x
1
,
x
2
,
x
3
⋅
⋅
⋅
x
n
)
L(x,y,λ)=f(x_1,x_2,x_3···x_n)+λ_1g_1(x_1,x_2,x_3···x_n)+λ_2g_2(x_1,x_2,x_3···x_n)+···+λ_ng_n(x_1,x_2,x_3···x_n)
L(x,y,λ)=f(x1,x2,x3⋅⋅⋅xn)+λ1g1(x1,x2,x3⋅⋅⋅xn)+λ2g2(x1,x2,x3⋅⋅⋅xn)+⋅⋅⋅+λngn(x1,x2,x3⋅⋅⋅xn)
令以下式子为零:
L
x
1
′
=
0
L'_{x_1}=0
Lx1′=0
L
x
2
′
=
0
L'_{x_2}=0
Lx2′=0
⋅
⋅
⋅
···
⋅⋅⋅
L
x
n
′
=
0
L'_{x_n}=0
Lxn′=0
L
λ
1
′
=
0
L'_{λ_1}=0
Lλ1′=0
L
λ
2
′
=
0
L'_{λ_2}=0
Lλ2′=0
⋅
⋅
⋅
···
⋅⋅⋅
L
λ
n
′
=
0
L'_{λ_n}=0
Lλn′=0
则满足的点就可能是极值点
参考:
https://zhuanlan.zhihu.com/p/38625079
https://liam.page/2018/10/12/Lagrange-Multiplier-Method/