import numpy as np n = int(input('请输入观测值个数:')) t = int(input('请输入待定点个数:')) h = np.mat([[5.654, 3.528, 10.273, 7.025, 2.727]]) Ha = np.mat([235.436]) l2 = int(-1000 * (h[0, 2] - h[0, 1] - h[0, 0])) l4 = int(-1000 * (h[0, 2] - h[0, 3] - h[0, 4])) B = np.mat([[1, 0, 0], [-1, 1, 0], [0, 1, 0], [0, 1, -1], [0, 0, 1]]) l = np.mat([[0, l2, 0, l4, 0]]) print('L\n',l) print('B\n',B) s = np.mat([[3.8, 2.5, 3.0, 4.0, 2.7]]) s1 = 10 / s[0, 0] s2 = 10 / s[0, 1] s3 = 10 / s[0, 2] s4 = 10 / s[0, 3] s5 = 10 / s[0, 4] P = np.diagflat(np.mat([[s1, s2, s3, s4, s5]])) print('权\n',P) N = (B.T) * P * B print('求得N值为:', np.around(N, decimals=4)) W = (B.T) * P * (l.T) print('求得W值为:', np.around(W, decimals=4)) x = np.linalg.inv(N) * W print('求得x值为(mm):', np.around(x, decimals=2)) print('求得V值为(mm):', np.around(V, decimals=4)) x1 = x[0] / 1000 x2 = x[1] / 1000 x3 = x[2] / 1000 a = np.array(h).reshape(-1, 1) h1 = a[0] h3 = a[2] h5 = a[4] X1 = x1 + h1 + Ha X2 = x2 + h3 + Ha X3 = x3 + h5 + Ha print('求得参数平差值X1值为:', np.around(X1, decimals=3)) print('求得参数平差值X2值为:', np.around(X2, decimals=3)) print('求得参数平差值X3值为:', np.around(X3, decimals=3)) H = a + V / 1000 print('求得观测值的平差值H值为:\n', np.around(H, decimals=4))
时间: 2024-03-31 20:36:59 浏览: 363
这段代码实现了一个高程间接平差的程序,具体来说,它实现了以下几个步骤:
1. 输入观测值个数n和待定点个数t。
2. 定义高程观测值h和高程改正数Ha。
3. 计算l2和l4。
4. 定义B矩阵。
5. 计算l向量。
6. 定义s向量,并根据s向量计算权阵P。
7. 根据B矩阵和P,计算N矩阵。
8. 计算W向量。
9. 根据N矩阵和W向量,计算x向量,即求解高程改正数的增量。
10. 计算V向量,即残差向量。
11. 计算参数平差值X1、X2、X3。
12. 计算观测值的平差值H。
需要注意的是,这段代码中的一些变量名和计算方法可能需要根据具体的问题进行调整。同时,代码中的注释比较少,可读性比较差,需要根据具体的需求进行理解和修改。
阅读全文