资源描述:
《matlab语言在非线性最小二乘估计中的应用new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第27卷第3期测绘与空间地理信息Vol.27,No.32004年6月GEOMATICS&SPATIALINFORMATIONTECHNOLOGYJun.,2004MATLAB语言在非线性最小二乘估计中的应用张 庆(上海科达交通建设勘察设计院,上海200031)摘要:伴随着测量事业的发展,要编制测量参数估计的矩阵运算程序越来越复杂,难度也越来越大。MATLAB与其他编程语言相比,具有简单直观、速度快等特点。本文将MATLAB语言运用于非线性模型参数估计,并给出了单纯形法进行非线性参数估计的函数程序。关键词:MATLA
2、B;非线性最小二乘;单纯形法中图分类号:P208 文献标识码:B 文章编号:1672-5867(2004)03-0035-04ApplicationofMATLABSoftwaretoParameterEstimationofNonlinearModelsZHANGQing(ShanghaiKedaExploringandDesignInstituteofCommunicationConstruction,Shanghai200031,China)Abstract:Withthedevelopmentofs
3、urveyingproject,ithasbecomemorecomplexandmoredifficulttodesignaprogramforparame2terestimationtodealwithmatrixoperation.Comparedwithotherarithmeticlanguage,MATLABhascharactersofsimpleanddi2rectprogramandhighspeedofoperation.Inthispaper,itisdescribedthathowMATLA
4、Bsoftwareisappliedtoparameterestima2tionofnonlinearmodels.Whatismore,thefunctionofsimplexsearchtoestimatetheparameterofnonlinearmodelsisgiven.Keywords:MatrixLaboratory;leastsquaresparameterofnonlinearmodels;simplexsearch0 引 言运用于科学运算中,包括数值计算、符号计算、数据在科学研究和工程应用中,
5、往往要进行大量的拟合、图形图像处理、系统模拟和仿真以及动画设数学计算,其中包括矩阵运算。这些运算一般来说计、有限元分析等。难以用手工精确和快捷地进行,而要借助计算机编以MATLAB程序代码所编写的文件通常以制相应的程序做近似计算。现在流行用Fortran、“m”为扩展名,所以又称为“M文件”。M文件分为C++和VC语言编制计算程序,既需要对有关算两类:脚本和函数。当在MATLAB命令窗口直接法有深刻的了解,还需要熟练地掌握所用语言的语输入脚本文件的主文件名时,MATLAB就可以逐法及编程技巧。对多数科学工作者而言,
6、同时具备一执行此文件里的所有命令,而且所产生的变量均这两方面技能有一定困难。为克服上述困难,美国保留在基本工作空间中,很容易进行变量查看及调MathWorks公司于1984年推出了MATLAB软件试。函数文件可以接受输入变量,并将运算结果送包,其名称是由“矩阵实验室”(MatrixLaboratory)至输出变量,运算过程中所产生的变量都存放在函所合成的,由此可知其最早的开发理念是提供一套数本身的工作空间,并不会和MATLAB基本工作非常完善的矩阵运算命令。如今它不仅可以提供空间的变量相互覆盖,因此特别适用于大型程
7、序代强大的科学运算、灵活的程序设计流程功能,还可码,会使程序代码模块化,并易于维护和改进。以提供高质量的图形可视化与界面设计、便捷的与1 非线性最小二乘估计其他程序和语言接口的功能。MATLAB被广泛地在测量上,大量的数学模型是非线性模型。现收稿日期:2004-04-26©1995-2005TsinghuaTongfangOpticalDiscCo.,Ltd.Allrightsreserved.36测绘与空间地理信息2004年实世界中严格的线性模型并不多见,它们或多或少线性最小二乘估值的程序。其函数源代码如下:都带
8、有某种程度的近似。对于大地测量中大量的函数1:选取初始单纯形非线性模型,传统的做法是线性近似,即将其展开functionX=fcshi(x0,s)为泰勒级数,并取其一次项。如此线性近似,必然(注:x0:待估参数的初始近似值;s:单纯形棱长)会引起模型误差。过去由于测量精度不高,线性近t=length(x0);c=(sqrt(t+1)+t-1)3s/(sqrt