第 9 篇 常用算法 he shiyan.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

187****5045 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档