间接平差(参数平差)编程实现
本程序打开后可以直接运行,可以实现间接平差的各个部分计算以及输出,如误差方程、参数平差值、残差向量V最小二乘残差、参数平差值的权逆阵Qx、单位权中误差等。能够实现全要素的以文件的形式进行输入和输出也可以根据根据需要直接在代码上进行输入等极为方便和快捷。本程序是参考武汉大学出版社出版的第二版的《误差理论与测量平差》进行编写的,程序中用到的例题是武汉大学出版社出版的《误差理论与测量平差基础》中的7-8例题。计算出的结果精度很高。
具体代码如下:
以下三个.csv文件用于数据的输入:
第一个.csv:n_t.csv
6,2
第二个.csv:权阵.csv
0.91,0.59,0.43,0.37,0.42,0.25
第三个.csv:系数参数矩阵
1,0,0
0,1,0
1,0,-4
0,1,-3
-1,1,-7
-1,0,-2
上面三个输入文件也可以在代码中直接输入数据进行计算
运行代码如下:
import numpy as np
from numpy import linalgdef Example(n, t, A, L, P):N = np.dot(np.dot(A.T, P), A) # N 参数平差值的权逆阵QxU = np.dot(np.dot(A.T, P), L)X = np.dot(linalg.inv(N), U) # X 参数平差值向量,数组长度为t,待计算V = np.dot(A, X) - L # V 观测值残差向量数组长度为n,待计算μ = np.sqrt(np.dot(np.dot(V.T, P), V) / (n - t)) # 函数返回值—若计算成功,返回单位权中误差μQx = linalg.inv(N)return (X, V, μ, Qx)if __name__ == "__main__":# 观测值总数和参数总数# 文件导入n、t n 观测值个数;t 参数个数;original_data1 = list(map(int, np.loadtxt(open('n_t.csv'), delimiter=",", skiprows=0)))n, t = original_data1[0], original_data1[1]# 误差方程AL = np.array(np.loadtxt(open('系数参数矩阵.csv'), delimiter=",", skiprows=0), dtype=np.float64)
# 程序中使用的例题是武汉大学出版社出版的《误差理论与测量平差基础》中的7-8例题A = AL[:, :-1] # A 误差方程系数矩阵数组长度为 n*t,已知L = AL[:, -1] # L 观测值向量,数组长度为n,已知;# 定权P = np.diag(np.loadtxt(open('权阵.csv'), delimiter=",", skiprows=0)) # P 观测值权数组,只有权矩阵的对角线元素数组长度为nX, V, μ, Qx = Example(n, t, A, L, P) # X 参数平差值向量,数组长度为t,待计算with open('计算结果.csv', 'w', encoding="utf-8") as f:f.writelines("误差方程:\n")f.writelines(str(AL))f.writelines("\n参数平差值X:\n")f.writelines(str(X))f.writelines("\n残差向量V最小二乘残差V:\n")f.writelines(str(V))f.writelines("\n参数平差值的权逆阵Qx\n")f.writelines(str(Qx))f.writelines("\n单位权中误差μ\n")f.writelines(str(μ))
运行结果如下:
结果.csv:
误差方程:
[[ 1. 0. 0.][ 0. 1. 0.][ 1. 0. -4.][ 0. 1. -3.][-1. 1. -7.][-1. 0. -2.]]
参数平差值X:
[ 0.25895126 -2.85597136]
残差向量V最小二乘残差V:
[ 0.25895126 -2.85597136 4.25895126 0.14402864 3.88507739 1.74104874]
参数平差值的权逆阵Qx
[[0.53130053 0.16170016][0.16170016 0.77385077]]
单位权中误差μ
2.223618663514489
间接平差(参数平差)编程实现相关推荐
- 基于matlab的水准网间接平差程序设计,matlab水准网间接平差
//平差结果输出地址指针 cout< 用MATLAB解决_条件平差和间接平差精选课件_数学_高中教育_教育专区.测量程序设计 条件平差和间接平差 一.条件平差基本原理 函数模型 A L? rn ...
- Qt间接平差法进行直线拟合(Eigen运算、Qcustomplot绘图)
目录 间接平差法进行直线拟合,使用Qt.Qcustomplot.Eigen 间接平差法直线拟合原理 工具介绍 Qt Qcustomplot Eigen 准备工作 1.Qt读取文件存入矩阵 2.Eige ...
- C++核心编程(一)
C++ 核心编程 本系类列博客都是根据黑马的C++视频做的笔记. 本阶段主要针对C++面向对象编程技术做详细记录,探讨C++中的核心和精髓. 1.内存分区模型 C++程序在执行时,将内存大方向划分为4 ...
- 【Spring】面向切面编程AOP
AOP基础 什么是AOP [废话解释]在软件业,AOP全称Aspect Oriented Programming 即:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AO ...
- python编程问题--第二次
本质上grp 是一个dataframe 后面接一个[] 得到 series 两个[] 得到dataframe Groupby 如果后面放as_index=False 后面就能连续添加了 不加的话 同 ...
- OpenCL编程详细解析与实例
OpenCL编程详细解析与实例 C语言与OpenCL的编程示例比较 参考链接: https://www.zhihu.com/people/wujianming_110117/posts 先以图像旋转的 ...
- C语言与OpenCL的编程示例比较
C语言与OpenCL的编程示例比较 OpenCL支持数据并行,任务并行编程,同时支持两种模式的混合.对于同步 OpenCL支持同一工作组内工作项的同步和命令队列中处于同一个上下文中的 命令的同步. 在 ...
- LLVM一些编程语法语义特性
LLVM一些编程语法语义特性 High Level Structure Module Structure LLVM 程序由Module's组成,每个 's 是输入程序的一个翻译单元.每个模块由函数.全 ...
- Structured Streaming编程 Programming Guide
Structured Streaming编程 Programming Guide • Overview • Quick Example • Programming Model o Basic Conc ...
最新文章
- Maven 修改本地存储库位置--转
- jQuery控制表格垂直滚动条
- 渗透测试专题之decms的攻防篇(一)
- HTML+CSS+JavaScript复习笔记持更(六)——CSS3常用属性之文本
- shell 中scp 和 ssh密码输入 --expect (转:http://blog.sina.com.cn/s/blog_8ad7d4ca01014lft.html)
- IIS7.0下 HTTP 错误 404.15 - Not Found 请求筛选模块被配置为拒绝包含的查询字符串过长的请求...
- AC日记——[SCOI2010]游戏 bzoj 1854
- python网络爬虫学习笔记(八):XPath的使用
- ubuntu jdk install
- SLAM_ORB-SLAM3(VIO/IMU)适配KITTI数据集,并评估!!!奶妈级教程!!!
- C++算法之遗传算法及实现
- Excel怎么批量将各数据复制填充指定次数
- linux网卡驱动rtl8188cu,Realtek RTL8188CU芯片无线网卡的Linux驱动安装
- java中sep_java时间格式转换: Sep 29, 2012 1:00:01 AM 怎么转换成标准的java Date对象
- 螺旋城的灾难完全攻略及地图
- 【工业大数据】工业大数据:构建制造型企业新型能力
- linux 防火墙加固,Iptables 加固服务器安全
- 数理统计SPSS软件实验报告三--参数估计2
- greenDao小坑一个
- 邵武计算机培训机构在哪里,邵武云计算培训,邵武计算机培训价格,邵武计算机培训有哪些 - IT教育频道...
热门文章
- 屌丝程序猿对一个产品的思考
- 计算机 网络安全 研究生专业大学排名,2020年最好的网络空间安全专业大学排名...
- CPAL脚本自动化测试 ———— FDX系列函数及使用
- 2.34 OrCAD中关于格点的操作是在哪里设置的?
- 湖北省水系数据,水库数据,线要素和面要素
- python绘制turtle心电图代码_Python代码详解:入门时间序列分类
- 网红蛋糕店被关闭,我看到了一个暴利的赚钱项目
- 利用Invoke-Obfuscation混淆ps文件实现上线/VT免杀率3/55
- 浅谈五阶巴特沃斯滤波器硬件设计归一化法
- 排球分组循环交叉编排_如果一届排球赛中有20个参赛队,分别是ABC……T队,第一阶段将参赛队分成四组,用分组单循环的方法...