MatLab平差计算实习报告
(1) 实验目的和内容
实验目的:
1、掌握条件平差原理和计算
条件方程的建立
误差方程的建立
误差方程的求解
精度计算
2、掌握MatLab平差计算
实验内容:
条件平差计算
不同条件方程计算
计算结果比较
条件方程一:
h1-h2+h5=0 v1-v2+v5+7=0
h3-h4+h5=0 v3-v4+v5+8=0
h3+h6+h7=0 v3+v6+v7+6=0
hA+h2-h4=hB v2-v4-3=0
将上述方程用矩阵表达为:
A =
1 -1 0 0 1 0 0
0 0 1 -1 1 0 0
0 0 1 0 0 1 1
0 1 0 -1 0 0 0
W =
7
8
6
-3
权:P =
0.9091 0 0 0 0 0 0
0 0.5882 0 0 0 0 0
0 0 0.4348 0 0 0 0
0 0 0 0.3704 0 0 0
0 0 0 0 0.4167 0 0
0 0 0 0 0 0.7143 0
0 0 0 0 0 0 0.3846
权逆阵:Q=inv(P)
= 1.1000 0 0 0 0 0 0
0 1.7000 0 0 0 0 0
0 0 2.3000 0 0 0 0
0 0 0 2.7000 0 0 0
0 0 0 0 2.4000 0 0
0 0 0 0 0 1.4000 0
0 0 0 0 0 0 2.6000
法方程系数阵:Naa=A*Q*A'
= 5.2000 2.4000 0 -1.7000
2.4000 7.4000 2.3000 2.7000
0 2.3000 6.3000 0
-1.7000 2.7000 0 4.4000
解联系数:K=-inv(Naa)*W
= -0.2206
-1.4053
-0.4393
1.4589
求改正数:V=Q*A'*K
=-0.2427
2.8552
-4.2427
-0.1448
-3.9021
-0.6151
-1.1423
求平差值:LL=L+V
=1.1163
4.8642
-3.8797
0.8672
-3.2451
-0.3771
-1.7373
单位权中误差:sigma0=sqrt(V'*P*V/r)
= 2.2248
求改正数协因数:QVV=Q*A'*inv(Naa)*A*Q
=0.5693 -0.1608 -0.5307 -0.1608 0.3699 0.1857 0.3450
-0.1608 0.9242 -0.1608 -0.7758 -0.6151 0.0563 0.1045
-0.5307 -0.1608 1.7693 -0.1608 0.3699 0.1857 0.3450
-0.1608 -0.7758 -0.1608 1.9242 -0.6151 0.0563 0.1045
0.3699 -0.6151 0.3699 -0.6151 1.4150 -0.1295 -0.2404
0.1857 0.0563 0.1857 0.0563 -0.1295 0.4250 0.7893
0.3450 0.1045 0.3450 0.1045 -0.2404 0.7893 1.4658
求高差平差值协因数:QLL=Q-QVV
=0.5307 0.1608 0.5307 0.1608 -0.3699 -0.1857 -0.3450
0.1608 0.7758 0.1608 0.7758 0.6151 -0.0563 -0.1045
0.5307 0.1608 0.5307 0.1608 -0.3699 -0.1857 -0.3450
0.1608 0.7758 0.1608 0.7758 0.6151 -0.0563 -0.1045
-0.3699 0.6151 -0.3699 0.6151 0.9850 0.1295 0.2404
-0.1857 -0.0563 -0.1857 -0.0563 0.1295 0.9750 -0.7893
-0.3450 -0.1045 -0.3450 -0.1045 0.2404 -0.7893 1.1342
条件方程二:
hA+h1-h3=hB v1-v3-4=0
hA+h1+h5-h4=hB v1+v5-v4-4=0
hA+h1+h6+h7=hB v1+v6+v7+2=0
h6+h7+h4-h5=0 v6+v7+v4-v5-2=0
将上述方程用矩阵表达为:
A =
1 0 -1 0 0 0 0
1 0 0 -1 1 0 0
1 0 0 0 0 1 1
0 0 0 1 -1 1 1
W =
-4
-4
2
-2
权:P =
0.9091 0 0 0 0 0 0
0 0.5882 0 0 0 0 0
0 0 0.4348 0 0 0 0
0 0 0 0.3704 0 0 0
0 0 0 0 0.4167 0 0
0 0 0 0 0 0.7143 0
0 0 0 0 0 0 0.3846
权逆阵:Q=inv(P)
= 1.1000 0 0 0 0 0 0
0 1.7000 0 0 0 0 0
0 0 2.3000 0 0 0 0
0 0 0 2.7000 0 0 0
0 0 0 0 2.4000 0 0
0 0 0 0 0 1.4000 0
0 0 0 0 0 0 2.6000
法方程系数阵:Naa=A*Q*A'
= 3.4000 1.1000 1.1000 0
1.1000 6.2000 1.1000 -5.1000
1.1000 1.1000 5.1000 4.0000
0 -5.1000 4.0000 9.1000
解联系数:K=-inv(Naa)*W
= 0.0000
4.5036
-4.5036
4.5036
求改正数:V=Q*A'*K
=- 1.0000
0
-2.9849
-2.0000
2.0000
-1.0000
-2.0000
求平差值:LL=L+V
=
2.3590
2.0090
-2.6219
-0.9880
2.6570
-0.7620
-2.5950
单位权中误差:sigma0=sqrt(V'*P*V/r)
= 1.5956
求改正数协因数:QVV=Q*A'*inv(Naa)*A*Q
= 0.5541 0 -0.5837 -0.3375 0.3000 0.1750 0.3250
0 0 0 0 0 0 0
-0.5837 0 1.7163 -0.1941 0.1725 0.2012 0.3737
-0.1822 0 -0.1941 1.3500 -1.2000 0.3500 0.6500
0.1925 0 0.1725 -1.3500 1.2000 -0.3500 -0.6500
0.1788 0 0.2012 0.3375 -0.3000 0.5250 0.9750
0.3713 0 0.3737 0.6750 -0.6000 1.0500 1.9500
求高差平差值协因数:QLL=Q-QVV
=0.5459 0 0.5837 0.3375 -0.3000 -0.1750 -0.3250
0 1.7000 0 0 0 0 0
0.5837 0 0.5837 0.1941 -0.1725 -0.2012 -0.3737
0.1822 0 0.1941 1.3500 1.2000 -0.3500 -0.6500
-0.1925 0 -0.1725 1.3500 1.2000 0.3500 0.6500
-0.1788 0 -0.2012 -0.3375 0.3000 0.8750 -0.9750
-0.3713 0 -0.3737 -0.6750 0.6000 -1.0500 0.6500
(2) 实习工具软件介绍
1、MATLAB语言的发展
matlab语言是由美国的Clever Moler博士于1980年开发的
设计者的初衷是为解决“线性代数”课程的矩阵运算问题
取名MATLAB即Matrix Laboratory 矩阵实验室的意思
Ø 它将一个优秀软件的易用性与可靠性、通用性与专业性 、一般目的的应用与高深的科学技术应用有机的相结合
Ø MATLAB是一种直译式的高级语言,比其它程序设计语言容易
2、MATLAB功能
? 强大的数值(矩阵)运算功能
? 广泛的符号运算功能
? 高级与低级兼备的图形功能(计算结果的可视化功能)
? 可靠的容错功能
? 应用灵活的兼容与接口功能
? 信息量丰富的联机检索功能
3、MATLAB界面
MATLAB操作
1. 创建矩阵的方法
? 直接输入法
规则:
矩阵元素必须用[ ]括住
矩阵元素必须用逗号或空格分隔
在[ ]内矩阵的行与行之间必须用分号分隔
2、数据的保存与获取
? 把matlab工作空间中一些有用的数据长久保存下来的方法是生成mat数据文件。
3、矩阵运算
Ø 矩阵加、减(+,-)运算
Ø 矩阵乘(*)运算
Ø 矩阵乘(*)运算
Ø 数组乘除(*.,./,.\)
Ø 矩阵的其它运算
Ø inv —— 矩阵求逆
Ø det —— 行列式的值
Ø eig —— 矩阵的特征值
Ø diag —— 对角矩阵
Ø ’ —— 矩阵转置
Ø sqrt —— 矩阵开方
4、符号运算
与数值运算的区别
※ 数值运算中必须先对变量赋值,然后才能参与运算。
※ 符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。
5、matlab 绘图
(一)plot —— 最基本的二维图形指令plot的功能:
? plot命令自动打开一个图形窗口Figure
? 用直线连接相邻两数据点来绘制图形
? 根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把x, y 轴用对数坐标表示
? plot(x) —— 缺省自变量绘图格式,x为向量, 以x元素值为纵坐标,以相应元素下标为横坐标绘图
? plot(x,y) —— 基本格式,以y(x)的函数关系作出直角坐标图,如果y为n×m的矩阵,则以x 为自变量,作出m条曲线
? plot(x1,y1,x2,y2) —— 多条曲线绘图格式
plot(x,y,’s’) —— 开关格式,开关量字符串s设定曲线颜色和绘图方式,使用颜色字符串的前1~3个字母,如yellow—yel表示等。
(二)三维网格图
? mesh —— 三维网线绘图函数
? 调用格式:
mesh(z) —— z为n×m的矩阵,x与y坐标为元素的下标
mesh(x,y,z) —— x,,y,z分别为三维空间的坐标位置
(3)原理
测量平差的解算,主要是基于矩阵的运算,所以在测量平差的计算中,采用MATLAB来进行计算式非常方便的。也可以编写相关的平差程序,不仅使计算更为简洁,而且对于平差原理理解和掌握变得更加容易。
用MATLAB进行条件平差计算,主要矩阵公式如下:
条件方程:AV+W=0
法方程式:NK+W=0
观测值改正数:V=QAK
观测值平差值:LL=L+V
(4)实验步骤
1、定义并输入初始值
Step 1: 在Workspace中定义初始值变量
Step 2: 给初始值变量赋值
(1)双击变量,得到如图变量赋值表
(2)分别给其赋值
2、定义给系数阵A,L0,W并赋值
3、计算W
W=A*L+L0
4、计算Naa
Q=inv(P);
Naa=A*Q*A'
K=-inv(Naa)*W
5、计算改正数
V=Q*A'*K
6、计算平差值及单位权方差
LL=L+V
sigma0=sqrt(V'*P*V/r)
7、计算
QVV=Q*A'*inv(Naa)*A*Q
QLL=Q-QVV
(5)实验结果分析
方法一使用的是例题所给的条件方程,但计算结果与给出的结果稍有差异,检查输入数据与公式并无错误,可能由于计算的环境与计算精度都不相同,从而导致了差异的产生。
方法一与方法二计算的环境与计算精度都是相同的,但计算结果仍然不同,这是由于所列方程不同引起的。由此也可以看出,通过列不同的条件方程可得出不同的精度,我们可以择优而用。
(6)结论及建议
结论:通过对MATLAB的学习,了解到它是一个很不错的矩阵计算的数学计算软件,它能使得以前很复杂的矩阵运算变得很简单,让我们对误差传播定律有了更深的了解。但由于是第一次使用该软件,只是通过老师上课 讲解的那短短十几分钟,对MATLAB只是有了初步的认识,自己并不能独立将平时所列的式子转化为MATLAB的标准语言,将其执行出来,课后应加强对这个软件的学习。
建议:老师可将MATLAB这个软件讲解的时间加长,特别是语法部分,让我们对它有更深的认识,更快学会将它运用到实际中去。