误差理论与测量平差课程设计实验报告 下载本文

误差理论与测量平差

课程设计报告

? 课程名称:误差理论与测量平差 ? 课程题目: 平差计算器

一、 实验目的与要求

1) 实验目的:此次的课程设计可以用任何一种计算机语言来编写,这

样给我们每个人很多的选择。同时这样也是为了练习同学们对于一

门语言的掌握和运用,大大的提高了我们的编程能力。同时,通过对测量数据的误差处理,增强学生对《误差理论与测量平差基础》课程的理解,使学生牢固掌握测量数据处理的基本原理和公式,熟悉测量数据处理的基本技能和计算方法。要求学生综合运用测绘知识、测量平差知识、数学知识和计算机知识,设计数学模型和程序算法,编制程序实现测量数据的自动化处理。

2) 实验要求:要求每位同学独立完成给定测量数据处理的数学模型和

算法的设计,编写程序,调测程序,并编写程序设计文档。要求数

学模型和算法正确、程序运行正确、设计文档完备。

二、 课程设计主要内容

课程设计的主要内容主要有:

1. 新建一个基于单文档的MFC应用程序。

这只是基本的框架结构,里面包含了几个已知的类,在这些类的基础上,可以增加对象和变量。

然后是增加一个操作矩阵的类 CMatrix 的实现文件,

Matrix.cpp和Matrix.h文件是从网上下载的,然后添加工程,

word文档 可自由复制编辑

创建了一个类,进行矩阵的计算。通过运算符的重载,可以进行加减乘除计算,还可以进行矩阵的转置和求逆等运算。现将该程序的Matrix.cpp文件附录如下:

// Matrix.cpp

#include \#include \#ifdef _DEBUG #undef THIS_FILE

static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif

// Construction/Destruction // 基本构造函数 CMatrix::CMatrix() {

m_nNumColumns = 1; m_nNumRows = 1; m_pData = NULL;

BOOL bSuccess = Init(m_nNumRows, m_nNumColumns); ASSERT(bSuccess); }

// 指定行列构造函数 // 参数:

// 1. int nRows - 指定的矩阵行数 // 2. int nCols - 指定的矩阵列数

CMatrix::CMatrix(int nRows, int nCols) {

m_nNumRows = nRows; m_nNumColumns = nCols; m_pData = NULL;

BOOL bSuccess = Init(m_nNumRows, m_nNumColumns); ASSERT(bSuccess); }

// 初始化函数 // 参数:

// 1. int nRows - 指定的矩阵行数 // 2. int nCols - 指定的矩阵列数 //

// 返回值:BOOL 型,初始化是否成功

BOOL CMatrix::Init(int nRows, int nCols) {

if (m_pData) {

word文档 可自由复制编辑

delete[] m_pData; m_pData = NULL; }

m_nNumRows = nRows; m_nNumColumns = nCols; int nSize = nCols*nRows; if (nSize < 0) return FALSE;

// 分配内存

m_pData = new double[nSize];

if (m_pData == NULL)

return FALSE; // 内存分配失败 if (IsBadReadPtr(m_pData, sizeof(double) * nSize)) return FALSE;

// 将各元素值置0

memset(m_pData, 0, sizeof(double) * nSize);

return TRUE; }

// 指定值构造函数 // 参数:

// 1. int nRows - 指定的矩阵行数 // 2. int nCols - 指定的矩阵列数

// 3. double value[] - 一维数组,长度为nRows*nCols,存储矩阵各元素的值

CMatrix::CMatrix(int nRows, int nCols, double value[])

{

m_nNumRows = nRows; m_nNumColumns = nCols; m_pData = NULL;

BOOL bSuccess = Init(m_nNumRows, m_nNumColumns); ASSERT(bSuccess); SetData(value); }

// 设置矩阵各元素的值 // 参数:

// 1. double value[] - 一维数组,长度为m_nNumColumns*m_nNumRows,存储

word文档 可自由复制编辑