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

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

误差理论与测量平差

课程设计报告

●课程名称:误差理论与测量平差

●课程题目:平差计算器

●姓名:江记洲

●专业:测绘工程

●学号: 20104166 ●学院:土木与水利工程学院

●学校:合肥工业大学

●指导老师:陶庭叶

一、实验目的与要求

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

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

门语言的掌握和运用,大大的提高了我们的编程能力。同时,通过

对测量数据的误差处理,增强学生对《误差理论与测量平差基础》

课程的理解,使学生牢固掌握测量数据处理的基本原理和公式,熟

悉测量数据处理的基本技能和计算方法。要求学生综合运用测绘知

识、测量平差知识、数学知识和计算机知识,设计数学模型和程序

算法,编制程序实现测量数据的自动化处理。

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

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

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

二、课程设计主要内容

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

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

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

然后是增加一个操作矩阵的类 CMatrix 的实现文件,Matrix.cpp和Matrix.h文件是从网上下载的,然后添加工程,

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

// Matrix.cpp

#include "StdAfx.h"

#include "Matrix.h"

#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)

{

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,存储

// 矩阵各元素的值

// 返回值:无

void CMatrix::SetData(double value[])

{

// empty the memory

memset(m_pData, 0, sizeof(double) *

m_nNumColumns*m_nNumRows);

// copy data

memcpy(m_pData, value,

sizeof(double)*m_nNumColumns*m_nNumRows);

}

// 方阵构造函数

// 参数:

// 1. int nSize - 方阵行列数

CMatrix::CMatrix(int nSize)

{

m_nNumRows = nSize;

m_nNumColumns = nSize;

m_pData = NULL;

BOOL bSuccess = Init(nSize, nSize);

ASSERT (bSuccess);

}

// 方阵构造函数

// 参数:

// 1. int nSize - 方阵行列数

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

CMatrix::CMatrix(int nSize, double value[])

{

m_nNumRows = nSize;

m_nNumColumns = nSize;

m_pData = NULL;

BOOL bSuccess = Init(nSize, nSize);

ASSERT (bSuccess);

SetData(value);

}

// 拷贝构造函数

// 参数:

// 1. const CMatrix& other - 源矩阵

CMatrix::CMatrix(const CMatrix& other)

{

m_nNumColumns = other.GetNumColumns();

m_nNumRows = other.GetNumRows();

m_pData = NULL;

BOOL bSuccess = Init(m_nNumRows, m_nNumColumns);

ASSERT(bSuccess);

// copy the pointer

memcpy(m_pData, other.m_pData,

sizeof(double)*m_nNumColumns*m_nNumRows);

}

// 析构函数

CMatrix::~CMatrix()

{

if (m_pData)

{

delete[] m_pData;

m_pData = NULL;

}

}

// 将方阵初始化为单位矩阵

// 参数:

// 1. int nSize - 方阵行列数

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

BOOL CMatrix::MakeUnitMatrix(int nSize)

{

if (! Init(nSize, nSize))

return FALSE;

for (int i=0; i

for (int j=0; j

if (i == j)

SetElement(i, j, 1);

return TRUE;

}

// 将字符串转化为矩阵的值

// 参数:

// 1. CString s - 数字和分隔符构成的字符串

// 2. const CString& sDelim - 数字之间的分隔符,默认为空格

// 3. BOOL bLineBreak - 行与行之间是否有回车换行符,默认为真(有换行符)

// 当该参数为FALSE时,所有元素值都在一行中输入,字符串的第一个

// 数值应为矩阵的行数,第二个数值应为矩阵的列数

// 返回值:BOOL 型,转换是否成功

BOOL CMatrix::FromString(CString s, const CString& sDelim /*= " "*/, BOOL bLineBreak /*= TRUE*/)

{

if (s.IsEmpty())

return FALSE;

// 分行处理

if (bLineBreak)

{

CTokenizer tk(s, "\r\n");

CStringList ListRow;

CString sRow;

while (tk.Next(sRow))

{

sRow.TrimLeft();

sRow.TrimRight();

if (sRow.IsEmpty())

break;

ListRow.AddTail(sRow);

}

// 行数

m_nNumRows = ListRow.GetCount();

sRow = ListRow.GetHead();

CTokenizer tkRow(sRow, sDelim);

CString sElement;

// 列数

m_nNumColumns = 0;

while (tkRow.Next(sElement))

{

m_nNumColumns++;

}

// 初始化矩阵

if (! Init(m_nNumRows, m_nNumColumns))

return FALSE;

// 设置值

POSITION pos = ListRow.GetHeadPosition();

for (int i=0; i

{

sRow = ListRow.GetNext(pos);

int j = 0;

CTokenizer tkRow(sRow, sDelim);

while (tkRow.Next(sElement))

{

sElement.TrimLeft();

sElement.TrimRight();

double v = atof(sElement);

SetElement(i, j++, v);

}

}

return TRUE;

}

// 不分行(单行)处理

CTokenizer tk(s, sDelim);

CString sElement;

// 行数

tk.Next(sElement);

sElement.TrimLeft();

sElement.TrimRight();

m_nNumRows = atoi(sElement);

// 列数

tk.Next(sElement);

sElement.TrimLeft();

sElement.TrimRight();

m_nNumColumns = atoi(sElement);

// 初始化矩阵

if (! Init(m_nNumRows, m_nNumColumns))

return FALSE;

// 设置值

int i = 0, j = 0;

while (tk.Next(sElement))

{

sElement.TrimLeft();

sElement.TrimRight();

double v = atof(sElement);

SetElement(i, j++, v);

if (j == m_nNumColumns)

{

j = 0;

i++;

if (i == m_nNumRows)

break;

}

}

return TRUE;

}

// 将矩阵各元素的值转化为字符串

//

// 参数:

// 1. const CString& sDelim - 数字之间的分隔符,默认为空格

// 2 BOOL bLineBreak - 行与行之间是否有回车换行符,

默认为真(有换行符)

//

// 返回值:CString 型,转换得到的字符串

CString CMatrix::ToString(const CString& sDelim /*= " "*/, BOOL bLineBreak /*= TRUE*/) const

{

CString s="";

for (int i=0; i

{

for (int j=0; j

{

CString ss;

ss.Format("%f", GetElement(i, j));

s += ss;

if (bLineBreak)

{

if (j != m_nNumColumns-1)

s += sDelim;

}

else

{

if (i != m_nNumRows-1 || j !=

m_nNumColumns-1)

s += sDelim;

}

}

if (bLineBreak)

if (i != m_nNumRows-1)

s += "\r\n";

}

return s;

}

// 将矩阵指定行中各元素的值转化为字符串

// 参数:

// 1. int nRow - 指定的矩阵行,nRow = 0表示第一行

// 2. const CString& sDelim - 数字之间的分隔符,默认为空格

// 返回值:CString 型,转换得到的字符串

CString CMatrix::RowToString(int nRow, const CString& sDelim /*= " "*/) const

{

CString s = "";

if (nRow >= m_nNumRows)

return s;

for (int j=0; j

{

CString ss;

ss.Format("%f", GetElement(nRow, j));

s += ss;

if (j != m_nNumColumns-1)

s += sDelim;

}

return s;

}

// 将矩阵指定列中各元素的值转化为字符串

// 参数:

// 1. int nCol - 指定的矩阵行,nCol = 0表示第一列

// 2. const CString& sDelim - 数字之间的分隔符,默认为空格

// 返回值:CString 型,转换得到的字符串

CString CMatrix::ColToString(int nCol, const CString& sDelim /*= " "*/) const

{

CString s = "";

if (nCol >= m_nNumColumns)

return s;

for (int i=0; i

{

CString ss;

ss.Format("%f", GetElement(i, nCol));

s += ss;

if (i != m_nNumRows-1)

s += sDelim;

}

return s;

}

// 设置指定元素的值

// 参数:

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

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

// 3. double value - 指定元素的值

// 返回值:BOOL 型,说明设置是否成功

BOOL CMatrix::SetElement(int nRow, int nCol, double value)

{

if (nCol < 0 || nCol >= m_nNumColumns || nRow < 0

|| nRow >= m_nNumRows)

return FALSE; // array bounds error

if (m_pData == NULL)

return FALSE; // bad pointer error

m_pData[nCol + nRow * m_nNumColumns] = value;

return TRUE;

}

// 设置指定元素的值

// 参数:

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

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

// 返回值:double 型,指定元素的值

double CMatrix::GetElement(int nRow, int nCol) const {

ASSERT(nCol >= 0 && nCol < m_nNumColumns && nRow >= 0 && nRow < m_nNumRows); // array bounds error

ASSERT(m_pData); // bad pointer error

return m_pData[nCol + nRow * m_nNumColumns] ;

}

// 获取矩阵的列数

// 参数:无

// 返回值:int 型,矩阵的列数

int CMatrix::GetNumColumns() const

{

return m_nNumColumns;

}

// 获取矩阵的行数

// 参数:无

// 返回值:int 型,矩阵的行数

int CMatrix::GetNumRows() const

{

return m_nNumRows;

}

// 获取矩阵的数据

// 参数:无

// 返回值:double型指针,指向矩阵各元素的数据缓冲区double* CMatrix::GetData() const

{

return m_pData;

}

// 获取指定行的向量

// 参数:

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

// 2. double* pVector - 指向向量中各元素的缓冲区

// 返回值:int 型,向量中元素的个数,即矩阵的列数

int CMatrix::GetRowVector(int nRow, double* pVector) const

{

if (pVector == NULL)

delete pVector;

pVector = new double[m_nNumColumns];

ASSERT(pVector != NULL);

for (int j=0; j

pVector[j] = GetElement(nRow, j);

return m_nNumColumns;

}

// 获取指定列的向量

// 参数:

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

// 2. double* pVector - 指向向量中各元素的缓冲区

// 返回值:int 型,向量中元素的个数,即矩阵的行数

int CMatrix::GetColVector(int nCol, double* pVector) const

{

if (pVector == NULL)

delete pVector;

pVector = new double[m_nNumRows];

ASSERT(pVector != NULL);

for (int i=0; i

pVector[i] = GetElement(i, nCol);

return m_nNumRows;

}

// 重载运算符=,给矩阵赋值

// 参数:

// 1. const CMatrix& other - 用于给矩阵赋值的源矩阵// 返回值:CMatrix型的引用,所引用的矩阵与other相等

CMatrix& CMatrix::operator=(const CMatrix& other)

{

if (&other != this)

{

BOOL bSuccess = Init(other.GetNumRows(), other.GetNumColumns());

ASSERT(bSuccess);

// copy the pointer

memcpy(m_pData, other.m_pData,

sizeof(double)*m_nNumColumns*m_nNumRows);

}

// finally return a reference to ourselves

return *this ;

}

// 重载运算符==,判断矩阵是否相等

// 参数:

// 1. const CMatrix& other - 用于比较的矩阵

// 返回值:BOOL 型,两个矩阵相等则为TRUE,否则为FALSE BOOL CMatrix::operator==(const CMatrix& other) const {

// 首先检查行列数是否相等

if (m_nNumColumns != other.GetNumColumns() ||

m_nNumRows != other.GetNumRows())

return FALSE;

for (int i=0; i

{

for (int j=0; j

{

if (GetElement(i, j) != other.GetElement(i, j))

return FALSE;

}

}

return TRUE;

}

// 重载运算符!=,判断矩阵是否不相等

// 参数:

// 1. const CMatrix& other - 用于比较的矩阵

// 返回值:BOOL 型,两个不矩阵相等则为TRUE,否则为FALSE

BOOL CMatrix::operator!=(const CMatrix& other) const {

return !(*this == other);

}

// 重载运算符+,实现矩阵的加法

// 参数:

// 1. const CMatrix& other - 与指定矩阵相加的矩阵

// 返回值:CMatrix型,指定矩阵与other相加之和

CMatrix CMatrix::operator+(const CMatrix& other) const

{

// 首先检查行列数是否相等

ASSERT (m_nNumColumns == other.GetNumColumns() && m_nNumRows == other.GetNumRows());

// 构造结果矩阵

CMatrix result(*this) ; // 拷贝构造

// 矩阵加法

for (int i = 0 ; i < m_nNumRows ; ++i)

{

for (int j = 0 ; j < m_nNumColumns; ++j)

result.SetElement(i, j,

result.GetElement(i, j) + other.GetElement(i, j)) ;

}

return result ;

}

// 重载运算符-,实现矩阵的减法

// 参数:

// 1. const CMatrix& other - 与指定矩阵相减的矩阵

// 返回值:CMatrix型,指定矩阵与other相减之差

CMatrix CMatrix::operator-(const CMatrix& other) const

{

// 首先检查行列数是否相等

ASSERT (m_nNumColumns == other.GetNumColumns() && m_nNumRows == other.GetNumRows());

// 构造目标矩阵

CMatrix result(*this) ; // copy ourselves

// 进行减法操作

for (int i = 0 ; i < m_nNumRows ; ++i)

{

for (int j = 0 ; j < m_nNumColumns; ++j)

result.SetElement(i, j,

result.GetElement(i, j) - other.GetElement(i, j)) ;

}

return result ;

}

// 重载运算符*,实现矩阵的数乘

// 参数:

// 1. double value - 与指定矩阵相乘的实数

// 返回值:CMatrix型,指定矩阵与value相乘之积

CMatrix CMatrix::operator*(double value) const

{

// 构造目标矩阵

CMatrix result(*this) ; // copy ourselves

// 进行数乘

for (int i = 0 ; i < m_nNumRows ; ++i)

{

for (int j = 0 ; j < m_nNumColumns; ++j)

result.SetElement(i, j,

result.GetElement(i, j) * value) ;

}

return result ;

}

// 重载运算符*,实现矩阵的乘法

// 参数:

// 1. const CMatrix& other - 与指定矩阵相乘的矩阵

// 返回值:CMatrix型,指定矩阵与other相乘之积

CMatrix CMatrix::operator*(const CMatrix& other) const

{

// 首先检查行列数是否符合要求

ASSERT (m_nNumColumns == other.GetNumRows());

// construct the object we are going to return

CMatrix result(m_nNumRows,

other.GetNumColumns()) ;

// 矩阵乘法,即

// [A][B][C] [G][H] [A*G + B*I + C*K][A*H + B*J + C*L]

// [D][E][F] * [I][J] = [D*G + E*I + F*K][D*H + E*J + F*L]

// [K][L]

double value ;

for (int i = 0 ; i < result.GetNumRows() ; ++i)

{

for (int j = 0 ; j < other.GetNumColumns() ; ++j)

{

value = 0.0 ;

for (int k = 0 ; k < m_nNumColumns ; ++k)

{

value += GetElement(i, k) *

other.GetElement(k, j) ;

}

result.SetElement(i, j, value) ;

}

}

return result ;

}

// 矩阵的转置

// 参数:无

// 返回值:CMatrix型,指定矩阵转置矩阵

CMatrix CMatrix::Transpose() const

{

// 构造目标矩阵

CMatrix Trans(m_nNumColumns, m_nNumRows);

// 转置各元素

for (int i = 0 ; i < m_nNumRows ; ++i)

{

for (int j = 0 ; j < m_nNumColumns ; ++j)

Trans.SetElement(j, i, GetElement(i, j)) ;

}

return Trans;

}

// 实矩阵求逆的全选主元高斯-约当法

// 参数:无

// 返回值:BOOL型,求逆是否成功

BOOL CMatrix::InvertGaussJordan()

{

int *pnRow, *pnCol,i,j,k,l,u,v;

double d = 0, p = 0;

// 分配内存

pnRow = new int[m_nNumColumns];

pnCol = new int[m_nNumColumns];

if (pnRow == NULL || pnCol == NULL)

return FALSE;

// 消元

for (k=0; k<=m_nNumColumns-1; k++)

{

d=0.0;

for (i=k; i<=m_nNumColumns-1; i++)

{

for (j=k; j<=m_nNumColumns-1; j++)

{

l=i*m_nNumColumns+j;

p=fabs(m_pData[l]);

if (p>d)

{

d=p;

pnRow[k]=i;

pnCol[k]=j;

}

}

}

// 失败

if (d == 0.0)

{

delete[] pnRow;

delete[] pnCol;

return FALSE;

}

if (pnRow[k] != k)

{

for (j=0; j<=m_nNumColumns-1; j++)

{

u=k*m_nNumColumns+j;

v=pnRow[k]*m_nNumColumns+j;

p=m_pData[u];

m_pData[u]=m_pData[v];

m_pData[v]=p;

}

}

if (pnCol[k] != k)

{

for (i=0; i<=m_nNumColumns-1; i++)

{

u=i*m_nNumColumns+k;

v=i*m_nNumColumns+pnCol[k];

p=m_pData[u];

m_pData[u]=m_pData[v];

m_pData[v]=p;

}

}

l=k*m_nNumColumns+k;

m_pData[l]=1.0/m_pData[l];

for (j=0; j<=m_nNumColumns-1; j++) {

if (j != k)

{

u=k*m_nNumColumns+j;

m_pData[u]=m_pData[u]*m_pData[l];

}

}

for (i=0; i<=m_nNumColumns-1; i++) {

if (i!=k)

{

for (j=0; j<=m_nNumColumns-1; j++)

{

if (j!=k)

{

u=i*m_nNumColumns+j;

m_pData[u]=m_pData[u]-m_pData[i*m_nNumColumns+k]*m_ pData[k*m_nNumColumns+j];

}

}

}

}

for (i=0; i<=m_nNumColumns-1; i++)

{

if (i!=k)

{

u=i*m_nNumColumns+k;

m_pData[u]=-m_pData[u]*m_pData[l];

}

}

}

// 调整恢复行列次序

for (k=m_nNumColumns-1; k>=0; k--)

{

if (pnCol[k]!=k)

{

for (j=0; j<=m_nNumColumns-1; j++) {

u=k*m_nNumColumns+j;

v=pnCol[k]*m_nNumColumns+j;

p=m_pData[u];

m_pData[u]=m_pData[v];

m_pData[v]=p;

}

}

if (pnRow[k]!=k)

{

for (i=0; i<=m_nNumColumns-1; i++) {

u=i*m_nNumColumns+k;

v=i*m_nNumColumns+pnRow[k];

p=m_pData[u];

m_pData[u]=m_pData[v];

m_pData[v]=p;

}

}

}

// 清理内存

delete[] pnRow;

delete[] pnCol;

// 成功返回

return TRUE;

}

// 对称正定矩阵的求逆

//

// 参数:无

//

// 返回值:BOOL型,求逆是否成功

BOOL CMatrix::InvertSsgj()

{

int i, j ,k, m;

double w, g, *pTmp;

// 临时内存

pTmp = new double[m_nNumColumns];

// 逐列处理

for (k=0; k<=m_nNumColumns-1; k++)

{

w=m_pData[0];

if (w == 0.0)

{

delete[] pTmp;

return FALSE;

}

m=m_nNumColumns-k-1;

for (i=1; i<=m_nNumColumns-1; i++) {

g=m_pData[i*m_nNumColumns];

pTmp[i]=g/w;

if (i<=m)

pTmp[i]=-pTmp[i];

for (j=1; j<=i; j++)

m_pData[(i-1)*m_nNumColumns+j-1]=m_pData[i*m_nNumColumn

s+j]+g*pTmp[j];

}

m_pData[m_nNumColumns*m_nNumColumns-1]=1.0/w;

for (i=1; i<=m_nNumColumns-1; i++)

m_pData[(m_nNumColumns-1)*m_nNumColumns+i-1]=pTmp[i ];

}

// 行列调整

for (i=0; i<=m_nNumColumns-2; i++)

for (j=i+1; j<=m_nNumColumns-1; j++)

m_pData[i*m_nNumColumns+j]=m_pData[j*m_nNumColumns+ i];

// 临时内存清理

delete[] pTmp;

return TRUE;

}

2.创建五个新的对话框。

创建对话框相对来说比较简单,只需在菜单栏中点击New Dialog就可以创建,每个对话框都有自己的ID号。笔者课程设

计中共创建了五个对话框,每个对话框都创建了一个类相对应。

如图给出条件平差和历史记录的对话框的截图:

误差理论与测量平差课程设计任务书、指导书

《误差理论与测量平差》 课程设计任务书 题目:测量控制网严密平差程序设计 时间:12 月9 日至12 月13 日共一周 专业:测绘工程 班级: 学号: 姓名: 指导教师(签字): 院长(签字):

一、设计内容及要求 本设计重点检查同学们利用误差理论与测量平差知识,解决测量控制网平差问题的能力。因此要求同学们任选下面一题独立进行课程设计。 1、水准网严密平差及精度评定 要求:正确应用平差模型列出观测值条件方程、误差方程、法方程和解算法方程,得出平差后的平差值及各待定点的高程平差值,评定各平差值的精度和各高程平差值的精度。 2、边角网(导线)严密平差及精度评定 要求:对存在1-2个结点的导线网采用间接平差模型列出观测值条件方程、误差方程、法方程和解算法方程;正确给出两类观测值的权;得出平差后的平差值及各待定点坐标的平差值,评定各平差值的精度和各坐标的点位精度。 二、设计原始资料 1、水准网严密平差及精度评定示例。 如图所示水准网,有2个已知点,3个未知点,7个测段。各已知数据及观测值见下表(1)已知点高程H1=5.016m H2=6.016m (2)高差观测值(m) 高差观测值(m) 端点号高差观测值测段距离序号 1-3 1.359 1.1 1 1-4 2.009 1.7 2 2-3 0.363 2.3 3

2-4 1.012 2.7 4 3-4 0.657 2.4 5 3-5 0.238 1.4 6 5-2 -0.595 2.6 7 (3)求各待定点的高程;3-4点的高差中误差;3号点、4号点的高程中误差。(提示,本网可采用以测段的高差为平差元素,采用间接平差法编写程序计算。) 2、平面控制网严密平差及精度评定示例。 如图所示控制网中,有2个已知点,4个未知点,14个方向观测值,3个边长观测值,且方向观测值验前中误差为1.2秒,边长观测值固定误差为0.12分米,边长观测值比例误差为零。各已知数据、观测值见下表。 (1) 已知数据 点号 X (m ) Y (m ) 1 121088.500 259894.000 2 127990.100 255874.600 (2) 方向观测值(D.M.S) 测站 照准点 方向值 测站 照准点 方向值 1 2 0.0000 3 72.10284 4 6 0.0000 3 85.13374 2 217.37126 2 4 0.0000

误差理论与测量平差基础

《误差理论与测量平差基础》授课教案 2006~2007第一学期 测绘工程系 2006年9月

课程名称:误差理论与测量平差基础 英文名称: 课程编号:?? 适用专业:测绘工程 总学时数: 56学时其中理论课教学56学时,实验教学学时 总学分:4学分 ◆内容简介 《测量平差》是测绘工程等专业的技术基础课,测量平差的任务是利用含有观测误差的观测值求得观测量及其函数的平差值,并评定其精度。 本课程的主要内容包括误差理论﹑误差分布与精度指标﹑协方差传播律及权﹑平差数学模型与最小二乘原理﹑条件平差﹑附有参数的条件平差﹑间接平差﹑附有限制条件的间接平差﹑线性方程组解算方法﹑误差椭圆﹑平差系统的统计假设检验和近代平差概论等。 ◆教学目的、课程性质任务,与其他课程的关系,所需先修课程 本课程的教学目的是使学生掌握误差理论和测量平差的基本知识、基本方法和基本技能,为后续专业课程的学习和毕业后从事测绘生产打下专业基础。 课程性质为必修课、考试课。 本课程的内容将在测绘工程和地理信息系统专业的专业课程的测量数据处理内容讲授中得到应用,所需先修课程为《高等数学》、《概率与数理统计》、《线性代数》和《测量学》等。 ◆主要内容重点及深度 考虑到专业基础理论课教学应掌握“必须和够用”的原则,结合测绘专业建设的指导思想,教学内容以最小二乘理论为基础,误差理论及其应用、平差基本方法与计算方法,以及平差程序设计及其应用为主线。 测量误差理论,以分析解决工程测量中精度分析和工程设计的技术问题为着眼点,在掌握适当深度的前提下,有针对性的加强基本理论,并与实践结合,突出知识的应用。 平差方法,以条件平差和参数平差的介绍为主,以适应电算平差的参数平差为重点。 计算方法,以介绍适应电子计算机计算的理论、方法为主,建立新的手工计算与计算机求解线性方程组过程相对照的计算方法和计算格式。 平差程序设计及其应用,通过课程设计要求学生利用所学程序设计的知识和平差数学模型编制简单的平差程序,熟练掌握已有平差程序的使用方法。

误差理论及测量平差课程设计报告

- - - n 目录 一、目录----------------------------1 二、序言---------------------------- 2 三、设计思路------------------------ 3 四、程序流程图---------------------- 4 五、程序及说明---------------------- 5 六、计算结果-----------------------12 七、总结--------------------------- 15 第二部分序言 1、课程设计的性质、目的和任务 误差理论与测量平差是一门理论与实践并重的课程,其课程设计是测量数据处理理论学习的一个重要的实践环节,它是在我们学习了专业基础课“误差理论与测量平差基础”课程后进行的一门实践课程。其目的是增强我们对误差理论与测量平差基础理论的理解,牢固掌握测量平差的基本原理和基本公式,熟悉测量数据处理的基本技能和计算方法,灵活准确地应用于解决各类数据处理的实际问题,并能用所学的计算机理论知识,编制简单的计算程序。 2、误差理论与测量平差课程和其它课程的联系和分工 这次课程设计中所用的数学模型和计算方法是我们在误差理论与测量平差课程中所学的内容,所使用的C程序语言使我们在计算机基础课程中所学知识。误差理论与测量平差课程设计是测量平差和计算机程序设计等课程的综合实践与应用,同时也为我们今后步入工作岗位打下了一定基础。 3、课程设计重点及内容 本次课程设计重点是培养我们正确应用公式、综合分析和解决问题的能力,以及计算机编程能力。另外它要求我们完成1-2个综合性的结合生产实践的题目。如目前生产实践中经常用到的水准网严密平差及精度评定,边角网(导线)严密平差及精度评定等。此次我所选的课程设计课题是水准网严密平差及精度评定,其具体内容如下: 根据题目要求,正确应用平差模型列出观测值条件方程、误差方程和法方程;解算法方程,得出平差后的平差值及各待定点的高程平差值;评定各平差值的精度和各高程平差值的精度。 具体算例为: 如图所示水准网,有2个已知点,3个未知点,7个测段。各已知数据及观测值见下表(1)已知点高程H1=5.016m ,H2=6.016m (2)高差观测值(m)

误差理论与数据处理实验报告

误差理论与数据处理 实验报告 姓名:小叶9101 学号:小叶9101 班级:小叶9101 指导老师:小叶

目录 实验一误差的基本概念 实验二误差的基本性质与处理 实验三误差的合成与分配 实验四线性参数的最小二乘法处理实验五回归分析 实验心得体会

实验一误差的基本概念 一、实验目的 通过实验了解误差的定义及表示法、熟悉误差的来源、误差分类以及有效数字与数据运算。 二、实验原理 1、误差的基本概念:所谓误差就是测量值与真实值之间的差,可以用下式表示 误差=测得值-真值 1、绝对误差:某量值的测得值和真值之差为绝对误差,通常简称为误差。 绝对误差=测得值-真值 2、相对误差:绝对误差与被测量的真值之比称为相对误差,因测得值与 真值接近,故也可以近似用绝对误差与测得值之比值作为相对误差。 相对误差=绝对误差/真值≈绝对误差/测得值 2、精度 反映测量结果与真值接近程度的量,称为精度,它与误差大小相对应,因此可以用误差大小来表示精度的高低,误差小则精度高,误差大则精度低。 3、有效数字与数据运算 含有误差的任何近似数,如果其绝对误差界是最末位数的半个单位,那么从这个近似数左方起的第一个非零的数字,称为第一位有效数字。从第一位有效数字起到最末一位数字止的所有数字,不论是零或非零的数字,都叫有效数字。 数字舍入规则如下: ①若舍入部分的数值,大于保留部分的末位的半个单位,则末位加1。 ②若舍去部分的数值,小于保留部分的末位的半个单位,则末位加1。 ③若舍去部分的数值,等于保留部分的末位的半个单位,则末位凑成偶数。即当末位为偶数时则末位不变,当末位为奇数时则末位加1。 三、实验内容 1、用自己熟悉的语言编程实现对绝对误差和相对误差的求解。 2、按照数字舍入规则,用自己熟悉的语言编程实现对下面数据保留四位有效数字进行凑整。 原有数据 3.14159 2.71729 4.51050 3.21551 6.378501 舍入后数据

误差理论与数据处理 实验报告

《误差理论与数据处理》实验指导书 姓名 学号 机械工程学院 2016年05月

实验一误差的基本性质与处理 一、实验内容 1.对某一轴径等精度测量8次,得到下表数据,求测量结果。 Matlab程序: l=[24.674,24.675,24.673,24.676,24.671,24.678,24.672,24.674];%已知测量值 x1=mean(l);%用mean函数求算数平均值 disp(['1.算术平均值为:',num2str(x1)]); v=l-x1;%求解残余误差 disp(['2.残余误差为:',num2str(v)]); a=sum(v);%求残差和 ah=abs(a);%用abs函数求解残差和绝对值 bh=ah-(8/2)*0.001;%校核算术平均值及其残余误差,残差和绝对值小于n/2*A,bh<0,故以上计算正确 if bh<0 disp('3.经校核算术平均值及计算正确'); else disp('算术平均值及误差计算有误'); end xt=sum(v(1:4))-sum(v(5:8));%判断系统误差(算得差值较小,故不存在系统误差) if xt<0.1 disp(['4.用残余误差法校核,差值为:',num2str(x1),'较小,故不存在系统误差']); else disp('存在系统误差'); end bz=sqrt((sum(v.^2)/7));%单次测量的标准差 disp(['5.单次测量的标准差',num2str(bz)]);

p=sort(l);%用格罗布斯准则判断粗大误差,先将测量值按大小顺序重新排列 g0=2.03;%查表g(8,0.05)的值 g1=(x1-p(1))/bz; g8=(p(8)-x1)/bz;%将g1与g8与g0值比较,g1和g8都小于g0,故判断暂不存在粗大误差if g1

测量平差课程设计指导书word文档

《误差理论与测量平差》课程设计指导书 (测绘工程专业) 2011年6月

《误差理论与测量平差》课程设计指导书 适用专业:测绘工程 学分数:1 学时数:1周 1.设计的目的 《测量平差》是一门理论与实践并重的课程,测量平差课程设计是测量数据处理理论学习的一个重要实践环节,是在学生学习了专业基础理论课《误差理论与测量平差基础》课程后进行的一门实践课程,其目的是增强学生对测量平差基础理论的理解,牢固掌握测量平差的基本原理和公式,熟悉测量数据处理的基本原理和方法,灵活准确地应用于解决各类数据处理的实际问题,并能用所学的计算机基础知识,编制简单的计算程序。 2.设计的任务 (1)该课的课程设计安排在理论学习结束之后进行的,主要是平面控制网和高程控制网严密平差,时间为一周。 (2)通过课程设计,培养学生运用本课程基本理论知识和技能,分析和解决本课程范围内的实际工程问题的能力,加深对课程理论的理解与应用。 (3)在指导老师的指导下,要求每个学生独立完成本课程设计的全部内容。

3.课程设计要求 3.1基本要求: 测量平差课程设计要求每一个学生必须遵守课程设计的具体项目的要求,独立完成设计内容,并上交设计报告。在学习知识、培养能力的过程中,树立严谨、求实、勤奋、进取的良好学风。 课程设计前学生应认真复习教材有关内容和《测量平差》课程设计指导书,务必弄清基本概念和本次课程设计的目的、要求及应注意的事项,以保证保质保量的按时完成设计任务。 3.2具体设计项目内容及要求: 3.2.1高程控制网严密平差及精度评定 总体思路:现有等级水准网的全部观测数据及网型、起算数据。要求对该水准网,分别用条件、间接两种方法进行严密平差,并进行平差模型的正确性检验。 水准网的条件平差: ①列条件平差值方程、改正数条件方程、法方程; ②利用自编计算程序解算基础方程,求出观测值的平 差值、待定点的高程平差值; ③评定观测值平差值的精度和高程平差值的精度。 ④进行平差模型正确性的假设检验。 水准网的间接平差: ①列观测值平差值方程、误差方程、法方程; ②利用自编计算程序解算基础方程,求出观测值的平

大学物理实验报告数据处理及误差分析

篇一:大学物理实验1误差分析 云南大学软件学院实验报告 课程:大学物理实验学期: - 学年第一学期任课教师: 专业: 学号: 姓名: 成绩: 实验1 误差分析 一、实验目的 1. 测量数据的误差分析及其处理。 二、实验内容 1.推导出满足测量要求的表达式,即 0? (?)的表达式; 0= (( * )/ (2*θ)) 2.选择初速度A,从[10,80]的角度范围内选定十个不同的发射角,测量对应的射程, 记入下表中: 3.根据上表计算出字母A 对应的发射初速,注意数据结果的误差表示。 将上表数据保存为A. ,利用以下程序计算A对应的发射初速度,结果为100.1 a =9.8 _ =0 =[] _ = ("A. "," ") _ = _ . ad ()[:-1] = _ [:]. ('\ ') _ = _ . ad ()[:-1] = _ [:]. ('\ ') a (0,10): .a d( a . ( a ( [ ])* / a . (2.0* a ( [ ])* a . /180.0))) _

+= [ ] 0= _ /10.0 0 4.选择速度B、C、D、重复上述实验。 B C 6.实验小结 (1) 对实验结果进行误差分析。 将B表中的数据保存为B. ,利用以下程序对B组数据进行误差分析,结果为 -2.84217094304 -13 a =9.8 _ =0 1=0 =[] _ = ("B. "," ") _ = _ . ad ()[:-1] = _ [:]. ('\ ') _ = _ . ad ()[:-1] = _ [:]. ('\ ') a (0,10): .a d( a . ( a ( [ ])* / a . (2.0* a ( [ ])* a . /180.0))) _ += [ ] 0= _ /10.0 a (0,10): 1+= [ ]- 0 1/10.0 1 (2) 举例说明“精密度”、“正确度”“精确度”的概念。 1. 精密度 计量精密度指相同条件测量进行反复测量测值间致(符合)程度测量误差角度说精密度所 反映测值随机误差精密度高定确度(见)高说测值随机误差定其系统误差亦。 2. 正确度 计量正确度系指测量测值与其真值接近程度测量误差角度说正确度所反映测值系统误差 正确度高定精密度高说测值系统误差定其随机误差亦。 3. 精确度 计量精确度亦称准确度指测量测值间致程度及与其真值接近程度即精密度确度综合概念 测量误差角度说精确度(准确度)测值随机误差系统误差综合反映。 比如说系统误差就是秤有问题,称一斤的东西少2两。这个一直恒定的存在,谁来都是 这样的。这就是系统的误差。随机的误差就是在使用秤的方法。 篇二:数据处理及误差分析 物理实验课的基本程序

《误差理论与测量平差基础》试卷A(答案)

《误差理论与测量平差基础》期末考试试题A(参考答案) 一、名词解释(每题2分,共10分) 1、偶然误差 ——在相同的观测条件系作一系列的观测,如果误差在大小和符号上都表现出偶然性。即从单个误差看,该误差的大小和符号没有规律性,但就大量误差的总体而言,具有一定的统计规律。这种误差称为偶然误差。 2、函数模型线性化 ——在各种平差模型中,所列出的条件方程或观测方程,有的是线性形式,有的是非线性形式。在进行平差计算时,必须首先把非线性形式的函数方程按台劳公式展开,取至一次项,转换成线性方程。这一转换过程,称之为函数模型的线性化。 3、点位误差椭圆 ——以点位差的极大值方向为横轴X 轴方向,以位差的极值F E 、分别为椭圆的长、短半轴,这样形成的一条椭圆曲线,即为点位误差椭圆。 4、协方差传播律 ——用来阐述观测值的函数的中误差与观测值的中误差之间的运算规律的数学公式。如 0K KL Z +=,若观测向量的协方差阵为LL D ,则按协方差传播律,应有T LL ZZ K KD D =。 5、权 ——表示各观测值方差之间比例关系的数字特征,220 i i P σσ=。 二、判断正误(只判断)(每题1分,共10分) 参考答案:X √X √X X X √√X 三、选择题(每题3分,共15分) 参考答案:CCDCC 四.填空题(每空3分,共15分) 参考答案:1. 6个 2. 13个 3.1/n 4. 0.4 5. 0) () () () (432 00 2 0=''+?+?+-''+ -''- W y S X X x S Y Y C AC A C C AC A C ρρ,其中 AB A C A C X X Y Y W αββ-++--=''4300arctan 五、问答题(每题4分,共12分) 1. 几何模型的必要元素与什么有关?必要元素数就是必要观测数吗?为什么? 答:⑴几何模型的必要元素与决定该模型的内在几何规律有关;(1分) ⑵必要元素数就是必要观测数;(1分) ⑶几何模型的内在规律决定了要确定该模型,所必须具备的几何要素,称为必要元素,必要元素的个数,称为必要元素数。实际工程中为了确定该几何模型,所必须观测的要素个数,称为必要观测数,

误差理论与大数据处理实验报告材料

标准文档 误差理论与数据处理 实验报告 姓名:黄大洲 学号:3111002350 班级:11级计测1班 指导老师:陈益民

实验一 误差的基本性质与处理 一、实验目的 了解误差的基本性质以及处理方法 二、实验原理 (1)算术平均值 对某一量进行一系列等精度测量,由于存在随机误差,其测得值皆不相同,应以全部测得值的算术平均值作为最后的测量结果。 1、算术平均值的意义:在系列测量中,被测量所得的值的代数和除以n 而得的值成为算术平均值。 设 1l ,2l ,…,n l 为n 次测量所得的值,则算术平均值 121...n i n i l l l l x n n =++==∑ 算术平均值与真值最为接近,由概率论大数定律可知,若测量次数无限增加,则算术平均值x 必然趋近于真值0L 。 i v = i l -x i l ——第i 个测量值,i =1,2,...,;n i v ——i l 的残余误差(简称残差) 2、算术平均值的计算校核 算术平均值及其残余误差的计算是否正确,可用求得的残余误差代数和性质来校核。 残余误差代数和为: 1 1 n n i i i i v l nx ===-∑∑ 当x 为未经凑整的准确数时,则有:1 n i i v ==∑0 1)残余误差代数和应符合:

当 1n i i l =∑=nx ,求得的x 为非凑整的准确数时,1 n i i v =∑为零; 当 1 n i i l =∑>nx ,求得的x 为凑整的非准确数时,1 n i i v =∑为正;其大小为求x 时 的余数。 当 1 n i i l =∑

成都理工误差实验报告数据处理

实验报告 实验工作者:杜华学号:201206020108 实验日期:2014年3月31号实验名称:实验一:生产过程监控图的编制 实验目的:本实验通过对某化工厂正常生产过程中120次Hgcl2浓度的测定数据。 编制对生产过程中Hgcl2浓度的监控图,以保证最终产品质量。通 过本实验,让同学们一起理解误差的理论与意义,学会编制生产过 程监控图的方法 实验原理:一般情况下,很多工程测量与生产过程的参数值都是服从正态分布的随机变量,例如利用正常电子仪器在相同条件下对同一物理量重复 测量所获得的数据;化工生产过程中正常的浓度、温度值等等。因 此,我们可以依据服从正态分布的随机变量所具有特征,来实现对 这些测量值、或生产过程中的参数值“是否正常”的判断。这就是我 们建立监控图的基本思想。从这个意义上说,已经建立的监控图实际是一把 尺子,我们可以用它来度量每一个测量数据或生产参数是否正常。 根据正态分布理论,正常的测量值或生产过程中的参数值落入平均 值加减一倍,两倍,三倍均方差区间的理论概率值应该分别等于 68.26%,95.44%,99.73%;当我们只进行有限次测量时,获取数据 如果是正常的,超出平均值加减三倍均方差的区间可能性几乎是0。 因此,一旦检测数据超过平均值加减三倍均方差区间,我们就可以 判定,其为不正常数据,预示着生产过程出了问题,需进行调整从 而实现监控目的 实验设备:按有excel软件的电脑 实验步骤: 1.依据5.1.1所测量数据,统计平均值和标准差;

2.按平均值加减一倍,两倍,三倍标准差编制质量监控图; 3.将5.1.2监测数据标绘在所编监控图上: 4.分析6.1-6.11时间段中生产过程是否正常。 按三倍标准差理论,上午有五个数据不正常,它们分别是0.64,0.65,0.94,0.98 ,0.99

测量平差课程设计报告

设计报告 设计名称:测量平差课程设计学院名称:测绘工程学院 专业班级:测绘11-3班 学生姓名:邹云龙 学号: 20110242 指导教师:周秋生 黑龙江工程学院教务处制 2013年6月

注:1、在此页后附实习报告、总结。其内容应包括:实习目的、实习内容及实习结果等项目。 2、此页为封皮,用A4幅面纸正反面打印。 3、实习总结使用A4幅面纸张书写或打印,并附此页后在左侧一同装订。 4、实习成绩以优(90~100)、良(80~89)、中(70~79)、及格(60~69)、不及格(60以下)五 个等级评定。

目录 一、水准网观测精度设计 (4) 二、水准网、测角网、边角网平差计算 (6) 1、水准网平差计算 (6) 2、测角网平差计算 (8) 3、边角网平差计算 (12)

一、设计目的 在学完误差理论与测量平差基础课程后,在掌握了测量数据处理基本理论、基本知识、基本方法的基础上,根据设计任务,熟悉自动平差软件的应用,通过实例计算,提高用电子计算机进行相关测量数据处理的能力,在此基础上通过测量程序设计提高用高级语言进行简单测量程序设计的能力。 二、设计任务 (1)水准网观测精度设计 根据所给控制网的形状和高程平差值的点位中误差要求,推求水准高差观测的精度要求。 (2)利用已有平差软件完成下述平差计算任务 1)熟悉前方交会与后方交会计算 分别自选1至2个前后方交会计算实例进行平差计算,熟悉程序使用方法。 2)水准网平差计算 3)导线网平差计算 4)测角网平差计算 分别自选1个水准网、测角网和边角网计算实例进行平差计算,要求每个学生的计算题目不能重复。 建议使用的数据处理软件:测量控制网自动平差系统,黑龙江工程学院,2002年版;平差易,南方测绘,2002年或2005年版。使用指导书见相应电子版文件。 (3)编制测量计算程序 仿照已有测量程序的设计界面和程序计算管理功能,在测角(测边)前方交会与后方交会计算程序、单一符合、闭合水准网平差计算程序、单一符合、闭合导线平差计算程序设计选题中选择一至两项内容进行程序设计,设计使用的语言可采用VB、C、C#等。参考书可选测绘出版社出版,葛永会编《测量程序设计》,和黑志坚等编著的《测量平差》教材,以及针对所使用语言的相关程序设计书籍。 三、设计内容 (一)、水准网观测精度设计 4、水准网如下图所示,各观测高差的路线长度相同。

误差理论实验报告3

《误差理论与数据处理》实验报告实验名称:动态测试数据处理初步一、实验目的 动态数据是动态测试研究的重要容。通过本实验要求学生掌握有关动态数据分析。评价的基本方法,为后续课程做好准备。 二、实验原理 三、实验容和结果 1.程序及流程 1.认识确定性信号及其傅立叶频谱之间的关系 1.用matlab编程画出周期方波信号及其傅立叶频谱,并说明其 傅立叶频谱的特点。 >> fs=30; >> T=1/fs; >> t=0:T:2*pi; >> A=2;P=4; >> y=A*square(P*t); >> subplot(2,1,1),plot(t,y) >> title('方波信号') >> Fy=abs(fft(y,512)); >> f2=fs*(0:256)/512; >> subplot(2,1,2),plot(f2,Fy(1:257)) >> title('频谱图'); >> set(gcf,'unit','normalized','position',[0 0 1 1]); >> set(gca,'xtick',0:0.6:8); >> axis([0,8,0 300]);

2.用matlab边城画出矩形窗信号的宽度分别为T=1和T=5两种 情况下的时域波形图及其频谱,并分析时域与频域的变化关系。 wlp = 0.35*pi; whp = 0.65*pi; wc = [wlp/pi,whp/pi]; window1= boxcar(1); window2=boxcar(5); [h1,w]=freqz(window1,1); [h2,w]=freqz(window2,5); subplot(411); stem(window1); axis([0 60 0 1.2]); title('矩形窗函数(T=1)'); subplot(413); stem(window2); axis([0 60 0 1.2]); grid; xlabel('n'); title('矩形窗函数(T=5)'); subplot(412); plot(w/pi,20*log(abs(h1)/abs(h1(1)))); xlabel('w/pi'); ylabel('幅度(dB)'); title('矩形窗函数的频谱(T=1)'); subplot(414); plot(w/pi,20*log(abs(h2)/abs(h2(5)))); axis([0 1 -350 0]); grid; xlabel('w/pi'); ylabel('幅度(dB)'); title('矩形窗函数的频谱(T=5)'); 2.认识平稳随机过程自相关函数及其功率谱之间的关系 已知某随机过程x(t)的相关函数为:Rx(t)=e?α|τ|cosω0τ,画出下列两种情况下的自相关函数和功率谱函数。 1.取α=1,ω0=2π?10; 2.取α=5,ω0=2π?10; 程序:>> t=0:0.01:1;

安徽工业大学误差实验报告

实验一 误差的基本性质与处理 一、实验目的 了解误差的基本性质以及处理方法 二、实验原理 (1)正态分布 设被测量的真值为0L ,一系列测量值为i L ,则测量列中的随机误差i δ为 i δ=i L -0L (2-1) 式中i=1,2,…..n. 正态分布的分布密度()()2 22f δσδ -= (2-2) 正态分布的分布函数()()22 2F e d δδσδδ --∞=(2-3) 式中σ-标准差(或均方根误差); 它的数学期望为 ()0E f d δδδ+∞ -∞==? (2-4) 它的方差为 ()22f d σδδδ+∞ -∞=? (2-5) (2)算术平均值 对某一量进行一系列等精度测量,由于存在随机误差,其测得值皆不相同,应以全部测得值的算术平均值作为最后的测量结果。 1、算术平均值的意义 在系列测量中,被测量所得的值的代数和除以n 而得的值成为算术平均值。 设 1l ,2l ,…,n l 为n 次测量所得的值,则算术平均值121...n i n i l l l l x n n =++==∑ 算术平均值与真值最为接近,由概率论大数定律可知,若测量次数无限增加,则算术平均值x 必然趋近于真值0L 。

i v = i l -x i l ——第i 个测量值,i =1,2,...,;n i v ——i l 的残余误差(简称残差) 2、算术平均值的计算校核 算术平均值及其残余误差的计算是否正确,可用求得的残余误差代数和性质来校核。 残余误差代数和为: 11n n i i i i v l nx ===-∑∑ 当x 为未经凑整的准确数时,则有 1n i i v ==∑0 1)残余误差代数和应符合: 当1 n i i l =∑=nx ,求得的x 为非凑整的准确数时,1n i i v =∑为零; 当1 n i i l =∑>nx ,求得的x 为凑整的非准确数时,1n i i v =∑为正;其大小为求x 时的余数。 当1n i i l =∑

《测量程序设计课程设计》指导书-2015

测量数据处理程序设计指导书 设计名称:测量数据处理程序设计 计划周数:2周 适用对象:测绘工程专业本科 先修课程:测量学,测量平差基础,大地控制测量,测量程序设计 一、设计目的 测量数据处理程序设计是学生在系统学习完大地控制测量学、测量平差基础、测量程序设计等相关课程之后,为了系统理解控制网平差的整体过程及综合运用科学工具而安排的。通过课程设计主要达到以下几个目的:掌握控制网平差课程设计具体内容、方法和步骤;通过理论联系实际,进一步巩固已学到的专业理论知识,并加深对理论的认识;培养学生对编写代码,上机调试和编写说明书等基本技能;锻炼学生阅读各类编程参考书籍及加以编程运用的能力。 二、设计内容及日程 在VB、 VC软件或matlab科学计算软件的平台上,选择的具体课程设计题目,进行程序设计与实现,共计10个工作日,工作程序如下: 三、设计的组织: 1.设计领导 (1)指导教师:由教研室指派教师、实验员兼任。

职责:全面组织设计大纲的实施,完成分管工作及相关技术指导。 (2)设计队长:学生班长兼任。 职责:协助教师做好本班学生的人员组织工作。 (3)设计组长:每组一人。 职责:组织执行下达的设计任务,安排组内各成员的工作分工。 2.设计分组 学生实习作业组由3~4人组成(含组长一人)。 四、设计内容 在VB、VC或MATLAB 软件平台上,按选择的设计题目进行相关程序开发 1、闭合导线简易平差、附合导线简易平差支导线计算 2、闭合水准网计算、附合水准网简易平差 3、地形图编号(新、旧两种方法) 4、误差椭圆的参数的计算与绘制误差椭圆 5、水准网严密平差 6、高斯正反算计算 7、高斯投影换带计算 8、七参数大地坐标转换(WGS84-bj54坐标转换、WGS84-CGCS2000坐标转换) 9、四参数坐标转换(西安80-bj54坐标转换、CGCS2000-bj54坐标转换、CGCS2000-西安80坐 标转换(平面) 10、大地高转换为正常高的计算 11、工程投影变形超限的处理 12、遥感图像数据处理 13、曲线(曲面)拟合 14、摄影测量空间后方交会 15、****管理信息系统设计与开发 五、上交成果 1) 小组利用vb、vc或matlab编写的软件包一个及测试数据一份 2)小组关于所开发程序设计说明书一份 3) 个人课程设计的心得一份 4)小组答辩PPT一份

误差测量实验报告

误差测量与处理课程实验 报告 学生姓名:学号: 学院: 专业年级: 指导教师: 年月

实验一 误差的基本性质与处理 一、实验目的 了解误差的基本性质以及处理方法。 二、实验原理 (1)正态分布 设被测量的真值为0L ,一系列测量值为i L ,则测量列中的随机误差i δ为 i δ=i L -0L (2-1) 式中i=1,2,…..n. 正态分布的分布密度 ()() 2 2 21 f e δ σδσπ -= (2-2) 正态分布的分布函数 ()()2 2 21 F e d δ δ σδδσπ --∞ =? (2-3) 式中σ-标准差(或均方根误差); 它的数学期望为 ()0 E f d δδδ+∞ -∞ ==? (2-4) 它的方差为 ()22f d σδδδ +∞ -∞ =? (2-5) (2)算术平均值 对某一量进行一系列等精度测量,由于存在随机误差,其测得值皆不相同,应以全部测得值的算术平均值作为最后的测量结果。 1、算术平均值的意义 在系列测量中,被测量所得的值的代数和除以n 而得的值成为算术平均值。

设 1l ,2l ,…,n l 为n 次测量所得的值,则算术平均值 121...n i n i l l l l x n n =++= =∑ 算术平均值与真值最为接近,由概率论大数定律可知,若测量次数无限增加,则算术平均值x 必然趋近于真值0L 。 i v = i l -x i l ——第i 个测量值,i =1,2,...,;n i v ——i l 的残余误差(简称残差) 2、算术平均值的计算校核 算术平均值及其残余误差的计算是否正确,可用求得的残余误差代数和性质来校核。 残余误差代数和为: 1 1 n n i i i i v l nx ===-∑∑ 当x 为未经凑整的准确数时,则有 1 n i i v ==∑0 1)残余误差代数和应符合: 当 1n i i l =∑=nx ,求得的x 为非凑整的准确数时,1n i i v =∑为零; 当 1n i i l =∑>nx ,求得的x 为凑整的非准确数时,1n i i v =∑为正;其大小为求x 时的余数。 当 1n i i l =∑

误差理论与测量平差基础试卷

长沙理工大学考试试卷 …………………………………………………………………………………………………………………………… 试卷编号 1 拟题教研室(或教师)签名 范志勇 系主任签名 …………………………………………………………………………………………………………………………… 课程名称(含档次) 误差理论与测量平差基础 课程代号 0809021 专 业 测绘工程 层次(本、专) 本 考试方式(开、闭卷) 闭 一、 正误判断(正确“T ”,错误“F ”每题1分,共10 分)。 1.已知两段距离的长度及中误差分别为128.286m ±4.5cm 与218.268m ±4.5cm ,则其真误差与精度均相同( )。 2.如果X 与Y 的协方差0xy σ=,则其不相关( )。 3.水准测量中,按公式i i c p s = (i s 为水准路线长)来定权,要求每公里高差精度相同( )。 4.可用误差椭圆来确定待定点与待定点之间的某些精度指标( )。 5.在某一平差问题中,观测数为n ,必要观测数为t ,参数个数u <t 且不独立,则该平差问题可采用附有参数的条件平差的函数模型。( )。 6.由于同一平差问题采用不同的平差方法得到的结果不同,因此为了得到最佳平差结果,必须谨慎选择平差方法( )。 7.根据公式() 222220 cos sin 0360E F θσθθθ=+≤≤得到的曲线就是误差椭圆( )。 8.对于特定的平面控制网,如果按间接平差法解算,则误差方程的个数是一定的( )。 9.对于同一个观测值来说,若选定一定权常数0σ,则权愈小,其方差愈小,其精度愈高( )。 10.设观测值向量,1 n L 彼此不独立,其权为() 1,2 ,,i P i n = ,12(,,,)n Z f L L L = ,则有 2 221122111 1Z n n f f f P L P L P L P ?????????=+++ ? ? ?????????? ( )。 二、填空题(每空2分,共24分)。 1、设对某三角网进行同精度观测,得三角形角度闭合差分别为:3秒,-3秒,2秒,4秒,-2秒,-1秒,0秒,-4秒,3秒,-2秒,则测角中误差为 秒。 2、某平差问题函数模型)(I Q =为?? ?????=-=--=+-+=--0?0306051 54431 2 1x v v v v v v v v ,则该函数模型为 平差方法的模型;=n ,=t ,=r ,=c ,=u 。

误差理论与测量平差课程设计报告

n 目录 一、目录 ----------------------------1 二、序言 ---------------------------- 2 三、设计思路------------------------ 3 四、程序流程图---------------------- 4 五、程序及说明---------------------- 5 六、计算结果-----------------------12 七、总结 --------------------------- 15 第二部分序言 1、课程设计的性质、目的和任务 误差理论与测量平差是一门理论与实践并重的课程,其课程设计是测量数据处理理论学习的一个重 要的实践环节,它是在我们学习了专业基础课“误差理论与测量平差基础”课程后进行的一门实践课程。其 目的是增强我们对误差理论与测量平差基础理论的理解,牢固掌握测量平差的基本原理和基本公式,熟悉测量数据处理的基本技能和计算方法,灵活准确地应用于解决各类数据处理的实际问题,并能用所学的计算机理论知识,编制简单的计算程序。 2、误差理论与测量平差课程和其它课程的联系和分工 这次课程设计中所用的数学模型和计算方法是我们在误差理论与测量平差课程中所学的内容,所使用的 C 程序语言使我们在计算机基础课程中所学知识。误差理论与测量平差课程设计是测量平差和计算机程 序设计等课程的综合实践与应用,同时也为我们今后步入工作岗位打下了一定基础。 3、课程设计重点及内容 本次课程设计重点是培养我们正确应用公式、综合分析和解决问题的能力,以及计算机编程能力。 另外它要求我们完成1-2 个综合性的结合生产实践的题目。如目前生产实践中经常用到的水准网严密平差 及精度评定,边角网(导线)严密平差及精度评定等。此次我所选的课程设计课题是水准网严密平差及精度 评定,其具体内容如下: 根据题目要求,正确应用平差模型列出观测值条件方程、误差方程和法方程;解算法方程,得出平差后 的平差值及各待定点的高程平差值;评定各平差值的精度和各高程平差值的精度。 具体算例为: 如图所示水准网,有 2 个已知点, 3 个未知点,(1)已知点高程H1=5.016m , H2=6.016m 7 个测段。各已知数据及观测值见下表( 2)高差观测值 (m)

精密形位误差的测试与数据处理实验报告讲解

实验一用合像水平仪测量1500?500平板的平面度 一、实验目的 1. 了解合像水平仪的结构和工作原理。 2. 加深对平面度定义的理解。 3. 掌握用水平仪测量平板平面度方法及测量数据处理。 4.掌握平面度的判定标准及数据处理方法。 二、实验内容 用合像水平仪测量平板平面度误差。 三、实验仪器及器材 合像水平仪,标准平面平板、桥板。 四、测量原理 1. 合像水平仪的使用原理 1-底板;2-杠杆;3-支承;4-壳体;5-支承架;6-放大镜; 7-棱镜;8-水准器;9-微分筒;10-测微螺杆;11-放大镜;12-刻线尺 图1-1 合像水平仪 合像水平仪是一种精密测角仪器,用自然水平面为测量基准。合像水平仪的结构见图1-1,它的水准器8是一个密封的玻璃管,管内注入精镏乙醚,并留有一定量的空气,以形成气泡,管的内壁在长度方向具有一定的曲率半径。气泡在管中停住时,气泡的位

置必然垂直于重力方向。就是说,当水平仪倾斜时,气泡本身并不倾斜,而始终保持水平位置。利用这个原理,将水平仪放在桥板上使用,便能测出实际被测直线上相距一个桥板跨距的两点间高度差,如图1-2所示。 I-桥板;Ⅱ-水平仪;Ⅲ-实际被测直线;L-桥板跨距;0,1,2,…,n-测点序号 图1-2用水平仪测量直线度误差时的示意图 在水准器玻璃管管长的中部,从气泡的边缘开始向两端对称地按弧度值(mm/m)刻有若干条等距刻线。水平仪的分度值i用[角]秒和mm/m表示。合像水平仪的分度值为2",该角度相当于在1m长度上,对边高0.01mm的角度,这时分度值也用0.01mm/m 或0.01/1000表示。 测量时,合像水平仪水准器8中的气泡两端经棱镜7反射的两半像从放大镜6观察。当桥板两端相对于自然水平面无高度差时,水准器8处于水平位置。则气泡在水准器8的中央,位于棱镜7两边的对称位置上,因此从放大镜6看到的两半像相合(如图1—3(a)所示)。如果桥板两端相对于自然水平面有高度差,则水平仪倾斜一个角度α,因此,气泡不在水准器8的中央,从放大镜6看到的两半像是错开的(如图1—3(b)所示),产生偏移量△。 (a)相合 (b)错开 图1-3 气泡的两半像 为了确定气泡偏移量A的数值,转动测微螺杆10使水准器8倾斜一个角度α,以使气泡返回到棱镜7两边的对称位置上。从放大镜中观察到气泡的两半像恢复成图1-3(a)所示相合的两半像。偏移量A先从放大镜11由刻线尺12读数,它反映测微螺杆

相关文档
最新文档