文档库 最新最全的文档下载
当前位置:文档库 › DLT 直接线性变换解法程序

DLT 直接线性变换解法程序

DLT 直接线性变换解法程序
DLT 直接线性变换解法程序

DLT 直接线性变换解法程序介绍

一、程序综合介绍:DLT结算程序

程序功能介绍:应用6个已知点计算左右片l 系数;然后应用已经求得的l系数求解物方空间坐标系坐标

程序名:SuYGDLT

程序界面:

程序界面有四个按钮,分别为读取文件,左片l系数计算,右片系数计算,物放坐标解算程序界面有四个编辑框,分别用来输出文件信息,左片l系数、右片l系数、以及无妨坐标结果

截图如下

程序使用介绍:

必须先点击导入文件按钮,导入文件方可进行正确的计算,如果未导入文件就点击左片平差或右片平差或无妨坐标解算就会弹出如下对话框:

读取数据后点击其它按钮进行其它计算。

程序文件格式:

数据文件分为两部分,KnownPoint,UNKnownPoint,分别代表已知点信息和待求点信息当文件读取程序读到“KnownPoint”时开始读取已知点信息,已知点信息格式如下

GCP1,1214.0000,1032.0000,1046.5180,1071.6652,9.201742,-9.672384,-2.726064

分别代表点名、左片相片X坐标、左片相片y坐标、右片相片x坐标、右片相片y坐标物方坐标X、Y、Z;

当文件读取到“END KnownPoint”时结束已知坐标的读取

待求点信息类似:文件格式截图如下:

程序运行结果与评估:

本程序区1-10号点作为已知点计算l近似值11-20号点作为未知点解求其物方三维坐标;

程序运行结果与所给参考值相似,应该可以证明其运算是正确的,运行结果截图如下:

二、程序编程思想及相关代码

程序编程思想及相关函数:

本程序设计DLTCalculation类作为l系数结算主程序,其成员变量及成员函数与作用介绍如下:

CSuLMatrix LL;//左片L系数矩阵

CSuLMatrix RL;//右片L系数矩阵

int m_iKnownPointCount;//已知点个数

CControlPoint *m_pKnownPoint;//已知点

int m_iUnKnownPointCount;//未知点个数

CControlPoint *m_pUnKnownPoint;//未知点

public:

CString LoadData(const CString& strFileName);//读取文件函数

int ifLoda;//判断是否导入数据

CString Datainfor;//文件信息存储

CString *SplitString(CString str,char split, int& iSubStrs); //分割函数

void LFormApproL(CSuLMatrix &LL);//计算左片L系数近似值

void RFormApproL(CSuLMatrix &RL);//计算右片L系数近似值

void FormLErrorEquations(CSuLMatrix LL,CMatrix &LM,CMatrix &LW);//组成左片系数矩阵和常数项矩阵

void LAdjust();//左片平差主函数

void FormRErrorEquations(CSuLMatrix RL,CMatrix &RM,CMatrix &RW);//组成右片系数矩阵和常数项矩阵

void RAdjust();//右片平差主函数

void Output(const CString& strFileName);//输出结果主程序

void OutMatrixToFile(const CMatrix& mat,CStdioFile& SF);//输出矩阵总程序

另外设计类qianfangjiaohui作为结算物放坐标解算主程序其成员变量与成员函数及其作用介绍如下:

void FormApproCoor( DLTCalculation &R);//计算无妨坐标近似值

void FormErrorEquations(DLTCalculation &R,CMatrix &N,CMatrix &Q);//解求系数矩阵

void Adjust(DLTCalculation &R);//平差计算物放坐标

程序详细代码粘贴如下:

以下为类DLTCalculation.cpp文件详细内容:

#include"StdAfx.h"

#include"DLTCalculation.h"

#include

#include"SuLMatrix.h"

DLTCalculation::DLTCalculation(void)

{

ifLoda=0;

}

DLTCalculation::~DLTCalculation(void)

{

}

CString* DLTCalculation::SplitString(CString str,char split, int& iSubStrs)

{

int iPos = 0; //分割符位置

int iNums = 0; //分割符的总数

CString strTemp = str;

CString strRight;

//先计算子字符串的数量

while (iPos != -1)

{

iPos = strTemp.Find(split);

if (iPos == -1)

{

break;

}

strRight = strTemp.Mid(iPos + 1, str.GetLength());

strTemp = strRight;

iNums++;

}

if (iNums == 0) //没有找到分割符

{

//子字符串数就是字符串本身

iSubStrs = 1;

return NULL;

}

//子字符串数组

iSubStrs = iNums + 1; //子串的数量= 分割符数量+ 1

CString* pStrSplit;

pStrSplit = new CString[iSubStrs];

strTemp = str;

CString strLeft;

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

{

iPos = strTemp.Find(split);

//左子串

strLeft = strTemp.Left(iPos);

//右子串

strRight = strTemp.Mid(iPos + 1, strTemp.GetLength());

strTemp = strRight;

pStrSplit[i] = strLeft;

}

pStrSplit[iNums] = strTemp;

return pStrSplit;

}

CString DLTCalculation::LoadData(const CString& strFileName)

{

ifLoda=1;

CString strputdata;//用于保存观测文件的字符串

CStdioFile sf;//创建文件对象

setlocale(LC_ALL,""); //设置语言环境

if(!sf.Open(strFileName, CFile::modeRead)) return _T("文件打开失败");;//以读的形式打来文件,如果打开失败则返回

CString strLine;

int n;

CString *strTmp=NULL;

do

{

sf.ReadString (strLine);

strputdata+=strLine;

strputdata+=_T("\r\n");

}while(strLine!="KnownPoint");

Datainfor=strputdata;

if(strLine=="KnownPoint")//读取已知数据

while(strLine!=_T("END KnownPoint"))

{

sf.ReadString (strLine);

strputdata+=strLine;

strputdata+=_T("\r\n");

if(strLine!=_T("END KnownPoint"))

{

strTmp = SplitString(strLine, ',',n);

}

else

break;

if(strTmp[0]=="KnownPointCount")

{

m_iKnownPointCount=_ttoi(strTmp[1]);

m_pKnownPoint=new CControlPoint[m_iKnownPointCount];

if(strTmp!=NULL)//释放内存

{

delete[] strTmp;

strTmp=NULL;

}

for(int i=0;i

{

sf.ReadString (strLine);

strputdata+=strLine;

strputdata+=_T("\r\n");

strTmp = SplitString(strLine, ',',n);

m_pKnownPoint[i].strName =strTmp[0];

m_pKnownPoint[i].Lx =_tstof(strTmp[1]);

m_pKnownPoint[i].Ly =_tstof(strTmp[2]);

m_pKnownPoint[i].Rx =_tstof(strTmp[3]);

m_pKnownPoint[i].Ry =_tstof(strTmp[4]);

m_pKnownPoint[i].X =_tstof(strTmp[5]);

m_pKnownPoint[i].Y =_tstof(strTmp[6]);

m_pKnownPoint[i].Z =_tstof(strTmp[7]);

if(strTmp!=NULL)//释放内存

{

delete[] strTmp;

strTmp=NULL;

}

}

}

}

sf.ReadString (strLine);

strputdata+=strLine;

strputdata+=_T("\r\n");

if(strLine=="UnknownPoint")//读取未知数据

{

while(strLine!=_T("END UnknownPoint"))

{

sf.ReadString (strLine);

strputdata+=strLine;

strputdata+=_T("\r\n");

if(strLine!=_T("END UnknownPoint"))

{

strTmp = SplitString(strLine, ',',n);

}

else

break;

if(strTmp[0]=="UnknownPointCount")

{

m_iUnKnownPointCount=_ttoi(strTmp[1]);

m_pUnKnownPoint=new CControlPoint[m_iUnKnownPointCount];

if(strTmp!=NULL)//释放内存

{

delete[] strTmp;

strTmp=NULL;

}

for(int i=0;i

{

sf.ReadString (strLine);

strputdata+=strLine;

strputdata+=_T("\r\n");

strTmp = SplitString(strLine, ',',n);

m_pUnKnownPoint[i].strName =strTmp[0];

m_pUnKnownPoint[i].Lx =_tstof(strTmp[1]);

m_pUnKnownPoint[i].Ly =_tstof(strTmp[2]);

m_pUnKnownPoint[i].Rx =_tstof(strTmp[3]);

m_pUnKnownPoint[i].Ry =_tstof(strTmp[4]);

if(strTmp!=NULL)//释放内存

{

delete[] strTmp;

strTmp=NULL;

}

}

}

}

}

sf.Close ();

return strputdata;

}

void DLTCalculation::LFormApproL(CSuLMatrix &LL)//计算左片L系数近似值

{

CMatrix LX(11,1);

CMatrix LB(11,11);

CMatrix Lf(11,1);

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

{

LB(2*i,0) = LB(2*i+1,4) = m_pKnownPoint[i].X*1000;

LB(2*i,1) = LB(2*i+1,5) = m_pKnownPoint[i].Y*1000;

LB(2*i,2) = LB(2*i+1,6) = m_pKnownPoint[i].Z*1000;

LB(2*i,3) = LB(2*i+1,7) = 1;

LB(2*i,4) = LB(2*i,5) = LB(2*i,6) = LB(2*i,7) = LB(2*i+1,0) = LB(2*i+1,1) = LB(2*i+1,2) = LB(2*i+1,3) = 0;

LB(2*i,8) = m_pKnownPoint[i].Lx * m_pKnownPoint[i].X*1000;

LB(2*i,9) = m_pKnownPoint[i].Lx * m_pKnownPoint[i].Y*1000;

LB(2*i,10) = m_pKnownPoint[i].Lx * m_pKnownPoint[i].Z*1000;

LB(2*i+1,8) = m_pKnownPoint[i].Ly * m_pKnownPoint[i].X*1000;

LB(2*i+1,9) = m_pKnownPoint[i].Ly * m_pKnownPoint[i].Y*1000;

LB(2*i+1,10) = m_pKnownPoint[i].Ly * m_pKnownPoint[i].Z*1000;

}

LB(10,0) = m_pKnownPoint[5].X*1000;

LB(10,1) = m_pKnownPoint[5].Y*1000;

LB(10,2) = m_pKnownPoint[5].Z*1000;

LB(10,3) = 1;

LB(10,4) = LB(10,5) = LB(10,6) = LB(10,7) = 0;

LB(10,8) = m_pKnownPoint[5].Lx * m_pKnownPoint[5].X*1000;

LB(10,9) = m_pKnownPoint[5].Lx * m_pKnownPoint[5].Y*1000;

LB(10,10) = m_pKnownPoint[5].Lx * m_pKnownPoint[5].Z*1000;

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

{

Lf(2*i,0) = m_pKnownPoint[i].Lx;

Lf(2*i+1,0) = m_pKnownPoint[i].Ly;

}

Lf(10,0) = m_pKnownPoint[5].Lx;

LX = (-1)*(LB.Inv())*Lf;

LL.l1 = LX(0,0);LL.l2 = LX(1,0);LL.l3 = LX(2,0);LL.l4 = LX(3,0);

LL.l5 = LX(4,0);LL.l6 = LX(5,0);LL.l7 = LX(6,0);LL.l8 = LX(7,0);

LL.l9 = LX(8,0);LL.l10 = LX(9,0);LL.l11 = LX(10,0);

}

void DLTCalculation::RFormApproL(CSuLMatrix &RL)//计算右片L系数近似值

{

CMatrix RX(11,1);

CMatrix RB(11,11);

CMatrix Rf(11,1);

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

{

RB(2*i,0) = RB(2*i+1,4) = m_pKnownPoint[i].X*1000;

RB(2*i,1) = RB(2*i+1,5) = m_pKnownPoint[i].Y*1000;

RB(2*i,2) = RB(2*i+1,6) = m_pKnownPoint[i].Z*1000;

RB(2*i,3) = RB(2*i+1,7) = 1;

RB(2*i,4) = RB(2*i,5) = RB(2*i,6) = RB(2*i,7) = RB(2*i,7) = RB(2*i+1,0) = RB(2*i+1,1) = RB(2*i+1,2) = RB(2*i+1,3) = 0;

RB(2*i,8) = m_pKnownPoint[i].Rx * m_pKnownPoint[i].X*1000;

RB(2*i,9) = m_pKnownPoint[i].Rx * m_pKnownPoint[i].Y*1000;

RB(2*i,10) = m_pKnownPoint[i].Rx * m_pKnownPoint[i].Z*1000;

RB(2*i+1,8) = m_pKnownPoint[i].Ry * m_pKnownPoint[i].X*1000;

RB(2*i+1,9) = m_pKnownPoint[i].Ry * m_pKnownPoint[i].Y*1000;

RB(2*i+1,10) = m_pKnownPoint[i].Ry * m_pKnownPoint[i].Z*1000;

}

RB(10,0) = m_pKnownPoint[5].X*1000;

RB(10,1) = m_pKnownPoint[5].Y*1000;

RB(10,2) = m_pKnownPoint[5].Z*1000;

RB(10,3) = 1;

RB(10,4) = RB(10,5) = RB(10,6) = RB(10,7) = 0;

RB(10,8) = m_pKnownPoint[5].Rx * m_pKnownPoint[5].X*1000;

RB(10,9) = m_pKnownPoint[5].Rx * m_pKnownPoint[5].Y*1000;

RB(10,10) = m_pKnownPoint[5].Rx * m_pKnownPoint[5].Z*1000;

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

{

Rf(2*i,0) = m_pKnownPoint[i].Rx;

Rf(2*i+1,0) = m_pKnownPoint[i].Ry;

}

Rf(10,0) = m_pKnownPoint[5].Rx;

RX = (-1)*(RB.Inv())*Rf;

RL.l1 = RX(0,0);RL.l2 = RX(1,0);RL.l3 = RX(2,0);RL.l4 = RX(3,0);

RL.l5 = RX(4,0);RL.l6 = RX(5,0);RL.l7 = RX(6,0);RL.l8 = RX(7,0);

RL.l9 = RX(8,0);RL.l10 = RX(9,0);RL.l11 = RX(10,0);

}

void DLTCalculation::FormLErrorEquations(CSuLMatrix LL,CMatrix &LM,CMatrix &LW)//组成左片系数矩阵和常数项矩阵

{

LM.SetSize(2*m_iUnKnownPointCount,12);

LW.SetSize(2*m_iUnKnownPointCount,1);

//LFormApproL(LL);

double A;

double x0,y0;

double r;

for(int i=0;i

{

A = LL.l9 * m_pKnownPoint[i].X * 1000 + LL.l10 * m_pKnownPoint[i].Y * 1000 + LL.l1 *

m_pKnownPoint[i].Z * 1000 + 1;

x0 = (-1)*(LL.l1 * LL.l9 + LL.l2 * LL.l10 + LL.l3 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

y0 = (-1)*(LL.l5 * LL.l9 + LL.l6 * LL.l10 + LL.l7 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

r = sqrt((m_pKnownPoint[i].Lx-x0)*(m_pKnownPoint[i].Lx-x0) +

(m_pKnownPoint[i].Ly-y0)*(m_pKnownPoint[i].Ly-y0));

LM(2*i,0) = LM(2*i+1,4) = (-1)*m_pKnownPoint[i].X * 1000 /A;

LM(2*i,1) = LM(2*i+1,5) = (-1)*m_pKnownPoint[i].Y * 1000 /A;

LM(2*i,2) = LM(2*i+1,6) = (-1)*m_pKnownPoint[i].Z * 1000 /A;

LM(2*i,3) = LM(2*i+1,7) = (-1)*1/A;

LM(2*i,4) = LM(2*i,5) = LM(2*i,6) = LM(2*i,7) = LM(2*i+1,0) = LM(2*i+1,1) = LM(2*i+1,2) = LM(2*i+1,3) = 0;

LM(2*i,8) = (-1)*m_pKnownPoint[i].Lx * m_pKnownPoint[i].X* 1000 /A;

LM(2*i,9) = (-1)*m_pKnownPoint[i].Lx * m_pKnownPoint[i].Y* 1000 /A;

LM(2*i,10) = (-1)*m_pKnownPoint[i].Lx * m_pKnownPoint[i].Z* 1000 /A;

LM(2*i,11) = (-1)*(m_pKnownPoint[i].Lx - x0) * r * r;

LM(2*i+1,8) = (-1)*m_pKnownPoint[i].Ly * m_pKnownPoint[i].X* 1000 /A;

LM(2*i+1,9) = (-1)*m_pKnownPoint[i].Ly * m_pKnownPoint[i].Y* 1000 /A;

LM(2*i+1,10) = (-1)*m_pKnownPoint[i].Ly * m_pKnownPoint[i].Z* 1000 /A;

LM(2*i+1,11) = (-1)*(m_pKnownPoint[i].Ly - y0) * r * r;

LW(2*i,0) = (-1)*m_pKnownPoint[i].Lx/A;

LW(2*i+1,0) = (-1)*m_pKnownPoint[i].Ly/A;

}

}

void DLTCalculation::OutMatrixToFile(const CMatrix& mat,CStdioFile& SF) {

CString strLine,strTmp;

for(int i=0;i

{

strLine.Empty();

for(int j=0;j

{

strTmp.Format(_T("%.4f "),mat(i,j));

strLine=strLine+strTmp;

}

SF.WriteString(strLine+_T("\r\n"));

}

}

void DLTCalculation::LAdjust()//左片平差主函数

{

CMatrix LM(2*m_iUnKnownPointCount,12);

CMatrix LW(2*m_iUnKnownPointCount,1);

CMatrix LNbb(12,12);

CMatrix LNvv(12,1);

CMatrix LV(12,1);

int Ln = 0;

CString strputdata;

double x0,y0;

double A,B,C;

double fx;

double x00,y00;

double A0,B0,C0;

double fx0;

double dfx;

LFormApproL(LL);

x00 = (-1)*(LL.l1 * LL.l9 + LL.l2 * LL.l10 + LL.l3 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

y00 = (-1)*(LL.l5 * LL.l9 + LL.l6 * LL.l10 + LL.l7 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

A0 = (LL.l1 * LL.l1 + LL.l2 * LL.l2 + LL.l3 * LL.l3)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 *

LL.l11)-x00*x00;

B0 = (LL.l5 * LL.l5 + LL.l6 * LL.l6 + LL.l7 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 *

LL.l11)-y00*y00;

C0 = (LL.l1 * LL.l5 + LL.l2 * LL.l6 + LL.l3 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 *

LL.l11)-x00*y00;

fx0 = sqrt((A0*B0-C0*C0)/B0);

/*do

{

FormLErrorEquations(LL,LM,LW);

LNbb=(~LM)*LM;

LNvv=(~LM)*LW;

LV=(LNbb.Inv())*LNvv;

LL.l1=LV(0,0);LL.l2=LV(1,0);LL.l3=LV(2,0);LL.l4=LV(3,0);

LL.l5=LV(4,0);LL.l6=LV(5,0);LL.l7=LV(6,0);LL.l8=LV(7,0);

LL.l9=LV(8,0);LL.l10=LV(9,0);LL.l11=LV(10,0);

x0 = (-1)*(LL.l1 * LL.l9 + LL.l2 * LL.l10 + LL.l3 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

y0 = (-1)*(LL.l5 * LL.l9 + LL.l6 * LL.l10 + LL.l7 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

A = (LL.l1 * LL.l1 + LL.l2 * LL.l2 + LL.l3 * LL.l3)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11)-x0*x0;

B = (LL.l5 * LL.l5 + LL.l6 * LL.l6 + LL.l7 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11)-y0*y0;

C = (LL.l1 * LL.l5 + LL.l2 * LL.l6 + LL.l3 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11)-x0*y0;

fx = sqrt((A*B-C*C)/B);

dfx = fx - fx0;

fx0 = fx;

Ln++;

}while(fabs(dfx)>0.01);*/

}

void DLTCalculation::Output(const CString& strFileName)

{

CStdioFile SF;

CString strLine;

setlocale(LC_ALL,"");

if(!SF.Open(strFileName, CFile::modeCreate|CFile::modeWrite)) return;

//开始写数据

SF.WriteString(_T("结果输出:\n"));

SF.WriteString(_T("---------空间后方交汇----------\n"));

CMatrix LM(2*m_iKnownPointCount,12);

CMatrix LW(2*m_iKnownPointCount,1);

CMatrix LNbb(12,12);

CMatrix LNvv(12,1);

CMatrix LV(12,1);

int Ln = 0;

CString strputdata;

double x0,y0;

double A,B,C;

double fx;

double x00,y00;

double A0,B0,C0;

double fx0;

double dfx;

LFormApproL(LL);

x00 = (-1)*(LL.l1 * LL.l9 + LL.l2 * LL.l10 + LL.l3 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

y00 = (-1)*(LL.l5 * LL.l9 + LL.l6 * LL.l10 + LL.l7 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

A0 = (LL.l1 * LL.l1 + LL.l2 * LL.l2 + LL.l3 * LL.l3)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 *

LL.l11)-x00*x00;

B0 = (LL.l5 * LL.l5 + LL.l6 * LL.l6 + LL.l7 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 *

LL.l11)-y00*y00;

C0 = (LL.l1 * LL.l5 + LL.l2 * LL.l6 + LL.l3 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 *

LL.l11)-x00*y00;

fx0 = sqrt((A0*B0-C0*C0)/B0);

/*do

{*/

FormLErrorEquations(LL,LM,LW);

LNbb=(~LM)*LM;

LNvv=(~LM)*LW;

OutMatrixToFile(LM,SF);

/*LV=LNbb.Inv();*/

/*LV=(LNbb.Inv())*LNvv;*/

/*LL.l1+=LV(0,0);LL.l2+=LV(1,0);LL.l3+=LV(2,0);LL.l4+=LV(3,0);

LL.l5+=LV(4,0);LL.l6+=LV(5,0);LL.l7+=LV(6,0);LL.l8+=LV(7,0);

LL.l9+=LV(8,0);LL.l10+=LV(9,0);LL.l11+=LV(10,0);

x0 = (-1)*(LL.l1 * LL.l9 + LL.l2 * LL.l10 + LL.l3 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

y0 = (-1)*(LL.l5 * LL.l9 + LL.l6 * LL.l10 + LL.l7 * LL.l11)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11);

A = (LL.l1 * LL.l1 + LL.l2 * LL.l2 + LL.l3 * LL.l3)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11)-x0*x0;

B = (LL.l5 * LL.l5 + LL.l6 * LL.l6 + LL.l7 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11)-y0*y0;

C = (LL.l1 * LL.l5 + LL.l2 * LL.l6 + LL.l3 * LL.l7)/(LL.l9 * LL.l9 + LL.l10 * LL.l10 + LL.l11 * LL.l11)-x0*y0;

fx = sqrt((A*B-C*C)/B);

dfx = fx - fx0;

fx0 = fx;

Ln++;*/

////}while(fabs(dfx)>0.01);

CString putdata;

putdata.Format(_T("%s\r\n"),_T("左片结果"));

strputdata+=putdata;

putdata.Format(_T("%s\r\n"),_T("L系数为:"));

strputdata+=putdata;

putdata.Format(_T("%s%.5f\r\n%s%.5f\r\n%s%.5f\r\n%s%.5f\r\n%s%.5f\r\n%s%.5f\r\n%s%.5f\r\n%s%.5f\r \n%s%.5f\r\n%s%.5f\r\n%s%.5f\r\n"),

_T("l1 = "),LL.l1,_T("l2 = "),LL.l2,_T("l3 = "),LL.l3,_T("l4 = "),LL.l4,_T("l5 = "),LL.l5,_T("l6 = "),LL.l6,

_T("l7 = "),LL.l7,_T("l8 = "),LL.l8,_T("l9 = "),LL.l9,_T("l10 = "),LL.l10,_T("l11 = "),LL.l11);

strputdata+=putdata;

SF.WriteString(strputdata);

//putdata.Format(_T("%s%d\r\n"),_T("迭代次数为:"),Ln);

///*strputdata+=putdata;*/

}

void DLTCalculation::RAdjust()//右片平差主函数

{

CMatrix RM(2*m_iKnownPointCount,12);

CMatrix RW(2*m_iKnownPointCount,1);

CMatrix RNbb(12,12);

CMatrix RNvv(12,1);

CMatrix RV(12,1);

int Rn = 0;

CString strputdata;

double x0,y0;

double A,B,C;

double fx;

double x00,y00;

double A0,B0,C0;

double fx0;

double dfx;

RFormApproL(RL);

//x00 = (-1)*(RL.l1 * RL.l9 + RL.l2 * RL.l10 + RL.l3 * RL.l11)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11);

//y00 = (-1)*(RL.l5 * RL.l9 + RL.l6 * RL.l10 + RL.l7 * RL.l11)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11);

//A0 = (RL.l1 * RL.l1 + RL.l2 * RL.l2 + RL.l3 * RL.l3)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11)-x00*x00;

//B0 = (RL.l5 * RL.l5 + RL.l6 * RL.l6 + RL.l7 * RL.l7)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11)-y00*y00;

//C0 = (RL.l1 * RL.l5 + RL.l2 * RL.l6 + RL.l3 * RL.l7)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11)-x00*y00;

//fx0 = sqrt((A0*B0-C0*C0)/B0);

///*do*/

//{

// FormRErrorEquations(RL,RM,RW);

// RNbb = (~RM)*RM;

// RNvv = (~RM)*RW;

///* RV = (RNbb.Inv())*RNvv;*/

// //RL.l1+=RV(0,0);RL.l2+=RV(1,0);RL.l3+=RV(2,0);RL.l4+=RV(3,0);

// //RL.l5+=RV(4,0);RL.l6+=RV(5,0);RL.l7+=RV(6,0);RL.l8+=RV(7,0);

// //RL.l9+=RV(8,0);RL.l10+=RV(9,0);RL.l11+=RV(10,0);

x0 = (-1)*(RL.l1 * RL.l9 + RL.l2 * RL.l10 + RL.l3 * RL.l11)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11);

y0 = (-1)*(RL.l5 * RL.l9 + RL.l6 * RL.l10 + RL.l7 * RL.l11)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11);

A = (RL.l1 * RL.l1 + RL.l2 * RL.l2 + RL.l3 * RL.l3)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11)-x0*x0;

B = (RL.l5 * RL.l5 + RL.l6 * RL.l6 + RL.l7 * RL.l7)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11)-y0*y0;

C = (RL.l1 * RL.l5 + RL.l2 * RL.l6 + RL.l3 * RL.l7)/(RL.l9 * RL.l9 + RL.l10 * RL.l10 + RL.l11 * RL.l11)-x0*y0;

/* fx = sqrt((A*B-C*C)/B);

dfx = fx - fx0;

fx0 = fx;

Rn++;*/

//}/*while(abs(dfx)>0.01);*/

//

}

类qianfangjiaohui 的cpp文件代码粘贴如下:

#include"StdAfx.h"

#include"qianfangjiaohui.h"

qianfangjiaohui::qianfangjiaohui(void)

{

}

qianfangjiaohui::~qianfangjiaohui(void)

{

}

void qianfangjiaohui::FormApproCoor(DLTCalculation &R)

{

CMatrix A(3,3);

CMatrix f(3,1);

CMatrix X(3,1);

for(int i=0;i

{

A(0,0) = R.LL.l1 + R.m_pUnKnownPoint[i].Lx * R.LL.l9;

A(0,1) = R.LL.l2 + R.m_pUnKnownPoint[i].Lx * R.LL.l10;

A(0,2) = R.LL.l3 + R.m_pUnKnownPoint[i].Lx * R.LL.l11;

A(1,0) = R.LL.l5 + R.m_pUnKnownPoint[i].Ly * R.LL.l9;

A(1,1) = R.LL.l6 + R.m_pUnKnownPoint[i].Ly * R.LL.l10;

A(1,2) = R.LL.l7 + R.m_pUnKnownPoint[i].Ly * R.LL.l11;

A(2,0) = R.RL.l1 + R.m_pUnKnownPoint[i].Rx * R.RL.l9;

A(2,1) = R.RL.l2 + R.m_pUnKnownPoint[i].Rx * R.RL.l10;

A(2,2) = R.RL.l3 + R.m_pUnKnownPoint[i].Rx * R.RL.l11;

f(0,0) = R.LL.l4 + R.m_pUnKnownPoint[i].Lx;

f(1,0) = R.LL.l8 + R.m_pUnKnownPoint[i].Ly;

f(2,0) = R.RL.l4 + R.m_pUnKnownPoint[i].Rx;

X = (-1)*(A.Inv())*f;

R.m_pUnKnownPoint[i].X = X(0,0)/1000;

R.m_pUnKnownPoint[i].Y = X(1,0)/1000;

R.m_pUnKnownPoint[i].Z = X(2,0)/1000;

}

}

void qianfangjiaohui::FormErrorEquations(DLTCalculation &R,CMatrix &N,CMatrix &Q)

{

N.SetSize(4,3);

Q.SetSize(4,1);

double LA,RA;

for(int i=0;i

{

LA=R.LL.l9*R.m_pUnKnownPoint[i].X+R.LL.l10*R.m_pUnKnownPoint[i].Y+R.LL.l11*R.m_pUnKnown Point[i].Z+1;

RA=R.RL.l9*R.m_pUnKnownPoint[i].X+R.RL.l10*R.m_pUnKnownPoint[i].Y+R.RL.l11*R.m_pUnKnow nPoint[i].Z+1;

N(0,0) = (-1) * (R.LL.l1 + R.LL.l9 * R.m_pUnKnownPoint[i].Lx) / LA;

N(0,1) = (-1) * (R.LL.l2 + R.LL.l10 * R.m_pUnKnownPoint[i].Lx) / LA;

N(0,2) = (-1) * (R.LL.l3 + R.LL.l11 * R.m_pUnKnownPoint[i].Lx) / LA;

N(1,0) = (-1) * (R.LL.l5 + R.LL.l9 * R.m_pUnKnownPoint[i].Ly) / LA;

N(1,1) = (-1) * (R.LL.l6 + R.LL.l10 * R.m_pUnKnownPoint[i].Ly) / LA;

N(1,2) = (-1) * (R.LL.l7 + R.LL.l11 * R.m_pUnKnownPoint[i].Ly) / LA;

N(2,0) = (-1) * (R.RL.l1 + R.RL.l9 * R.m_pUnKnownPoint[i].Rx) / RA;

N(2,1) = (-1) * (R.RL.l2 + R.RL.l10 * R.m_pUnKnownPoint[i].Rx) / RA;

N(2,2) = (-1) * (R.RL.l3 + R.RL.l11 * R.m_pUnKnownPoint[i].Rx) / RA;

N(3,0) = (-1) * (R.RL.l5 + R.RL.l9 * R.m_pUnKnownPoint[i].Ry) / RA;

N(3,1) = (-1) * (R.RL.l6 + R.RL.l10 * R.m_pUnKnownPoint[i].Ry) / RA;

N(3,2) = (-1) * (R.RL.l7 + R.RL.l11 * R.m_pUnKnownPoint[i].Ry) / RA;

Q(0,0) = (-1) * (R.LL.l4 + R.m_pUnKnownPoint[i].Lx);

Q(1,0) = (-1) * (R.LL.l8 + R.m_pUnKnownPoint[i].Ly);

Q(2,0) = (-1) * (R.RL.l4 + R.m_pUnKnownPoint[i].Rx);

Q(3,0) = (-1) * (R.RL.l8 + R.m_pUnKnownPoint[i].Ry);

}

}

void qianfangjiaohui::Adjust(DLTCalculation &R)

{

double d1,d2,d3;

double m;

CMatrix N(4,3);

CMatrix Q(4,1);

CMatrix Nbb(3,3);

CMatrix Nvv(3,1);

CMatrix S(3,1);

int n=0;

FormApproCoor(R);

for(int i=0;i

{

/* do*/

{

/*FormErrorEquations(R,N,Q);

Nbb=(~N)*N;

Nvv=(~N)*Q;

S=(-1)*(Nbb.Inv())*Nvv;

m=S(0,0);

d1=S(0,0)-R.m_pUnKnownPoint[i].X;

d2=S(1,0)-R.m_pUnKnownPoint[i].Y;

d3=S(2,0)-R.m_pUnKnownPoint[i].Z;

R.m_pUnKnownPoint[i].X=S(0,0);

R.m_pUnKnownPoint[i].Y=S(1,0);

R.m_pUnKnownPoint[i].Z=S(2,0);

n++;*/

}/*while(fabs(d1)>1||fabs(d2)>1||fabs(d3)>1);*/

}

}

实验所需txt 文件粘贴如下:

SuYongGang 010*******

2015 05 01

KnownPoint

KnownPointCount,10

GCP1,1214.0000,1032.0000,1046.5180,1071.6652,9.201742,-9.672384,-2.726064 GCP2,1378.0000,508.0000,1167.8218,541.4734,8.653967,-8.226455,-5.483531 GCP3,605.0000,1527.0000,391.3034,1573.4119,6.175121,-11.003152,0.227490 GCP4,1468.0000,361.0000,1262.5994,388.2626,9.004163,-7.857839,-6.448011 GCP5,940.0000,1264.0000,719.0428,1310.4186,7.206690,-9.863228,-1.122442 GCP6,1204.0000,563.0000,990.1780,606.6536,7.986264,-8.928340,-5.054990 GCP7,554.0000,1158.0000,348.4338,1217.2070,5.888988,-11.267342,-1.584110 GCP8,1972.0000,1455.0000,1781.7030,1481.7072,10.951923,-5.749235,-0.276650 GCP9,1013.0000,739.0000,797.4695,790.9252,7.321597,-9.658292,-3.954598 GCP10,2814.0000,1057.0000,2745.6122,1035.4548,14.760180,-1.714839,-2.804178 END KnownPoint

UnknownPoint

UnknownPointCount,10

ID,Lx,Ly,Lz,Rx,Ry,Rz

1,1411.0000,319.0000,1209.0579,350.2777

2,1495.0000,297.0000,1296.0357,322.2619

3,1348.0000,475.0000,1140.2866,510.6109

4,2500.0000,717.0000,2380.9077,688.0562

5,342.0000,442.0000,165.1718,540.6719

6,2217.0000,954.0000,2059.9866,951.8440 7,1356.0000,578.0000,1147.8519,612.7434 8,1398.0000,574.0000,1190.8740,606.4662 9,1234.0000,1032.0000,1066.8420,1070.8535 10,1481.0000,577.0000, 1276.1857,604.2876 END UnknownPoint

双线性变换法设计数字低通滤波器概要

燕山大学 课程设计说明书 题目:双线性变换法设计数字低通滤波器 学院(系):电气工程学院 年级专业:检测 学号: 学生姓名:沫沫 指导教师:王娜 教师职称:讲师

电气工程学院《课程设计》任务书 课程名称:数字信号处理课程设计 说明:1、此表一式四份,系、指导教师、学生各一份,报送院教务科一份。 2、学生那份任务书要求装订到课程设计报告前面。 电气工程学院教务科

目录 第一章绪论 (4) 第二章用双线性变换法设计低通滤波器的主要原理 (5) 2.1 双线性变换法 (5) 2.1.1 双线性变换法的基本原理 (5) 2.1.2 转换关系分析 (6) 2.2 巴特沃斯低通滤波器原理 (9) 第三章用双线性变换法设计低通滤波器步骤 (11) 第四章 MATLAB程序 (11) 第五章程序中命令介绍 (13) 第六章运行结果及波形 (14) 第七章结果分析 (16) 第八章心得体会 (17) 参考文献 (18)

第一章 绪论 数字滤波器是对数字信号实现滤波的线性时不变系统。数字滤波实质上是一种运算过程,实现对信号的运算处理。输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为是一台计算机。描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提供运算规则,使其按照这个规则完成对输入数 据的处理。时域离散系统的频域特性:)()()(ωωωj j j e H e X e Y =,其中)(ω j e Y 、 )(ωj e X 分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特 性),)(ωj e H 是数字滤波器的单位取样响应的频谱,又称为数字滤波器的频域响 应。输入序列的频谱)(ωj e X 经过滤波后)()(ω ωj j e H e X ,因此,只要按照输入信号频谱的特点和处理信号的目的, 适当选择)(ωj e H ,使得滤波后的) ()(ω ωj j e H e X 满足设计的要求,这就是数字滤波器的滤波原理。 数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器的特征是,具有无限持续时间冲激响应,需要用递归模型来实现,其差分方程为: ∑∑==-+-=N i i N i i i n y b i n x a n y 1 )()()( 系统函数为: 计IIR 滤波器的任务就是寻求一个物理上可实现的系统函数H(z),使其频率 响应H(z)满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。 ∑ ∑=-=-+= N k k k M r r r Z a Z b z H 1 01)(

数字信号处理期末试卷(含答案)

一、 填空题(每题2分,共10题) 1、 1、 对模拟信号(一维信号,是时间的函数)进行采样后,就是 信号,再 进行幅度量化后就是 信号。 2、 2、 )()]([ω j e X n x FT =,用)(n x 求出)](Re[ω j e X 对应的序列 为 。 3、序列)(n x 的N 点DFT 是)(n x 的Z 变换在 的N 点等间隔采样。 4、)()(5241n R x n R x ==,只有当循环卷积长度L 时,二者的循环卷积等于线性卷积。 5、用来计算N =16点DFT ,直接计算需要_________ 次复乘法,采用基2FFT 算法,需要________ 次复乘法,运算效率为__ _ 。 6、FFT 利用 来减少运算量。 7、数字信号处理的三种基本运算是: 。 8、FIR 滤波器的单位取样响应)(n h 是圆周偶对称的,N=6, 3)3()2(2 )4()1(5.1)5()0(======h h h h h h ,其幅度特性有什么特性? ,相位有何特性? 。 9、数字滤波网络系统函数为 ∑=--= N K k k z a z H 111)(,该网络中共有 条反馈支路。 10、用脉冲响应不变法将)(s H a 转换为)(Z H ,若)(s H a 只有单极点k s ,则系统)(Z H 稳定的条件是 (取s T 1.0=)。 二、 选择题(每题3分,共6题) 1、 1、 )6 3()(π-=n j e n x ,该序列是 。 A.非周期序列 B.周期 6π = N C.周期π6=N D. 周期π2=N 2、 2、 序列 )1()(---=n u a n x n ,则)(Z X 的收敛域为 。 A. a Z < B. a Z ≤ C. a Z > D. a Z ≥ 3、 3、 对)70()(≤≤n n x 和)190()(≤≤n n y 分别作20点DFT ,得)(k X 和)(k Y , 19,1,0),()()(Λ=?=k k Y k X k F ,19,1,0)],([)(Λ==n k F IDFT n f , n 在 范围内时,)(n f 是)(n x 和)(n y 的线性卷积。 A.70≤≤n B.197≤≤n C.1912≤≤n D.190≤≤n 4、 4、 )()(101n R n x =,) ()(72n R n x =,用DFT 计算二者的线性卷积,为使计算量尽可 能的少,应使DFT 的长度N 满足 。 A.16>N B.16=N C.16

浅谈高中数学线性变换的解题技巧

浅谈高中数学线性变换的解题技巧 在新课改之后,要求高中生不仅要学会灵活运用学科基础知识解决问题,还要利用课余时间学习自身兴趣的知识点,使得每个人都能得到全面发展和锻炼。高中线性变换虽然作为选修章节,但是其所蕴含的内容是衔接高中与大学的关键点,掌握线性变换的基础知识也就是提前了解和学习了大学所要接触的高等数学知识模块,即矩阵问题。因此,笔者立足于高中选修的重要知识点——线性变换,先阐述其概念及性质,然后来探究如何巧妙解决高中数学中线性变换的难题,从而为初等数学过渡到高等数学做提前的准备。 标签:数学线性变换解题技巧 一、高中数学线性变换的概述 1.线性变换的概念 线性变换一般是指,在构建的xOy坐标系内,存在至少一个点或多个点的集合A与另一个相对应的至少一个或多个点的集合B两者之间按照一定规则可以相互变换,且不同的点与所转变后的点不相同,即在平面直角坐标系中,把形如进行几何变换,这就叫做线性变换。 2.线性变换的基本性质 线性变换具有三个基本性质,第一个性质是任何向量乘于零都为零,数学表达式为:T(0)=0;第二个性质是任何向量乘于任何一个负向量等于两个向量相乘的负数,数学表达式为:T(-a)=-T(a);第三个性质是线性变换满足乘法交换律、结合律,即,其中A是一般矩阵,是平面直角坐标系内任意的两个向量,是任意实数。 二、高中数学线性变换的解题技巧 1.数形结合 例1:在平面直角坐标系xOy中,已知平面区域A={(x,y)|x + y≤1,且x≥0,y≥0},求平面区域B={(x + y,x - y)|(x,y)∈A}的面積。 解析:本题考察的是线性变换结合不等式的应用难点,解决该问题首先要分析题干信息,根据题目给出的信息列出平面区域A的不等式条件。由于本题平面区域B存在与平面区域A相重合的未知数,因此要假设两个新的未知数替代B的条件,再将新的未知数条件代入A中就能很快确定B的向量表示,最后快速建立平面直角坐标系画出平面区域B的图形就能的出其面积的大小。 设:未知数u=x+y,v=x-y

实验五 双线性变换法设计IIR数字滤波器

实验五 IIR 数字滤波器设计 一、实验目的 (1)熟悉用双线性变换法设计IIR 数字滤波器的原理与方法; (2)学会调用MATLAB 信号处理工具箱中滤波器设计函数设计各种IIR 数字滤波器,学会根据滤波需求确定滤波器指标参数。 (3)掌握IIR 数字滤波器的MATLAB 实现方法。 (4)通过观察滤波器输入输出信号的时域波形及其频谱,建立数字滤波的概念。 二、实验原理 设计IIR 数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。基本设计过程是:①先将给定的数字滤波器的指标转换成过渡模拟滤波器的指标; ②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。MATLAB 信号处理工具箱中的各种IIR 数字滤波器设计函数都是采用双线性变换法。第六章介绍的滤波器设计函数butter 、cheby1 、cheby2 和ellip 可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2和椭圆模拟和数字滤波器。本实验要求读者调用如上函数直接设计IIR 数字滤波器。 本实验的数字滤波器的MATLAB 实现是指调用MATLAB 信号处理工具箱函数filter 对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n )。 三、实验内容及步骤 (1)调用信号产生函数mstg 产生由三路抑制载波调幅信号相加构成的复合信号st ,该函数还会自动绘图显示st 的时域波形和幅频特性曲线,如图5.1所示。容易看出,图5.1中三路调幅信号的载波频率分别为250Hz 、500Hz 、1000Hz 。 抑制载波单频调幅信号的数学表示式为 0001()cos(2)cos(2)[cos(2())cos(2())]2 c c c s t f t f t f f t f f t ππππ==-++ 其中,cos(2)c f t π称为载波,f c 为载波频率,0cos(2)f t π称为单频调制信号,

DLT 直接线性变换解法程序

DLT 直接线性变换解法程序介绍 一、程序综合介绍:DLT结算程序 程序功能介绍:应用6个已知点计算左右片l 系数;然后应用已经求得的l系数求解物方空间坐标系坐标 程序名:SuYGDLT 程序界面: 程序界面有四个按钮,分别为读取文件,左片l系数计算,右片系数计算,物放坐标解算程序界面有四个编辑框,分别用来输出文件信息,左片l系数、右片l系数、以及无妨坐标结果 截图如下 程序使用介绍: 必须先点击导入文件按钮,导入文件方可进行正确的计算,如果未导入文件就点击左片平差或右片平差或无妨坐标解算就会弹出如下对话框:

读取数据后点击其它按钮进行其它计算。 程序文件格式: 数据文件分为两部分,KnownPoint,UNKnownPoint,分别代表已知点信息和待求点信息当文件读取程序读到“KnownPoint”时开始读取已知点信息,已知点信息格式如下 GCP1,1214.0000,1032.0000,1046.5180,1071.6652,9.201742,-9.672384,-2.726064 分别代表点名、左片相片X坐标、左片相片y坐标、右片相片x坐标、右片相片y坐标物方坐标X、Y、Z; 当文件读取到“END KnownPoint”时结束已知坐标的读取 待求点信息类似:文件格式截图如下: 程序运行结果与评估: 本程序区1-10号点作为已知点计算l近似值11-20号点作为未知点解求其物方三维坐标;

程序运行结果与所给参考值相似,应该可以证明其运算是正确的,运行结果截图如下: 二、程序编程思想及相关代码 程序编程思想及相关函数: 本程序设计DLTCalculation类作为l系数结算主程序,其成员变量及成员函数与作用介绍如下: CSuLMatrix LL;//左片L系数矩阵 CSuLMatrix RL;//右片L系数矩阵 int m_iKnownPointCount;//已知点个数 CControlPoint *m_pKnownPoint;//已知点 int m_iUnKnownPointCount;//未知点个数 CControlPoint *m_pUnKnownPoint;//未知点 public: CString LoadData(const CString& strFileName);//读取文件函数 int ifLoda;//判断是否导入数据 CString Datainfor;//文件信息存储 CString *SplitString(CString str,char split, int& iSubStrs); //分割函数 void LFormApproL(CSuLMatrix &LL);//计算左片L系数近似值 void RFormApproL(CSuLMatrix &RL);//计算右片L系数近似值 void FormLErrorEquations(CSuLMatrix LL,CMatrix &LM,CMatrix &LW);//组成左片系数矩阵和常数项矩阵 void LAdjust();//左片平差主函数 void FormRErrorEquations(CSuLMatrix RL,CMatrix &RM,CMatrix &RW);//组成右片系数矩阵和常数项矩阵 void RAdjust();//右片平差主函数 void Output(const CString& strFileName);//输出结果主程序

第六章_线性变换_68180769

第六章 线性变换 映射:,X Y ≠?≠?,如果有一个法则σ,它使得X 中每个元素α,在Y 中有唯一确定的元素β与之对应,则称σ为X 到Y 的一个映射,记作:X Y σ→,()σαβ=,β称为α在σ下的象,α称为β在σ下的原象。 注:()(),X στασατα=??∈=对。 变换:一个集合到自身的映射。 线性变换的定义与性质 定义 设V 是数域F 上的线性空间,σ是V 的一个变换,如果满足条件: (1)()()()βσασβασV,α,β+=+∈?; (2)()()k F,αV,k αk σασ?∈?∈=, 则称σ是V 上的线性变换或线性算子。 (1), (2)等价于条件:,,,k l F V αβ?∈∈ ()()()σk αl βk σαl σβ+=+。 例:设σ:n n R R →,定义为()c αασ=,c 为常数。-----数乘 变换或位似变换。 c =0-----零变换,记为o 。 c =1-----恒等变换,记为ε。 例:设σ是把平面上的向量绕坐标原点逆时针旋转θ角的变换 设()()(),,,T T x y x y ασα''==,则

cos sin sin cos x x y y x y θθ θθ'=-??'=+? 记cos sin sin cos A θθθ θ-?? =??? ? ,则()A σαα=是一个线性变换。 例:判断下列变换是否是线性变换 (1) ()()12323,,1,,T T a a a a a σ=; (2) ()()12323,,0,,T T a a a a a σ=; (3) ()()12312231,,2,,T T a a a a a a a a σ=-+; (4) ()()212312 3,,,,3T T a a a a a a σ=. 线性变换的基本性质 (1)()θθσ=; (2)()()ασασ-=-; (3)线性变换保持向量的线性组合关系不变,即若s s αk αk αk β+++=Λ2211,则1122s s βk αk αk ασσσσ=+++L ; 若θ=+++s s αk αk αk Λ2211,则θσσσ=+++s s αk αk αk Λ2211。 (4)线性变换将线性相关的向量组映成线性相关的向量组。 线性变换的运算 ()V L ----线性空间V 上所有线性变换的集合。

浅谈线性变换对角化问题

目录 摘要 (1) Abstract (2) 引言 (3) 1 线性变换 (4) 1.1 线性变换的定义 (4) 1.1.1 线性变换的概念 (4) 1.1.2 线性变换的矩阵及矩阵表示 (4) 1.2 矩阵的相似对角化问题 (5) 1.2.1 相似对角化问题 (5) 1.2.2 矩阵的特征值与特征向量 (5) 2 线性变换的对角化 (7) 2.1 线性变换的对角化 (7) 2.1.1 线性对角化的提出 (7) 2.1.2 线性对角化的定义 (7) 2.2 线性变换的特征值与特征向量 (7) 2.2.1 线性变换的特征值与特征向量的概念 (7) 2.2.2 线性变换的特征多项式 (7) 2.3 线性变换对角化与矩阵对角化之间的联系 (8) 2.3.1 特征值与特征向量的联系 (8) 2.3.2 线性变换对角化与矩阵相似对角化之间的关系 (9) 2.3.3 线性变换可对角化的充要条件及推论 (9) 2.3.4 求线性变换对角化的方法和步骤 (10) 3 线性对角化问题的相关题目 (14) 总结 (16) 参考文献 (17) 致谢 (18)

摘要 线性变换是贯穿高等代数的重要内容之一,其研究价值不言而喻。本文尝试通过探讨矩阵对角化的知识点类比线性变换对角化的知识点,再通过矩阵的特征值与特征向量,以线性对角化问题为主要线索,着手研究线性变换特征值与特征向量的求解步骤以及线性对角化的基本条件,并且总结说明线性变换的对角化与矩阵对角化的联系,更进一步的,加深了解矩阵对角化与线性对角化的内容及要点。 关键词:线性变换的对角化问题;矩阵;特征值;特征向量

Linear transformation is an important part of higher algebra through its research value is self-evident. This paper attempts to explore the matrix diagonalization by knowledge points of analog linear transformation diagonalization knowledge, and through the eigenvalues and eigenvectors of the matrix, linear diagonalization problem as the main clue, started studying linear transformations eigenvalues and eigenvectors steps to solve the basic conditions and linear keratosis, and summary description of the linear transformation matrix diagonalization diagonalization with links to further deepen understanding of linear matrix diagonalization diagonalization content and points. Keywords: Changing existing diagonalization;Matrix;Eigenvalues;Eigenvectors

双线性变换法IIR数字滤波器设计

双线性变换法IIR 数字滤波器设计 一、实验目的 1、掌握用双线性变换法设计低通IIR 数字滤波器的基本原理和算法。 2、掌握用双线性变换法设计高通和带通IIR 数字滤波器的基本原理和算法。 3、进一步了解数字滤波器和模拟滤波器的频率响应特性。 二、实验原理与计算方法 1、双线性变换法设计IIR 低通数字滤波器的基本原理和算法 双线性变换法设计数字滤波器,采用了二次映射的方法,就是先将整个s 平面压缩到 s 1平面的一个T j T j π π~-的横形条带范围内,然后再将这个条带映射到z 平面上,就能建 立s 平面到z 平面的一一对应关系。对于低通数字滤波器,映射关系为 z z T z z T s ++-= +-=--11211211 (1) 其中T 为抽样周期。 用双线性变换法设计低通IIR 数字滤波器的基本步骤,首先根据设计要求确定相应的模拟滤波器的传递函数)(s H a ,再应用(1)式得数字滤波器的传递函数)(z H z z T s a s H z H ++-==112)()( (2) 通常可以给定的参数为:低通数字滤波器通带边界频率p p f πΩ21=、阻带边界频率 s s f πΩ21=和对应的通带衰减函数p α、阻带衰减函数s α。s 1平面中的模拟角频率1Ω与数字角频率ω的关系为线性关系T 1Ωω=,在计算模拟滤波器的阶数N 、极点s i 和传递函数)(s H a 之前,应作预畸变处理 2 2tan 22 tan 2 1T f T T T πΩΩ== (3) 模拟滤波器的阶数N 、极点s i 和传递函数)(s H a 的计算方法与冲激响应不变法相同,可以采用Butterworth 逼近或Chebyshev 逼近。 2、双线性变换法设计IIR 高通、带通、带阻数字滤波器的基本原理和算法 由于双线性变换法获得的数字滤波器频率响应特性中不会出现混叠现象,因此可以适用于高通、带通和带阻滤波器的设计。IIR 数字滤波器的设计通常要借助于模拟低通滤波器的设计,由原型低通滤波器到其他形式(高通、带通、带阻)IIR 数字滤波器的频带变换有模拟频带变换法和数字频带变换法。 (1)模拟频带变换法 首先将给定的对数字滤波器(DF)的技术要求转换为一个低通模拟滤波器(AF)的技术要求,根据这种要求用某种逼近设计出原型的低通模拟滤波器(LP AF),计算出模拟滤波器的阶数N 、极点s i 和传递函数)(s H a ,再按照双线性变换的变换关系,将模拟滤波器的传递函数)(s H a 转换为数字滤波器的传递函数)(z H 。 表8-1中列出了将给定的对数字滤波器(DF)的技术要求直接转换为对一个低通模拟滤波器(AF)的技术要求的频率预畸变校正关系和转换公式。

Matlab+实现直接线性变换

直接线性变换Matlab实现的程序源代码 function re=DLT(A,B) %imco为像方坐标,输入单位是像素 imco=A; %此处为控制点像方坐标,格式为2×n,单位:像素 %obco为物方坐标,输入单位是毫米 obco=B; %此处为控制点物方坐标,格式为n×3单位:毫米 imco_be=[];B=[];M=[]; for i=1:size(imco,2) imco_be=[imco_be;imco(:,i)]; end for i=1:size(imco,2) A1=[obco(i,:),1,0,0,0,0]; A2=[0,0,0,0,obco(i,:),1]; M=[M;A1;A2]; B1=obco(i,:).*imco_be(2*i-1); B2=obco(i,:).*imco_be(2*i); B=[B;B1;B2]; end M=[M,B]; N=M(1:11,:); L=N\(-imco_be(1:11,:)); X0=-((L(1)*L(9)+L(2)*L(10)+L(3)*L(11))/(L(9)*L(9)+L(10)*L(10)+L(11)*L(11))); Y0=-((L(5)*L(9)+L(6)*L(10)+L(7)*L(11))/(L(9)*L(9)+L(10)*L(10)+L(11)*L(11))); L=[L;0];M3=[];W=[]; for i=1:size(imco,2) xyz=obco(i,:); A=xyz(1)*L(9)+xyz(2)*L(10)+xyz(3)*L(11)+1; r2=(imco_be(2*i-1)-X0)*(imco_be(2*i-1)-X0)+(imco_be(2*i)-Y0)*(imco_be(2*i)-Y 0); M1=[A*(imco_be(2*i-1)-X0)*r2;A*(imco_be(2*i)-Y0)*r2]; M2=-[M(2*i-1:2*i,:),M1]/A; M3=[M3;M2]; W=[W;-[imco_be(2*i-1);imco_be(2*i)]/A]; end WP=M3'*W; NBBN=inv(M3'*M3); LP=-NBBN*WP; v=M3*LP+W; imco_be=imco_be+v; X0=-(LP(1)*LP(9)+LP(2)*LP(10)+LP(3)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11)); Y0=-(LP(5)*LP(9)+LP(6)*LP(10)+LP(7)*LP(11))/(LP(9)*LP(9)+LP(10)*LP(10)+LP (11)*LP(11)); 1

实验三 用双线性变换法设计IIR数字滤波器

实验_三_题目_用双线性变换法设计IIR数字滤波器第16周星期_3_第6,7节 一.实验目得 (1)熟悉用双线性变换法设计IIR数字滤波器得原理与方法。 (2)掌握数字滤波器得计算机仿真方法。 (3)通过观察对实际心电图信号得滤波作用,获得数字滤波得感性知识。 二、实验内容、方法、设计程序及实验结果 (1)复习有关巴特沃斯模拟滤波器设计与用双线性变换法设计IIR数字滤 波器得内容,用双线性变换法设计数字滤波器系统函数。其中满足本实验 要求得数字滤波器系统函数为: () () ()()()2 1 2 1 2 1 6 1 2155 .0 9044 .0 1 3583 .0 0106 .1 1 7051 .0 2686 .1 1 1 0007378 .0 - - - - - - - + - + - + - + = z z z z z z z z H ???????(3、1) 式中: ?(3、2) 根据设计指标,调用MATLAB信号处理工具箱buttord与butter,也可以得到。由公式(3、1)与(3、2)可见,滤波器由三个二阶滤波器、与级联而成,如图3-1所示。 % x=、 、、 k=1;%控制滤波循环变量 close all; %关闭全部绘图窗口 figure(1);%创建绘图窗口 subplot(2,2,1);%定位子图1 n=0:55; %横坐标 stem(n,x,'、'); %画出枝干图 axis([0,56,-100,50]); %调整坐标 xlabel('n'); %标注横坐标 ylabel('x(n)');%标注纵坐标 title('心电图信号采集序列x(n)');%命名该子图 B=[0、09036,2*0、09036,0、09036];%H1 滤波器得分子系数矩阵 A=[1、2686,-0、7051]; %H1滤波器得分母系数矩阵 A1=[1、0106,-0、3583];%H2滤波器得分母系数矩阵 A2=[0、9044,-0、2155]; %H3滤波器得分母系数矩阵 while(k<=3) y=filter(B,A,x); %进行滤波 图3-1 滤波器得组成

基于直接线性变换算法的普通数码相机检校的应用研究

基于直接线性变换算法的普通数码相机检校的应用研究 孔 建 黄建魏 沈 周 (西南交通大学 四川成都 610031 中铁十局 山东济南 520000) 摘要:本文采用直接线性变换(DLT )算法,完成了普通数码相机检校的应用研究。通过编程实验,解算普通数码相机在不同焦距情况下内方位元素(00,x y ,f )以及畸变参数(径向畸变系数1k ,2k 、偏心畸变系数1p ,2p ),同时对直接线性变换方法中l 初值的问题给出解决方案。提出了解决控制点布设在一个近似平面上解算l 系数初始值的方法,并且依据实验数据分析了在不同焦距下,相机内方位元素和光学畸变参数的变化情况。 关键字:直接线性变换;相机检校;径向畸变;偏心畸变 Abstract In this paper, to complete a common application of digital camera calibration by using the direct linear transformation algorithm. This paper have solved different elements of interior orientation (00,x y ,f )and distortion parameters (Radinal Distortion 1k , 2k ,Decentering Distortion 1p ,2p )of ordinary digital camera focal length by the programming experiments and meanwhile, put forward the solutions of the initial value problem in the direct linear transformation method. Proposed a solution in an approximate control points for solving plane initial value coefficient method, and analyzed the changes of the camera orientation elements and optical distortion parameters in the base of experimental data at different focal lengths. 1 概述 在数字摄影测量中,数字影像的获取,通常采用的是专业的摄影设备。这些专业设备的价格昂贵,对非专业部门是无法应用的。随着数码相机技术的发展与进步,普通数码相机在数字摄影测量领域中得到了广泛的应用,尤其是在近景数字摄影测量、无人机低空摄影测量的应用中,表现出了巨大的优势。普通数码相机不仅价格便宜,且操作方便,是专业摄影机不能比拟的。随着数码相机技术的

实验五:双线性变换法的设计IIR 数字滤波器

实验五、双线性变换法设计IIR 数字滤波器 一、实验目的: 1、熟悉用双线性变换法设计IIR 数字滤波器的原理与方法。 2、掌握数字滤波器的计算机仿真方法。 3、熟悉Batterworth 滤波器设计方法及特点 二、实验原理 (一)、IIR 数字滤波器的设计步骤: ① 按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; ② 根据模拟滤波器技术指标设计为响应的模拟低通滤波器; ③ 跟据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; ④ 如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。 在MATLAB 中,经典法设计IIR 数字滤波器主要采用以下步骤: IIR 数字滤波器设计步骤 (二)、用模拟滤波器设计数字滤波器的方法 1、冲激响应不变法: 冲激响应不变法是从时域出发,要求数字滤波器的冲激响应h (n ) 对应于模拟滤波器h (t ) 的等间隔抽样。 优点:时域逼近良好;保持线性关系。 缺点:频域响应混叠。只适用于限带低通滤波器和带通滤波器 2、双线性变换法 S 平面Z 平面 1S ~S ππ - 将整个平面压缩变换到平面一个的带状区域

优点:克服了频域混叠 缺点:高频时会引起畸变 1)冲激响应不变法impinvar 格式:[BZ,AZ]= impinvar (B,A,Fs ) 功能:把具有[B,A]模拟滤波器传递函数模型转换为采样频率为Fs 的数字滤波器的传递函数模型[BZ,AZ],Fs 默认值为1。 例:一个4阶的Butterworth 模拟低通滤波器的系统函数如下: 1 2251 )(2 3 4 ++++= s s s s s H a 试用冲激响应不变法求出Butterworth 模拟低通数字滤波器的系统函数。 num=1; den=[1,sqrt(5),2,sqrt(2),1]; [num1,den1]=impinvar(num,den) 2)双线性变换法bilinear 格式一:[Zd,Pd,Kd]= bilinear(Z,P,K,Fs) 功能:把模拟滤波器的零极点模型转换成数字滤波器的零极点模型,Fs 是采样频率 格式二:[numd,dend]= bilinear(num,den,Fs) 功能:把模拟滤波器的传递函数模型转换为数字滤波器的传递函数模型。 例:一个三阶的模拟Butterworth 模拟低通滤波器的系统函数如下: 1 231 )(23+++= s s s s H ,试用双线性变换法求出数字Butterworth 数字低通滤波器的系统函数。 num=1; den=[1,sqrt(3),sqrt(2),1]; [num1,den1]=bilinear(num,den,1) 3) IIR 数字滤波器的频率变换实现 步骤: ① 按一定的规则将数字滤波器的技术指标转换为模拟低通滤波器的技术指标 ② 根据转换后的技术指标使用滤波器阶数函数,确定滤波器的最小阶数N 和截止频率Wc ③ 利用最小阶数N 产生模拟低通原型 ④ 利用截止频率Wc 把模拟低通滤波器原型转换为模拟低通、高通、带通、带阻滤波器 ⑤ 利用冲激响应不变法或双线性变换法把模拟滤波器转换为数字滤波器 表一 IIR 滤波器阶次估计

35 直接线性变化的基本原理和解算方法.

立体摄影测量的基本原理 421 0011 0010 1010 1101 0001 0100 1011 3.5 直接线性变化的基本原理和解算方法

4 2 1 0011 0010 1010 1101 0001 0100 1011 一、直接线性变化的关系式 111333222333s s s i i i ()()()0()()()()()()0()()(),,,,s a b c i f s s s s s s s s s s s s a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z X Y Z X Y Z -+-+-?+=? -+-+-? ? -+-+-? +=?-+-+-? 中心构像方程: 其中:为物点的空间坐标 为光心的空间坐标 ,,(=1,2,3)旋转矩阵 所测x y 像片的主距 ,像点在摄影坐标系的坐标

4 2 1 0011 0010 1010 1101 0001 0100 1011 直接线性变化法 ?直接线性变换(DLT —Direct Linear Transformation )算法是直接建立像点坐标与物点空间坐标关系式的一种算法。 ?该算法在机算中,不需要内、外方位元素。而直接通过像点解算物点。

4 2 1 0011 0010 1010 1101 0001 0100 1011 二、线性误差的修正 1、线性误差: ?底片均匀变形、不均匀变形 ?畸变差 ?x ,y 坐标轴不垂直 2、线性修正?系数 假设主点坐标为(0,0)

浅谈矩阵的特征值与特征向量的应用(终稿)复习课程

浅谈矩阵的特征值与特征向量的应用(终稿)

浅谈矩阵的特征值与特征向量的应用 摘要 特征值与特征向量在现代科学中有重要的应用。本文介绍了特征值与特征向量的定义以及性质,并且给出了在线性空间中线性变换的特征值、特征向量与矩阵中的特征值、特征向量之间的关系。然后介绍了几种特征值与特征向量的求解方法。最后介绍了特征值与特征向量在实际中的应用,如在数学领域中、物理中以及经济发展与环境污染增长模型中的应用等等。 关键字:特征值;特征向量;应用;矩阵;初等变换 Abstract Eigenvalues and eigenvectors have important applications in modern science. This paper introduces the definition and nature of the eigenvalues and eigenvectors, eigenvalues and gives linear space of linear transformations, eigenvectors and eigenvalues of the relationship matrix, feature vectors. Then introduces several eigenvalues and eigenvectors of solving methods. Finally, the eigenvalues and

eigenvectors in practical application, such as in the fields of mathematics, physics, economic development and environmental pollution growth model and the application, and so on. Keys words:eigenvalue;eigenvector;application;matrix;elementary; 目录 浅谈矩阵的特征值与特征向量的应用 (2) 摘要 (2) Abstract (2) 第1章引言 (4) 1.1 研究背景 (4) 1.2 研究现状 (5) 1.3 本文研究目的及意义 (6) 第2章特征值与特征向量的一般理论 (6) 2.1 特征值与特征向量的定义和性质 (6) 2.1.1 特征值与特征向量的定义 (7) 2.1.2 特征值与特征向量的性质 (7) 2.2 特征值与特征向量的一般求解方法 (8) 2.2.1 一般数字矩阵的简单求解 (8)

用双线性变换法设计IIR

实验三 用双线性变换法设计IIR 滤波器 一、实验目的 1、了解两种工程上最常用的变换方法:脉冲响应不变法和双线性变换法。 2、掌握双线性变换法设计IIR 滤波器的原理及具体设计方法,熟悉双线性法设计低通、带通和高通IIR 滤波器的计算机程序。 3、观察用双线性变换法设计的滤波器的品与特性,并与脉冲响应不变法相比较,了解双线性变换法的特点。 4、熟悉用双线性变换法涉及数字Butterworth 和Chebyshev 滤波器的全过程。 5、了解多项式呈几何多项式乘方运算的计算机变成方法。 二、实验原理与方法 从模拟滤波器设计IIR 数字滤波器具有四种方法:微分—差分变换法、脉冲响应不变法、双线性变换法、匹配Z 变换法:在工程上常用的是其中两种:脉冲响应不变法、双线性变换法。脉冲响应不变法需要经历如下步骤:由已知系统传输函数)(s H 计算系统冲激响应)(t h :对)(t h 进行等间隔取样得到)()(nT h t h =,由)(t h 获得数字滤波器的系统响应)(z H 。这种方法非常直观,其算法宗旨是保证所设计的IIR 滤波器的脉冲响应和响应模拟滤波器的冲激响应在采样个点上完全一致。而双线性变换法的设计准则是使数字滤波器的频率响应与参考模拟滤波器的频率响应相似。 脉冲响应不变法一个重要的特点是频率坐标的变换式现行的,其缺点是有频谱的周期延拓效应,存在频谱混淆的现象。为了克服脉冲响应不变法可能产生的频谱混淆,提出了双线性变换法,它依靠双线性变换式: s s z z z s -+=+-=--11,111 1 其中,jw re z j s =Ω+=,σ 建立起s 平面和z 平面的单值映射关系,数字频域和模拟频域之间的关系: Ω==Ωarctg w w tg 2),2( (3—1) 由上面的关系式可知,当∞>-Ω时,w 中止在折叠频率π=w 处,整个Ωj 周单值的对应于单位圆的一周。因此双线性变换法不同于脉冲响应不变法,不存在频谱混淆的问题。 从式(3—1)还可以看出,两者的频率不是线性关系。这种非线性关系似的通带截止频率、过渡带的边缘频率的相对位置都发生了非线性畸变。这种频率的畸变可以通过预畸来矫正。用双线性变换法设计数字滤波器时,一般总是先将数字滤波器的各临界频率经过式(3—1)的频率预畸,球的响应参考模拟滤波器的各临界频率,然后设计参考模拟滤波器的传递参数,最后通过双线性变换式求得数字滤波器的传递函数。这样通过双线性变换,正好将这些频率点映射到我们所需要的位置上。参考模拟滤波器的设计,可以按照一般模拟滤波器的设计方法,利用已经成熟的一整套计算公式和大量的归一化设计表格和曲线,这些公式、表格主要是用于归一化低通原型的。通过原型变换,可以完成实际的低通、带通和高通滤波器的设计。在用双线性变换法设计滤波器的过程中,我们业可以通过原型变换,直接求得归一化参考模拟滤波器原型参数,从而使得设计更加简化。下表是IIR 低通、带通、高通滤波器设计双线

利用双线性变换求其离散传递函数

1 设计背景 (1) 1.1 设计目的 (1) 1.2 设计内容和要求 (1) 1.3 设计工作任务及工作量的要求 (1) 2 双线性变换及其原理 (2) 2.1 双线性变换的定义 (2) 2.2 双线性变换的原理 (2) 2.2.1 公式的推导 (2) 2.2.2 公式的验证 (2) 2.2.2 设计步骤 (4) 2.3 双线性变换的主要特性 (6) 3 计算机实现程序框图 (7) 4 理论计算 (8) 5 程序验证 (10) 6 结果分析 (11) 参考文献 (13) 附表程序清单 (14)

1 设计背景 1.1 设计目的 本课程设计以自动控制理论、现代控制理论、MATLAB 及应用等知识为基础,利用双线性变换求连续系统对应的离散化的系统,目的是使学生在现有的控制理论的基础上,学会用MATLAB 语言编写控制系统的离散化的程序,通过上机实习加深对课堂所学知识的理解,掌握一种能方便地对系统进行离散化的设计工具。 1.2 设计内容和要求 1 在理论上对连续系统采用双线性变换求离散化推导出算法和计算公式。 2 画出计算机实现算法的框图。 3 编写程序并调试和运行。 4 以下面的系统为例,进行计算。 已知系统闭环传递函数) 2)(1(4 )(++=s s s s G ,利用双线性变换求其离 散传递函数。 5 分析运算结果(离散化步长对系统性能的影响)。 6 程序应具有一定的通用性,对不同参数能有兼容性。 1.3 设计工作任务及工作量的要求 1 本次课程设计要求每周学生至少见指导教师4次,其中集中辅导答疑部不于3次。 2 设计说明书的格式按设计说明书格式要求,采用word 软件排版,计算机打印。(具体包括:封皮、目录、正文、参考文献等) 3 程序清单用A4纸打印后,作为附录订装在说明书后面。 4 框图和其他图表放在正文中。

浅谈线性代数在生活中的应用

浅谈线性代数在生活中的应用 线性代数是代数的一个重要学科,那么什么是代数呢?代数英文是Algebra,源于阿拉伯语。其本意是“结合在一起”。也就是说代数的功能是把许多看似不相关的事物“结合在一起”,也就是进行抽象。抽象的目的不是为了显示某些人智商高,而是为了解决问题的方便!为了提高效率。把一些看似不相关的问题化归为一类问题。线性代数中的一个重要概念是线性空间(对所谓的“加法”和“数乘”满足8条公理的集合),而其元素被称为向量。也就是说,只要满足那么几条公理,我们就可以对一个集合进行线性化处理。可以把一个不太明白的结构用已经熟知的线性代数理论来处理,如果我们可以知道所研究的对象的维数(比如说是n),我们就可以把它等同为R^n,量决定了质!多么深刻而美妙的结论!上面我说的是代数的一个抽象特性。这个对我们的影响是思想性的!如果我们能够把他用在生活中,那么我们的生活将是高效率的。 下面简要谈一下线性代数的具体应用。线性代数研究最多的就是矩阵了。矩阵又是什么呢?矩阵就是一个数表,而这个数表可以进行变换,以形成新的数表。也就是说如果你抽象出某种变化的规律,你就可以用代数的理论对你研究的数表进行变换,并得出你想要的一些结论。 另外,进一步的学科有运筹学。运筹学的一个重要议题是线性规划,而线性规划要用到大量的线性代数的处理。如果掌握的线性代数及线性规划,那么你就可以讲实际生活中的大量问题抽象为线性规划问题。以得到最优解:比如你是一家小商店的老板,你可以合理的安排各种商品的进货,以达到最大利润。如果你是一个大家庭中的一员,你又可以用规划的办法来使你们的家庭预算达到最小。这些都是实际的应用啊! 总之,线性代数历经如此长的时间而生命力旺盛,可见它的应用之广! 线性代数是高等代数的一大分支。我们知道一次方程叫做线性方程,讨论线性方程及线性运算的代数就叫做线性代数。在线性代数中最重要的内容就是行列式和矩阵。行列式和矩阵在十九世纪受到很大的注意, 而且写了成千篇关于这两个课题的文章。向量的概念, 从数学的观点来看不过是有序三元数组的一个集合, 然而它以力或速度作为直接的物理意义, 并且数学上用它能立刻写出 物理上所说的事情。向量用于梯度, 散度, 旋度就更有说服力。同样, 行列式和矩阵如导数一样(虽然dy/dx 在数学上不过是一个符号, 表示包括△y/△x 的极限的长式子, 但导数本身是一个强有力的概念, 能使我们直接而创造性地想象物理上发生的事情)。因此,虽然表面上看,行列式和矩阵不过是一种语言或速记,但它的大多数生动的概念能对新的思想领域提供钥匙。然而已经证明这两个概念是数学物理上高度有用的工具。 线性代数学科和矩阵理论是伴随着线性系统方程系数研究而引入和发展的。行列式的概念最早是由十七世纪日本数学家关孝和提出来的,他在1683 年写了一部叫做《解伏题之法》的著作,意思是“ 解行列式问题的方法” ,书里对行列式的概念和它的展开已经有了清楚的叙述。Vandermonde 是第一个对行列式理论进行系统的阐述( 即把行列' 式理论与线性方程组求解相分离) 的人。并且给出了一条法则,用二阶子式和它们的余子式来展开行列式。就对行列式本身进行研究这一点而言,他是这门理论的奠基人。Laplace 在1772 年的论文《对积分和世界体系的探讨》中, 证明了Vandermonde 的一些规则, 并推广了他的展开行列式的方法, 用r 行中所含的子式和它们的余子式的集合来展 开行列式,这个方法现在仍然以他的名字命名。德国数学家雅可比(Jacobi )

相关文档
相关文档 最新文档