资源简介
经典平差的程序集,包含一系列的源程序,C++写的,可直接运行
代码片段和文件信息
// Classical.cpp: implementation of the CClassical class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “Classical.h“
#include “public.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
// === 《测量平差程序设计》-第二章 经典平差 源程序 ===
// === 《测量平差程序设计》-第二章 经典平差 源程序 ===
//////////////////////////////////////////////////////////////////////
// 参数平差程序(观测值独立)
// 参数:
// int n - 观测值个数
// int t - 参数个数
// double A[] - 误差方程系数矩阵,数组长度为n×t
// double L[] - 观测值向量数组长度为n
// double P[] - 观测值权矩阵的对角线元素数组长度为n
// double X[] - 参数向量函数调用前为参数的先验值调用后为参数平差值,
// 数组长度为t
// double Qx[] - 函数调用前为参数的先验权逆阵,调用后为参数平差值的权逆阵,
// 仅存下三角矩阵,数组长度为t×(t+1)/2
// double V[] - 残差向量,数组长度为n
// 返回值:验后单位权中误差
//////////////////////////////////////////////////////////////////////////
double Adjust(int nint t double A[]double L[]double P[]
double X[]double N[]double V[])
{
double *U=new double [t]; //临时数组,存法方程自由项
// 法方程系数矩阵与自由项清零
for(int i=0;i for(int j=0;j
// 组成法方程式
for(int k=0;k {
for(int i=0;i {
U[i]+=A[k*t+i]*P[k]*L[k];
for(int j=0; j<=i; j++)
{
N[ij(ij)]+=A[k*t+i]*P[k]*A[k*t+j];
}
}
}
// 计 算 X
if(!inverse(Nt))
{
delete[]U;
return -1.0;
}
for(i=0;i {
X[i]=0.0;
for(int j=0;j }
delete []U;
// 计 算 V
double pvv=0;
for(i=0;i {
double vi=-L[i];
for(int j=0;j V[i]=vi;
pvv+=vi*vi*P[i];
}
if(n==t)return 0.0; //n=t无多余观测
return sqrt(pvv/(n-t));
}
//////////////////////////////////////////////////////////////////////////
// 参数平差例题(观测值独立)
void Adjust_Example()
{
char *file=“例题\\参数平差\\data.txt“;
FILE *fp=fopen(file“r“);
if(fp==NULL)
{
MyBreak(“数据文件打不开“);
return;
}
int nt;
fscanf(fp“%d%d“&n&t);
double *A=new double[n*t];
double *L=new double[n];
double *P=new double[n];
double *X=new double[t];
double *N=new double[t*(t+1)/2];
double *V=new double[n];
for(int i=0;i {
for(int j=0;j {
fscanf(fp“%lf“A+i*t+j);
}
fscanf(fp“%lf“L+i); // 读取误差方程自由项
}
for(i=0;i {
fscanf(fp“%lf“P+i);
}
fclose(fp);
fp=fopen(“例题\\参数平差\\result.txt““w“);
fprintf(fp“=== 参数平差(观测值独立)计算 ===\n“);
fprintf(fp“\n误差方程:\n“);
for(i=0;i {
for(int j=0;j fprintf(fp“%7.3lf “A[i*t+j]);
fprintf(fp“%7.3lf \n“L[i]);
}
double m=Adjust( n t A L P X N V);
fprintf(fp“参数平差值及其中误差:\n“);
for(i=0;i {
fprintf(fp“%4d %10.4lf %10.4lf\n“i+1X[i]sqrt(N[ij(ii)])*m);
}
fprintf(fp“\n最小二乘残差(V):\n“);
for(i=0;i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-03-17 17:46 经典平差\
文件 18616 2011-03-28 12:53 经典平差\Classical.cpp
文件 2015 2011-03-28 12:53 经典平差\Classical.h
目录 0 2012-03-08 12:50 经典平差\Debug\
文件 44217 2012-03-08 12:50 经典平差\Debug\Classical.obj
文件 0 2012-03-08 12:50 经典平差\Debug\Classical.sbr
文件 21501 2011-03-28 12:53 经典平差\Debug\MyCpp.obj
文件 0 2011-03-28 12:53 经典平差\Debug\MyCpp.sbr
文件 2079 2011-03-28 12:53 经典平差\Debug\StdAfx.obj
文件 251 2011-03-28 12:53 经典平差\Debug\StdAfx.sbr
文件 18437 2012-03-08 12:50 经典平差\Debug\public.obj
文件 0 2012-03-08 12:50 经典平差\Debug\public.sbr
文件 58368 2014-03-17 17:43 经典平差\Debug\vc60.idb
文件 53248 2012-03-08 12:50 经典平差\Debug\vc60.pdb
文件 156672 2012-03-08 12:50 经典平差\Debug\经典平差.bsc
文件 217144 2012-03-08 12:50 经典平差\Debug\经典平差.exe
文件 238548 2012-03-08 12:50 经典平差\Debug\经典平差.ilk
文件 6947 2011-03-28 12:53 经典平差\Debug\经典平差.obj
文件 187164 2011-03-28 12:53 经典平差\Debug\经典平差.pch
文件 549888 2012-03-08 12:50 经典平差\Debug\经典平差.pdb
文件 0 2011-03-28 12:53 经典平差\Debug\经典平差.sbr
文件 1220 2011-03-28 12:53 经典平差\ReadMe.txt
文件 295 2011-03-28 12:53 经典平差\StdAfx.cpp
文件 667 2011-03-28 12:53 经典平差\StdAfx.h
文件 8229 2011-03-28 12:53 经典平差\public.cpp
文件 1756 2011-03-28 12:53 经典平差\public.h
目录 0 2014-03-18 20:12 经典平差\例题\
文件 254 2014-03-18 20:17 经典平差\例题\read me.txt
目录 0 2012-03-11 11:17 经典平差\例题\条件平差\
文件 792 2014-03-17 17:43 经典平差\例题\条件平差\Result.txt
文件 119 2012-03-11 11:16 经典平差\例题\条件平差\data.txt
............此处省略6个文件信息
- 上一篇:dp动态规划动归经典问题买书问题01背包
- 下一篇:蓝牙C语言程序
相关资源
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- Beginning C++17 From Novice to Professional
- C++ STL实现
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- 基于VSCode和CMake实现C++开发
- c++语法查询工具
- c++ 账务系统源码
- GBT 28169-2011 嵌入式软件 C语言编码规范
- c++ 猜拳小游戏
- XUnZip Zip解压缩.rar
评论
共有 条评论