欢迎来到天天文库
浏览记录
ID:28749672
大小:408.50 KB
页数:10页
时间:2018-12-13
《第 9 章 常用算法 he shiyan.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第9章常用算法求任意实函数的单实根设任意实函数f(x)=0f(x)是x的非线性或线性函数,求它的单实根的方法很多,如二分法,弦截法,优选法,插值法等,各种方法大同小异。下面介绍弦截法求实函数在给定一个区间[xmin,xmax]中的所有单实根。这种方法求根分两步进行。第一步,判断某个小区间内是否有根存在,其原理是xb=xa+h,自变量从原来的一个初值xa向前跨出一步h,如果在[xa,xa+h]中有根存在,则必有函数值f(xa)与f(xb)异号或f(xb)=0,这时转到第二步,否则将xbàxa,继续第一步的工作。第二步,以(xa,f(xa))和(xb,f(xb
2、))作一直线,得到直线方程:以y=0时的x值x0作为试验根,则,求得f(x0)=y0。如果或,可以认为x0是方程f(x)=0的一个根,如不满足条件,根据y0的符号使得x0àxa,y0àya或x0àxb,y0àyb,继续第二步的操作,直到满足条件。当xb+h>xmax时,搜索过程结束。计算步长选择原则是,保证在一个步长区间内的根不能多于1个互异根(重根除外),否则将造成丢根现象,这就要求h取得较小,但增加计算时间,所以应综合考虑,对周期函数,h应小于周期的1/2。控制精度的大小直接影响求根精度,应根据需要设定,一般可取10-5~10-10,可取0.1。几种常
3、用的数字积分方法(微分方程的数字解)1欧拉法(折线法)t0t1ty(t)hyy(t0)y(t1)图2-5-1t0t1tf(t)ff(t0)图2-5-2h设一阶微分方程由图可知,过(t0,y0)点的斜率为如果离很近,即很小,曲线y(t)可用切线来近似,其切线方程其微分方程在t=t1时,可近似表示为重复上述近似过程,当时,则有一般近似公式如果令,称为计算步矩,则(1)这就是欧拉法数字积分的递推计算公式。由公式可看出,只要我们给出方程的初值(t0,y0)以及相应的步距,逐步进行递推就可获得微分方程的近似数字解。欧拉法的计算是十分简单的,其计算误差正比于,由此,要
4、获得高精度解,必须减小步距,但这使得计算次数增加,又由于计算机的字长有限,h减小得过小,将引入舍入误差,所以此方法的精度提高有限,实际应用中较少采用。1梯形法(预报――校正法)欧拉法精度低,却给我们一些启发,对微分方程可改写成当时,则从此式可以看出,要求得的值,等式右边中含有未知函数,所以不能得到的值,但如果我们用已知的函数值来代替,用不变取代变化的函数,即实际上右边是一个矩形面积则递推公式为用此矩形的面积的算法,其计算误差是显然的(欧拉法),为了提高精度,我们可以用梯形面积来取代矩形的面积,即则递推形式为或应用上式求积分,产生了新的问题,即在计算时,要用
5、,而不知,则是未知的,要获得,通常可用迭代方法,即在与之间迭代多次,使其计算的逐步收敛于,即如果序列极限存在,则当时,,要保证上述极限存在,只要选取h小到一定程度,就能得到满足。当选取一定的满足了收敛条件,但在计算上要迭代多次才认为求得了准确值,迭代次数越多,计算精度越高,但计算工作量加大,所以一般只迭代一次即可,则算法写成(2)上式为预报校正公式。应用梯形近似进行校正求得的值,实际上此方法是将欧拉法与梯形法的结合的一种算法,计算量比欧拉法增加了一倍。1龙格―库塔法(runge-kutta)将梯形法进一步扩展,可以得到经常使用的一种算法。考虑如下的微分方程
6、:(3)设h为步长,即取,则当h取值相对小时,可应用泰劳级数将在处展开,而保留项,即(4)在计算时,为避免求微分,我们设(5)当h很小,在处泰勒展开,有将,代入(5)式得(6)将(6)与(4)比较,可得方程中有四个未知数,则解有无穷多组,可取一个解,选取,则有:,,代入(5),可得二阶龙格-库塔法的计算公式(7)由于在台劳级数中只保留了以下的项,所以称为二阶龙格-库塔法,此法的截断误差正比于。比较(2)式,这组公式完全一样,其计算工作量完全相同,从而也证明了梯形法的截断误差正比于。如果我们要求更高的计算精度,可保留级数的及以下的项,其此时的截断误差正比于,
7、其公式就是在仿真中用得较广泛的四阶龙格-库塔法,它有多种写法,其中一种为:(8)推导方法与二阶方法相同,但比较麻烦,这里就不再推导了。采用公式(7)和(8),在计算时只用到上一次的值,而与更前的值无关,具有这种计算法称为一步法。在计算中,步长h是可以变化的,其变化范围是可以根据精度要求而定。前面的算法是以一阶一元微分方程而得到的,但一般系统均是高于一阶的,根据控制原理可知,高阶系统的模型可化成n元一次微分方程组的形式,这种模型结构为线性微分方程组:A是一个n×n阶方阵,B是一个n×m阶方阵,y为n阶向量,n是系统的阶数,m为系统的输入个数,u为m阶输入向量
8、,其中对这种方程求解,为使程序设计紧凑,我们引入一个向量和两个矩阵
此文档下载收益归作者所有