1. 从“分闭合差”到“掌控误差”:笔记十为什么要讲这三件事
误差理论与测量平差这门课,学到第九讲,很多人会觉得“天亮了”:参数平差会列法方程了,条件平差会处理闭合差了,好像测量平差也就是把一个超定方程组用最小二乘解出来。但真拿着第八、九讲的方法去做生产项目,马上就会撞上三堵墙:第一堵是控制网没有稳定基准,法方程矩阵直接奇异;第二堵是观测数据分批次进场,每次都全盘重算又慢又容易出错;第三堵是算完了一堆坐标中误差,业主却要一张“点位可能落在哪个范围”的图。这三件事,就是笔记十的核心内容:秩亏自由网平差、逐次平差(序贯平差)、误差椭圆。
1.1 前九讲的脉络,一张表说清楚
在展开笔记十之前,先把前九讲的脉络收拢一下。这不是重复,而是因为秩亏、逐次、误差椭圆三件事全都建立在这个脉络之上,缺一环后面都看不懂。
| 讲次范围 | 核心内容 | 工程上解决的问题 | 遗留问题 |
|---|---|---|---|
| 第一至三讲 | 观测误差来源、偶然误差四大特性、精度指标 | 知道观测值“可不可信” | 只有一堆误差指标,还没形成系统模型 |
| 第四至五讲 | 方差协方差传播律、协因数传播 | 由直接观测量的精度推算平差量的精度 | 不知道如何利用多余观测最优求解 |
| 第六讲 | 权与定权 | 不同类型、不同精度的观测怎么统一参与计算 | 有了权还缺求解框架 |
| 第七讲 | 间接平差(参数平差) | 选取独立参数,建立误差方程,求最小二乘解 | 必须要有足够已知基准,否则法方程满秩不了 |
| 第八至九讲 | 条件平差、闭合差分配 | 利用几何闭合条件,把闭合差合理分配到各观测值 | 参数不直观,且同样默认网形本身有基准 |
表格里最后两列其实就是一个信号:经典间接平差和条件平差都假设“网有一个稳定参考基准”。但现实工程里,很多时候这个假设并不成立。
1.2 秩亏、逐次、误差椭圆的内在联系
把这三件事放在同一讲,不是因为教材顺序恰好排到这里,而是因为它们都指向同一个数学对象:平差法方程和它的协方差阵。
秩亏自由网平差,本质是法方程矩阵 N 不满秩时,如何补上“基准条件”把它变成可解问题;逐次平差,本质是把法方程矩阵和常数项按观测批次分块,再用矩阵恒等式递推更新;误差椭圆,本质是对点位协方差阵做特征分解,把抽象的矩阵变成图形。三件事共享一套线性代数底子,分开讲容易,合在一起讲更有全局感。
另外还有一个实践层面的理由:这三个主题在变形监测里几乎总是同时出现。基坑、隧道、大坝、边坡监测网,往往没有稳定基准点,观测又是多期持续的,最终成果又要给误差椭圆。所以这一讲的内容,本质上就是“变形监测平差的三件套”。
2. 秩亏自由网平差:法方程矩阵奇异时,怎么把网平起来
2.1 一个让新手直接卡壳的场景
假设你在做某个基坑周边沉降监测,布了一条闭合水准网,网里有八个沉降观测点,没有联测到附近的稳定水准点。原因很现实:基坑周边本来就在变形,远处的稳定点要么被施工挡住,要么距离太远、联测效率太低。
这时候如果按照间接平差的思路,把所有八个点的高程都设成未知参数,列观测方程,你会发现法方程矩阵 N 是奇异的,求不出逆矩阵。很多刚入门的同学第一反应是“换个程序跑一下”,或者“随便挑一个点当已知点,高程设成0”。后者其实是个常见的临时处理,但它有一个严重后果:你最后算出来的高程改正数,取决于你“随便挑”的那个点,不同人挑不同点,结果不一致,点位之间的相对高差虽然一致,但每个点的绝对高程值整体平移了。
2.2 从法方程看“秩亏”的根源
用线性代数的语言说清楚这件事。水准网里,高差观测方程永远是“后视高程减前视高程”这种差值形式:
h_ij + v = H_j − H_i
如果所有 H 都是未知参数,那么把每个 H 同时加上同一个常数 c,右边差值不变,观测方程完全不变。这意味着参数向量多了一个“整体平移”的自由度,系数矩阵 A 的列向量线性相关,秩亏数为1。放到法方程 N = A^T P A 上,N 就有一个零特征值,不可逆。
推广到平面控制网也一样:如果没有足够的已知点,网的坐标参数可以在平面内整体平移、整体旋转而不改变任何观测值,秩亏数可以到3或者4。更一般地说,秩亏的数目等于网中“缺少的独立基准条件数”。高程网缺1个,测边测角网通常缺3个(两个平移、一个旋转),如果还缺尺度,就是4个。
2.3 附加基准条件的解法
解决思路不是“强行找一个点当已知点”,而是补上基准方程,让参数解唯一化。经典做法是附加重心基准条件。
对高程网,附加条件为:
Σ δH_i = 0
意思是所有高程改正数之和为零。从几何上看,就是让“网的重心”保持不变。对测边测角网,附加条件类似:
Σ δx_i = 0 Σ δy_i = 0 Σ (x_i^0 · δy_i − y_i^0 · δx_i) = 0
前两个是重心平移条件,第三个是重心旋转条件。把这些条件写成矩阵形式 S^T δx = 0,然后和原法方程组成增广方程:
[ N S ] [δx] [U] [ S^T 0 ] [k ] = [0]
这里 S 的列向量张成 N 的零空间。加入基准条件后,增广矩阵满秩,方程可解。这样解出来的结果,就是秩亏自由网平差的常用解,也叫最小范数解。它有一个好性质:在给定的基准条件下,参数改正数向量的范数最小。
实际操作中,还有一种等价的理解方式:先随便假定网内某个点坐标为已知值,做一次常规间接平差,得到一个解;然后把这个解整体平移(或平移加旋转),让整个网的“重心改正量”归零。这样得到的最终结果,和附加重心基准条件算出来的结果完全一致。这个方法特别适合手算验证,也适合写程序前先理解几何意义。
2.4 秩亏判断与基准选择的操作要点
做秩亏自由网平差,有几个判断点必须注意。
第一,怎么确认秩亏。最直接的方式是检查法方程矩阵的特征值。理论满秩特征值都应该大于零,如果有特征值接近机器精度甚至等于零,基本就可以判定是秩亏。如果特征值是正的但很小,那属于病态问题,不是秩亏,两者处理方式完全不同,这个坑后面第五部分还会细说。
第二,基准条件不是随便选的。重心基准是其中一种,变形监测里还有“拟稳基准”,也就是认为网中有一部分点是相对稳定的,基准条件只附加在这些稳定点上,让变形量主要反映在非稳定点上。选择哪种基准,要根据监测对象的实际位移模式决定,而不是程序默认什么就用什么。
第三,基准选择不影响观测值改正数,也不影响点与点之间的相对精度,只影响绝对位置参数。所以如果只是要分析“哪两个点相对高差变化了多少”,用哪种基准结果都一样;但如果你要画每个点的沉降趋势图,基准的选择就会直接影响图形形态,这时候务必在报告中写清楚用了什么基准。
3. 逐次平差:分批观测数据如何递推合并,不用重头再算
3.1 分期观测场景下的效率痛点
GPS控制网、地铁铺轨控制网、精密导线复测,这类测量作业有个共同特点:观测不是一次做完的。今天先测了五个点,明天又补测三个点,过两周又复测两个点。最笨的办法是每来一批数据,就把全部观测值重新整理一遍,做一次整体平差。数据量小的时候无所谓,数据量一大,反复组装矩阵、求逆、验算,效率非常低,而且容易在重复整理中篡改原始观测值。
逐次平差的核心思想是:把上一期已经求得的参数解和协方差阵保留下来,新一期观测值到达后,只用“新增观测”对老解做一次修正,得到的新解和把全部观测值放在一起整体平差的结果在数学上是严格等价的。
3.2 从整体法方程推导递推更新公式
用符号表示会更清楚。设第一期观测通过间接平差求得了参数 x1 和协方差阵 Q1,它们满足法方程:
N1 · x1 = U1
其中 N1 = A1^T P1 A1,U1 = A1^T P1 L1。第二期新增观测方程为:
A2 · x = L2 + v2
权阵为 P2。如果把两期数据合并做整体平差,新的法方程为:
(N1 + A2^T P2 A2) x2 = U1 + A2^T P2 L2
这个方程直接解当然可以,但 N1 的逆 Q1 我们已经算过了,没必要把 N1 重新组装进去再求一次逆。利用矩阵求逆恒等式,可以把逆矩阵拆成:
(N1 + A2^T P2 A2)^−1 = Q1 − Q1 A2^T (P2^−1 + A2 Q1 A2^T)^−1 A2 Q1
把这个式子代回到整体解里,经过整理就得到逐次平差的更新公式:
d = L2 − A2 x1
K = Q1 A2^T (P2^−1 + A2 Q1 A2^T)^−1
x2 = x1 + K d
Q2 = Q1 − K A2 Q1
这里 d 叫“新息”,也就是用上一期解出的参数去预测本期观测,预测值和实测值之间的差;K 叫增益阵,决定新息对参数修正的影响权重。从形式上看,它和卡尔曼滤波的更新方程几乎一模一样,这并不奇怪,逐次平差本质上就是静态平差问题里的递推滤波。
3.3 递推计算流程与工程伪代码
逐次平差的实际程序流程并不复杂,核心步骤如下:
- 读取上一期保留的参数 x1 和协方差阵 Q1,确认其来源合法。
- 组装本期新增观测的系数矩阵 A2、权阵 P2、观测向量 L2。
- 计算新息残差 d = L2 − A2 x1。
- 计算新息协方差阵 S = P2^−1 + A2 Q1 A2^T。
- 求增益阵 K = Q1 A2^T S^−1。
- 更新参数 x2 = x1 + K d。
- 更新协方差阵 Q2 = Q1 − K A2 Q1。
写成伪代码就是:
x = x1 Q = Q1 for 每一批观测: S = inv(P_new) + A_new * Q * A_new.T K = Q * A_new.T * inv(S) x = x + K * (L_new - A_new * x) Q = Q - K * A_new * Q这个写法对后续扩展成“有控制输入的动态平差”也很友好,做变形监测动态分析的时候,你会发现它几乎可以无缝衔接。
3.4 逐次平差的边界条件与注意事项
逐次平差虽然和整体平差数学等价,但有两个前提必须守住。
一是旧观测的权阵不能随意改动。如果因为某些原因,第一期观测的权重需要改变,比如原始观测精度被重新评估,那就没有捷径可走,必须撤回整体平差重算。递推公式里没有“修改旧权”这一项,硬改等于污染整个结果。
二是每次新观测应该和旧观测相互独立,至少协方差要能明确给定。如果新旧观测共享了系统误差,或者同一段观测值被连续重复使用,那新增信息量没有理论上那么大,逐次平差的修正幅度会被高估。
我在某地铁控制网复测项目里用过这套流程,第一期42个点,后面分批补测了3次,最后收敛结果和整体平差对比,坐标差都在0.1mm量级,这说明公式推导和程序实现都没问题。但递推过程里一旦发现新息残差异常大,不要继续往下走,先回头查原始观测值,因为新息很大往往意味着观测粗差,而不是简单的精度波动。
4. 误差椭圆与相对误差椭圆:把协方差矩阵变成看得见的图
4.1 点位协方差阵如何变成椭圆参数
平差算完,每个点会有一个平面坐标协方差阵:
D = [ σx² σxy ] [ σxy σy² ]
这个矩阵有两位信息,一是坐标分量的方差,二是XY方向的协方差。直接读数字很抽象,把矩阵做特征值分解后,可以得到两个特征值,对应误差椭圆的长半轴和短半轴,特征向量则说明长轴方向。
具体计算时,先算中间量:
K = √( (σx² − σy²)² + 4σxy² )
长半轴 E 和短半轴 F 分别为:
E² = (σx² + σy² + K) / 2 F² = (σx² + σy² − K) / 2
长轴方位角 θ0 用下式求:
tan(2θ0) = 2σxy / (σx² − σy²)
注意,极值方向有两个解,相差90度,取哪个要看特征向量对应关系,不能按计算器给的反正切糊糊涂涂就当长轴方向。
4.2 相对误差椭圆:两个点之间的位置不确定度
很多工程关心的是“两点相对位置”的精度。隧道相向开挖的贯通误差,桥梁主梁安装时两个支座的中心偏差,都是相对位置问题。
设两点 i、j 的坐标协方差阵分别为 D_i 和 D_j,两点的互协方差阵为 D_ij,那么相对坐标差 Δx = x_i − x_j 的协方差阵为:
D_Δ = D_i + D_j − D_ij − D_ji
如果两点来自同一次平差,互协方差通常不为零,一定不能省略。有的初学者图省事,只把 D_i 和 D_j 相加,结果相对误差椭圆经常偏大或偏小,结论完全失真。
求得 D_Δ 后,用同样方法计算长半轴、短半轴、方位角,画出来的就是两点间的相对误差椭圆。这个椭圆越小,说明两点相对位置越稳定,对需要精密对位的工程越有利。
4.3 置信水平选取:不要拿1倍中误差当包络线
误差椭圆严格来说有不同的置信水平。点位落入“一倍中误差椭圆”的概率只有约39%,很多人把它当成“点位肯定在里面”的边界,这是常见的误读。工程上常用95%置信椭圆,对应的放大倍数 k 约为2.447。也就是把长半轴和短半轴都乘以2.447,再画椭圆,点位落入这个椭圆的概率是95%。
放大倍数来源是自由度为2的卡方分布,95%分位数为5.991,开根号约2.447。如果项目要求99%置信水平,放大倍数是√9.21≈3.035。报告里画误差椭圆时,务必标注清楚用的是几倍中误差、对应多大置信概率,否则业主和审查方无法判断你的精度结论到底多激进。
4.4 绘图与判读的实操细节
画误差椭圆本身不难,难的是别在细节上出错。
一是比例尺。点位中误差通常只有毫米级,点位坐标可能是千米级,直接画图上椭圆会小成一个点。一般做法是只画椭圆,不画控制网点位,或者用一个单独的放大图框展示。比例尺要在图上写明,比如“误差椭圆比例尺为1mm=0.5mm中误差”。
二是长轴方向。长轴方向代表点位误差最大的空间方向,在布网阶段很有用:如果已知建筑物安装允许误差在某个方向最严格,就应当让误差椭圆长轴避开这个方向,这直接影响控制网的网形设计。
三是异常椭圆。如果某个点的误差椭圆特别扁,长短轴比超过3:1,通常说明这个点的观测条件有问题,比如交会图形过窄、边长比悬殊。此时不要急着画图交付,先检查网形和观测值,找出几何结构弱的点。
我在某大桥施工控制网的精度分析里,按95%置信椭圆出图后,发现有两对强制对中点的相对误差椭圆长轴方向刚好落在主梁横向限差方向上,后来调整了边角观测权重,把长轴方向扭转了约20度,才勉强满足安装要求。这种问题如果不画椭圆,光看中误差数字是完全发现不了的。
5. 平差生产中的三个“隐形坑”和排查思路
5.1 坑一:把“秩亏”当“病态”处理
判断秩亏和病态,看的是法方程矩阵特征值的分布。秩亏是特征值为零,病态是最小特征值远小于最大特征值但还不为零。
工程里常见的错误是,法方程解不出来或解出来数值震荡,就直接用岭估计叠加一个小对角阵,把 N 变成 N + λI 再解。这一招对病态问题有一定效果,但对秩亏问题完全错误,因为秩亏的本质是缺少基准条件,不是数值不稳定。你用岭估计硬解,得到的解隐含了一个人为选定的基准,而且这个基准往往没有几何意义,后续如果要做变形分析,结果会非常难解释。
正确做法是先做自由度分析,数清楚网里缺少几个基准条件,再选择重心基准、拟稳基准等明确附加条件。判断依据很简单:看参数是否可以进行某种整体变换而保持观测值不变。能平移说明少平移基准,能旋转说明少旋转基准。
5.2 坑二:逐次平差中“旧协方差”被反复使用
递推公式里 Q2 = Q1 − K A2 Q1 这个式子,很多人会误以为“Q2 比 Q1 小,说明精度提高了,那我可以拿 Q2 当基线,继续喂给下一批数据”。这本身没错,但有一个前提不能破坏:每一轮递推里的新观测必须真正提供新增信息。
如果两期观测观测了同一组基线,比如第一期测了AB边,第二期又测了AB边,递推公式会把这两次测量当成两次独立观测,精度提高是合理的。但如果第二次观测其实是由第一次观测结果推算出来的,或者两期数据共享同一组原始观测文件,那信息的独立性就不存在,递推会重复使用信息,得到过分乐观的协方差。
排查办法是把新增观测的系数矩阵和上一期系数矩阵做对比,看重复覆盖了多少;更稳妥的办法是保留每一批新增观测的原始文件清单,确保每一条观测值只进入一次平差。
5.3 坑三:把误差椭圆长半轴当成限差直接判定
施工验收时,经常需要判断“点位偏差是否超限”。有些项目会把误差椭圆长半轴乘以2,当成点位允许偏差,这是混淆了“测量不确定度”和“施工允许偏差”两个概念。
误差椭圆描述的是测量成果的随机不确定范围,由观测精度和网形决定;施工允许偏差由设计规范决定,比如钢结构安装允许偏差正负5mm。判定是否超限,应该用平差后的点位坐标与设计坐标的较差,再结合该较差对应的置信区间;而不是用误差椭圆本身去包络设计限差。
换句话说,误差椭圆再小,也不能让一个超限的实测坐标变得合格;误差椭圆再大,也不代表点位一定跑偏。它只能告诉你“实测坐标有多可信”,不能告诉你“实测坐标对不对”。
5.4 平差成果交付前的自查清单
把这几类问题串起来,我每次交付平差成果前都会过一遍自查清单:
- 法方程矩阵特征值序列是否自然,有没有零特征值被忽略。
- 秩亏自由网成果中,基准条件是什么,报告中是否写明。
- 逐次平差的每批新观测是否在原始文件中可追溯,没有重复计权。
- 误差椭圆标注了几倍中误差、对应置信概率是多少。
- 协方差阵主对角线是否全为正,对称性是否满足矩阵精度要求。
这套清单看着琐碎,但在实际项目中救过我很多次。某次一个沉降观测报告返工,问题出在误差椭圆图例没写置信水平,审查方直接说“精度结论不可验证”,后来补充标注后一次通过。测绘这个行当,细节就是公信力。