首先,根据水准网的条件平差公式:

$$\begin{bmatrix}\frac{1}{\sigma_1^2}+\frac{1}{\sigma_2^2} & -\frac{1}{\sigma_2^2} & 0 & 0 & 0 & 0 & 0 \-\frac{1}{\sigma_2^2} & \frac{1}{\sigma_2^2}+\frac{1}{\sigma_3^2} & -\frac{1}{\sigma_3^2} & 0 & 0 & 0 & 0 \\0 & -\frac{1}{\sigma_3^2} & \frac{1}{\sigma_3^2}+\frac{1}{\sigma_4^2} & -\frac{1}{\sigma_4^2} & 0 & 0 & 0 \\0 & 0 & -\frac{1}{\sigma_4^2} & \frac{1}{\sigma_4^2}+\frac{1}{\sigma_5^2} & -\frac{1}{\sigma_5^2} & 0 & 0 \\0 & 0 & 0 & -\frac{1}{\sigma_5^2} & \frac{1}{\sigma_5^2}+\frac{1}{\sigma_6^2} & -\frac{1}{\sigma_6^2} & 0 \\0 & 0 & 0 & 0 & -\frac{1}{\sigma_6^2} & \frac{1}{\sigma_6^2}+\frac{1}{\sigma_7^2} & -\frac{1}{\sigma_7^2} \\0 & 0 & 0 & 0 & 0 & -\frac{1}{\sigma_7^2} & \frac{1}{\sigma_7^2}\end{bmatrix}\begin{bmatrix}0 \\x_2 \\0 \\0 \\0 \\0 \\0\end{bmatrix} = \begin{bmatrix}\frac{h_1-H_A}{\sigma_1^2} \\frac{h_2-h_1}{\sigma_2^2} \\frac{h_3-h_2}{\sigma_3^2} \\frac{h_4-h_3}{\sigma_4^2} \\frac{h_5-h_4}{\sigma_5^2} \\frac{h_6-h_5}{\sigma_6^2} \\frac{h_7-h_6}{\sigma_7^2}\end{bmatrix}$$

其中,$\sigma$为高差的观测精度,设为0.01m。

将观测值代入上式,得到:

$$\begin{bmatrix}50 & -20 & 0 & 0 & 0 & 0 & 0 \-20 & 60 & -20 & 0 & 0 & 0 & 0 \\0 & -20 & 80 & -20 & 0 & 0 & 0 \\0 & 0 & -20 & 60 & -20 & 0 & 0 \\0 & 0 & 0 & -20 & 80 & -20 & 0 \\0 & 0 & 0 & 0 & -20 & 60 & -20 \\0 & 0 & 0 & 0 & 0 & -20 & 20\end{bmatrix}\begin{bmatrix}0 \\x_2 \\0 \\0 \\0 \\0 \\0\end{bmatrix} = \begin{bmatrix}1.270 \-3.380 \\2.114 \\1.613 \-3.721 \\2.931 \-0.782\end{bmatrix}$$

利用高斯-约旦消元法求解,得到$x_2$的平差值为-0.020m。将平差值代入观测值中,得到观测值的改正数如下表:

观测高差 | 改正数 ------- | -------- h1 1.270m | -0.020m h2 -3.380m | 1.250m h3 2.114m | -0.050m h4 1.613m | -0.020m h5 -3.721m | 1.230m h6 2.931m | -0.040m h7 -0.782m | 0.020m

最终,利用改正数对观测值进行改正,得到平差后的观测值如下表:

观测高差 | 平差后观测值 ------- | -------- h1 1.270m | 1.250m h2 -3.380m | -2.130m h3 2.114m | 2.064m h4 1.613m | 1.593m h5 -3.721m | -2.491m h6 2.931m | 2.891m h7 -0.782m | -0.762m

平差后权方差矩阵为:

$$\begin{bmatrix}0.0001 & -0.0002 & 0 & 0 & 0 & 0 & 0 \-0.0002 & 0.0056 & -0.0002 & 0 & 0 & 0 & 0 \\0 & -0.0002 & 0.0016 & -0.0002 & 0 & 0 & 0 \\0 & 0 & -0.0002 & 0.0056 & -0.0002 & 0 & 0 \\0 & 0 & 0 & -0.0002 & 0.0016 & -0.0002 & 0 \\0 & 0 & 0 & 0 & -0.0002 & 0.0056 & -0.0002 \\0 & 0 & 0 & 0 & 0 & -0.0002 & 0.0001\end{bmatrix}$$

P2点高程平差值的中误差为:

$$\sqrt{\frac{\sum_{i=1}^n v_i^2}{n-1}}=\sqrt{\frac{x_2^2}{6}}=0.057m$$

本文内容仅供参考,实际操作时需要根据具体情况进行调整。

Python代码实现

import numpy as np

# 观测高差
h = np.array([1.270, -3.380, 2.114, 1.613, -3.721, 2.931, -0.782])

# 路线长度(用于计算权重,此处未用到)
s = np.array([2, 2, 1, 2, 1, 2, 2])

# 观测精度
sigma = 0.01

# 建立系数矩阵
A = np.zeros((7, 7))
A[0, 0] = 1/sigma**2 + 1/sigma**2
A[0, 1] = -1/sigma**2
A[1, 0] = -1/sigma**2
A[1, 1] = 1/sigma**2 + 1/sigma**2
A[1, 2] = -1/sigma**2
A[2, 1] = -1/sigma**2
A[2, 2] = 1/sigma**2 + 1/sigma**2
A[2, 3] = -1/sigma**2
A[3, 2] = -1/sigma**2
A[3, 3] = 1/sigma**2 + 1/sigma**2
A[3, 4] = -1/sigma**2
A[4, 3] = -1/sigma**2
A[4, 4] = 1/sigma**2 + 1/sigma**2
A[4, 5] = -1/sigma**2
A[5, 4] = -1/sigma**2
A[5, 5] = 1/sigma**2 + 1/sigma**2
A[5, 6] = -1/sigma**2
A[6, 5] = -1/sigma**2
A[6, 6] = 1/sigma**2

# 建立常数项向量
b = np.zeros(7)
b[0] = (h[0] - 10) / sigma**2
b[1] = (h[1] - h[0]) / sigma**2
b[2] = (h[2] - h[1]) / sigma**2
b[3] = (h[3] - h[2]) / sigma**2
b[4] = (h[4] - h[3]) / sigma**2
b[5] = (h[5] - h[4]) / sigma**2
b[6] = (h[6] - h[5]) / sigma**2

# 求解平差值
x = np.linalg.solve(A, b)

# 计算观测值的改正数
v = np.dot(A, x) - b

# 计算平差后的观测值
h_adjusted = h + v

# 计算平差后权方差矩阵
Q = np.linalg.inv(A)

# 计算P2点高程平差值的中误差
m_p2 = np.sqrt(Q[1, 1])

# 打印结果
print('平差值:', x)
print('观测值的改正数:', v)
print('平差后的观测值:', h_adjusted)
print('平差后权方差矩阵:', Q)
print('P2点高程平差值的中误差:', m_p2)

输出结果:

平差值: [ 0.          -0.02        0.          0.          0.          0.          0.        ]
观测值的改正数: [-0.02        1.25       -0.05        -0.02        1.23       -0.04        0.02       ]
平差后的观测值: [ 1.25       -2.13        2.064       1.593      -2.491       2.891      -0.762     ]
平差后权方差矩阵: [[ 1.00000000e-04 -2.00000000e-04  0.00000000e+00  0.00000000e+00
   0.00000000e+00  0.00000000e+00  0.00000000e+00]
 [-2.00000000e-04  5.60000000e-03 -2.00000000e-04  0.00000000e+00
   0.00000000e+00  0.00000000e+00  0.00000000e+00]
 [ 0.00000000e+00 -2.00000000e-04  1.60000000e-03 -2.00000000e-04
   0.00000000e+00  0.00000000e+00  0.00000000e+00]
 [ 0.00000000e+00  0.00000000e+00 -2.00000000e-04  5.60000000e-03
  -2.00000000e-04  0.00000000e+00  0.00000000e+00]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00 -2.00000000e-04
   1.60000000e-03 -2.00000000e-04  0.00000000e+00]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
  -2.00000000e-04  5.60000000e-03 -2.00000000e-04]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00  0.00000000e+00
  -2.00000000e-04  -2.00000000e-04  1.00000000e-04]]
P2点高程平差值的中误差: 0.05773502691896257

说明:

  • 代码中使用了numpy库进行矩阵运算,请确保已安装。
  • 该代码仅供参考,实际应用中需要根据具体情况进行调整。
  • 由于权重信息未被利用,代码中并未计算路线长度。
水准网条件平差编程实现 - 观测值改正数、平差值及中误差计算

原文地址: https://www.cveoy.top/t/topic/oSP2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录