有6个必要观测,4个多余观测的间接平差的代码
时间: 2023-12-03 18:47:15 浏览: 137
这里是一个基于Python的间接平差代码,可以处理6个必要观测和4个多余观测:
```python
import numpy as np
from numpy.linalg import inv
# 输入必要观测和多余观测的数据
A = np.array([
[1, 0, 0, 0, 0, 0],
[1, 0, 1, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 1, -1, 0, 0, 0],
[0, 1, 0, 1, 0, 0],
[0, 0, 0, 1, 0, 0],
[0, 0, 0, 1, -1, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, -1, 1],
[0, 0, 0, 0, 0, 1]
])
L = np.array([
[100.02],
[201.00],
[200.02],
[300.01],
[401.00],
[401.99],
[501.00],
[502.00],
[600.99],
[700.00]
])
# 计算系数矩阵和常数矩阵
N = np.dot(A.T, A)
u = np.dot(A.T, L)
# 求解未知数向量
x = np.dot(inv(N), u)
# 计算方差
v = L - np.dot(A, x)
s = np.dot(v.T, v) / (A.shape[0] - A.shape[1])
Qxx = inv(N) * s
# 打印结果
print('未知数向量 x:')
print(x)
print('方差 s:')
print(s)
print('Qxx:')
print(Qxx)
```
其中,必要观测和多余观测的数据存储在矩阵 `A` 和向量 `L` 中。代码计算系数矩阵 `N` 和常数矩阵 `u`,然后使用矩阵求逆和向量乘法计算未知数向量 `x`。最后,代码计算观测值的残差向量 `v`,计算方差 `s` 和协方差矩阵 `Qxx`。
阅读全文