附有限制条件的间接平差
(46条消息) 如何理解附有限制条件的间接平差_欧阳罢笔的博客-CSDN博客_附有限制条件的间接平差
在间接平差中我们,我们由正规方程使平差准则V T P V = m i n,也就像线性回归中我们使用梯度下降找到了J的最小值,这些问题都可以简单看成在下面的图形中找到最低点,无论是正规方程还是梯度下降,都是力求导数趋近于零,此时对应的点就是最低点。
而在附有限制条件的间接平差中,我们可以理解为依然要找到这个图形的最低点,只不过我们必须在要某个条件中,比如图中的平面。这时平面和曲面有一条交线,我们就需要在这条交线上寻找最低点,这里也就是左下角的点。这就是添加了限制条件的间接平差
对间接平差附加了限制条件,就使它的收敛过程完全按照某一规范进行,这可以使得拟合的过程非常规范,但是会影响收敛速度。在优化中有无约束、线性约束和非线性约束三种优化,无约束最简单,只需要求导并令其等于零即可;在有等式约束时使用拉格朗日乘子法;在有不等约束时需要使用KKT条件。附有限制条件的间接平差就是在间接平差的基础上利用拉格朗日乘子法,关于拉格朗日乘子和KKT可以参考这篇博客。下面我们还是由一道简单的题说起
如题
首先我们肯定能想到,从A点出发,又回到A点,高程一定没有改变。可是这里呢,h = L 1 + L 2 + L 3 = − 0.006,就不对了吧,就要把这个跟0不符合的值平差掉才行。这里给了
三个未知数,所以未知数个数u = 3。由于只要知道了任意两个两点间的高差,就可以算出第三个两点之间的高差,所以必要观测数t = 2。这里我们发现未知数个数比必要观测数还多了,所以就必须设定s = u − t = 1个限制的条件才行,就不像间接平差中的必要观测数等于未知数个数。现在我们让
我们按照间接平差的要求列误差方程
计算一下
BTPB = np.array([[1,0,0,1],[0,1,0,1],[0,0,1,1],[1,1,1,0]]) x_ks = np.zeros((4,1)) BTPl_Wx = np.array([[0],[0],[0],[6]]) x_ks = np.dot(np.linalg.inv(BTPB), BTPl_Wx) print(x_ks)
[[ 2.]
[ 2.]
[ 2.]
[-2.]]