计算底点纬度的数值迭代算法 莆田十中 吴琼烟 摘 要:本文研究了不动点迭代法、斯特芬森迭代法、牛顿-瑞弗森迭代法和割线法等四种数值迭代算法及其在底点纬度计算中的应用,并用MATLAB软件予以实现。将数值迭代算法结果与经典算法结果进行比较,结果表明:利用数值迭代算法求解底点纬度,简单易行,准确可靠。 关键词:底点纬度;数值迭代算法;MATLAB 正文: 根据子午线弧长反求底点纬度是椭球大地测量学中的一项重要内容,是高斯投影坐标反算的基础。底点纬度是高斯反算过程中一个重要的中间变量,当参数的值确定之后,接下来高斯投影反算的过程就变得非常简单了,从某种程度上讲,高斯投影坐标反算过程的关键就在于求出底点纬度的值。 底点纬度的求解本质上讲就是一个非线性方程的求根问题,数值分析中对此类问题有成熟的计算方法,即数值迭代算法,同时借助于计算机程序设计进行计算,可得到准确的数值解,涉及的数学技巧较少,简单易行,准确可靠。 1 计算底点纬度的经典算法 由子午线弧长反求底点纬度是由纬度值计算子午线弧长的逆问题,下面首先对子午线弧长计算的经典算法进行介绍,在此基础上再对计算底点纬度的经典算法进行说明。 1.1 子午线弧长计算的经典算法 大地测量学经典教材[1]给出了计算子午线弧长的基本公式:从赤道到大地纬度为处的子午线弧长为 (1) 式中,为子午线曲率半径,为椭球长半轴,为椭球第一偏心率。 对于(1)式而言,由于被积函数结构复杂,其原函数无法求出,故不能直接用牛顿-莱布尼茨积分进行计算。在经典教材中,采用近似解析法,即把被积函数按照牛顿二项式定理展开为的幂级数,并将正弦的幂函数展开为余弦的倍数函数,然后逐项进行积分,考虑到计算结果的目的和精度,得到以下两个实用计算公式: (2) (3) (4) (5) 1.2 底点纬度计算的经典算法 已知从赤道到某点处的子午线弧长,计算该点的大地纬度,即为底点纬度计算。大地测量学教材[1-2]给出了底点纬度计算的经典算法: 由式(3)可得: (6) 令 (7) 然后以为初值,以后每次迭代按式(8)计算: (8) 重复迭代计算直至为止。 根据式(8)计算的结果已被诸多文献[1-2,9-12]证明了其准确性,故本文以经典算法的结果作为准确值,用以衡量各种数值迭代算法的准确度。 2 数值迭代算法 数值分析教材[3]给出了非线性方程求根的数值迭代算法,这为计算底点纬度提供了新的途径。数值迭代算法是一种逐次逼近算法,是求解诸如超越方程等非线性方程的一种基本方法,但需考虑迭代法的构造、收敛性、收敛速度与误差估计等问题,并辅以计算机程序设计对算法进行实现,可大大减少计算工作量,得到高精度的计算结果。同时需要指出,一个迭代算法产生的序列是否收敛于方程的根,通常与初值的选择有关。 数值迭代算法有很多种,常用的算法主要有不动点迭代法、斯特芬森(Steffensen)迭代法、牛顿-瑞弗森(Newton-Rephson)迭代法、割线法等。本文拟就这四类算法分别进行分析计算,并对各种算法的结果予以比较。 2.1 不动点迭代法 对于非线性方程,将其转化为等价的方程,可以选取一个初值,构造迭代序列,如此产生序列。如果连续,而且,则是的不动点,即是方程的根,这种迭代法即为不动点迭代。 2.2 斯特芬森迭代法 斯特芬森迭代法解方程可以看作是另外一种不动点迭代:
其中迭代函数为 (9) 由此得到迭代公式为
(10) 2.3 牛顿-瑞弗森迭代法 牛顿-瑞弗森迭代法是求解非线性方程比较著名而且也是比较有效的方法之一,如果初值选择比较接近于根,则收敛速度迅速。 设方程有近似根,且,将函数在点处展开,有 (11) 于是方程可近似地表示为 (12) 这是个线性方程,记其根为,则有 (13) 可以看出,牛顿-瑞弗森迭代法实质上是一种线性化方法,其基本思想是将非线性方程逐步归结为某种线性方程来求解。 需要指出的是,牛顿-瑞弗森迭代法需满足以下条件: ①; ②; ③在上存在二阶导数,且不变号; 2.4 割线法 在牛顿-瑞弗森迭代法计算中,迭代过程中是用曲线的切线代替曲线,从而把切线与轴的交点横坐标作为的根,如此反复。而要计算切线的代价是需要计算函数的导数,事实上我们可以考虑用迭代前后两次的割线来代替曲线,把割线与轴的交点作为根的近似,如此反复,这样就得到另一种求解的方法,而不需要计算一次导数。 割线的方程为 (14) 由该直线方程与轴交点的横坐标容易计算得 (15) 把这个作为下一次迭代的初值,就得到割线法的迭代公式 (16) 3 底点纬度的数值迭代计算与结果分析 现以IUGG-1975椭球元素为例进行计算,分别采用上述四种数值迭代算法进行计算。计算工具选择数学计算软件MATLAB,并根据各种迭代算法原理及公式编写相应的子程序[4]。四种迭代算法所对应的子程序代码均在20行以内,非常简洁。同时在计算过程中还需要顾及到角度值与弧度值之间的转换,最后得到的计算结果列于表1中,从表中可以对比得到各种数值迭代算法结果和经典算法结果之间的差值(以下简称为差值)。 利用不动点迭代和斯特芬森迭代算法求解时,需要把式(3)转化为 (17) 初值取,然后分别基于2.1和2.2的算法原理进行求解即可。 利用牛顿-瑞弗森迭代和割线法求解时,需要把式(3)改写为 (18) 分别对式(18)求的一阶导数和二阶导数得 (19) (20) 由式(18)知,由式(19)和(20)知,当时,,不变号,满足2.3中的限制条件。 仍取初值,然后分别基于2.3和2.4的算法原理进行求解即可。 从表1可以看出,四种迭代算法的结果和经典算法结果一模一样,差值均为0,说明数值迭代算法结果准确可靠,简单易行。就迭代次数而言,割线法要略优于其它三种方法。不过因为是采用计算机编程计算,迭代次数这一因素的影响并不大,在进行底点纬度计算时,可以认为四种数值迭代算法均可,没有哪种算法明显占优。
表1 经典算法计算结果与各种数值迭代算法计算结果
备注:限于篇幅,顾及到本文各类数值迭代算法计算结果与经典算法结果中的“度”和“分”的数值相同,表中略去了本文方法中的“度”和“分”的数据,仅给出了“秒”的数据。 4 结束语 本文基于MATLAB软件,分别对不动点迭代法、斯特芬森迭代法、牛顿-瑞弗森迭代法以及割线法在底点纬度计算中的应用进行了探讨,通过与经典算法计算结果之间的比较,证明了数值迭代算法的准确性和可靠性。同时也表明四种算法在进行底点纬度计算时,没有哪种明显占优,均可使用。鉴于数值迭代算法简单易行,准确可靠,建议在测量工作中实际计算时予以采用。
参考文献 [1].孔祥元,郭际明,刘宗泉.大地测量学基础[M].武汉:武汉大学出版社,2006 [2].陈健,晁定波.椭球大地测量学[M].北京:测绘出版社,1989 [3].李庆扬,王能超,毅大义.数值分析(第4版)[M].北京:清华大学出版社,2001
作者:福建省莆田市秀屿区莆田第十中学 吴琼烟 13959528262 |