- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 9 章 常用算法
求任意实函数的单实根
设任意实函数f(x)=0
f(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)) 作一直线, 得到直线方程:
以y=0时的x值x0 作为试验根,则
,求得 f(x0)=y0 。
如果 或,可以认为x0 是方程 f(x)=0 的一个根,如不满足条件,根据y0的符号使得x0(xa,y0(ya 或x0(xb,y0(yb, 继续第二步的操作,直到满足条件。
当xb+hxmax 时,搜索过程结束。
计算步长选择原则是,保证在一个步长区间内的根不能多于1个互异根(重根除外),否则将造成丢根现象,这就要求h取得较小,但增加计算时间,所以应综合考虑,对周期函数,h应小于周期的1/2。
控制精度的大小直接影响求根精度,应根据需要设定,一般可取10-5 ~ 10-10 ,可取0.1。
几种常用的数字积分方法(微分方程的数字解)
欧拉法(折线法)
设一阶微分方程
由图可知,过(t0, y0)点的斜率为
如果 离 很近,即 很小,曲线y(t)可用切线来近似,其切线方程
其微分方程在t=t1 时,可近似表示为
重复上述近似过程,当时,
则有一般近似公式
如果令,称为计算步矩,则
(1)
这就是欧拉法数字积分的递推计算公式。
由公式可看出,只要我们给出方程的初值(t0, y0)以及相应的步距,逐步进行递推就可获得微分方程的近似数字解。
欧拉法的计算是十分简单的,其计算误差正比于,由此,要获得高精度解,必须减小步距,但这使得计算次数增加,又由于计算机的字长有限,h减小得过小,将引入舍入误差,所以此方法的精度提高有限,实际应用中较少采用。
梯形法(预报――校正法)
欧拉法精度低,却给我们一些启发,对微分方程
可改写成
当 时,则
从此式可以看出,要求得 的值,等式右边中含有未知函数,所以不能得到的值,但如果我们用已知的函数值来代替,用不变取代变化的函数,即
实际上右边是一个矩形面积
则
递推公式为
用此矩形的面积的算法,其计算误差是显然的(欧拉法),为了提高精度,我们可以用梯形面积来取代矩形的面积,即
则
递推形式为
或
应用上式求积分,产生了新的问题,即在计算时,要用,而不知,则是未知的,要获得,通常可用迭代方法,即在与之间迭代多次,使其计算的逐步收敛于,即
如果序列极限存在,则当时,,要保证上述极限存在,只要选取h小到一定程度,就能得到满足。
当选取一定的满足了收敛条件,但在计算上要迭代多次才认为求得了准确值,迭代次数越多,计算精度越高,但计算工作量加大,所以一般只迭代一次即可,则算法写成
(2)
上式为预报校正公式。应用梯形近似进行校正求得的值,实际上此方法是将欧拉法与梯形法的结合的一种算法,计算量比欧拉法增加了一倍。
龙格―库塔法(runge-kutta)
将梯形法进一步扩展,可以得到经常使用的一种算法。考虑如下的微分方程:
(3)
设h为步长,即取,则
当h取值相对小时,可应用泰劳级数将在处展开,而保留项,即
(4)
在计算时,为避免求微分,我们设
(5)
当h很小,在处泰勒展开,有
将,代入(5)式得
(6)
将(6)与(4)比较,可得
方程中有四个未知数,则解有无穷多组,可取一个解,选取,则有:
, ,
代入(5),可得二阶龙格-库塔法的计算公式
(7)
由于在台劳级数中只保留了以下的项,所以称为二阶龙格-库塔法,此法的截断误差正比于。比较(2)式,这组公式完全一样,其计算工作量完全相同,从而也证明了梯形法的截断误差正比于。
如果我们要求更高的计算精度,可保留级数的及以下的项,其此时的截断误差正比于,其公式就是在仿真中用得较广泛的四阶龙格-库塔法,它有多种写法,其
文档评论(0)