二阶非线性常微分方程打靶法.pptVIP

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

二阶非线性常微分方程的打靶法 计算思路 主要分为以下五步: 给定容许误差ε,迭代初始值γ1,对k=1,2,...做: (1)用四阶Runge-Kutta 方法求解初值问,得出u1之后取其在γk的值,从而得到F(γk)=u1(b,γk)-β (2)若|F(γk)|<ε,则u1 即为所求,跳出循环。 否则: (3)用四阶Runge-Kutta 方法求解初值问题 由此得到F(γk)=v1(b,γk) (4)用牛顿迭代计算γk+1,即 (5)置k+1→k,转(1)直到误差在范围内。 综上,实现了打靶法对非线性方程的拟合。 接下来是每一步的代码: 程序开头各变量的设置 function ys=ndbf(f,g,a,b,alfa,beta,n,eps,s0) %f 为二阶导数,y=f(x,y,y),g 为f 对y 求偏导后的 %(a,b)为自变量迭代区间 %alfa,beta 为给定的边值条件 %eps 题目规定的精度 %n 为迭代次数 %选取适当的s0 的初值 循环第一步 x0=[alfa,s0]; %选取合适的迭代初值 y0=RK4(f,a,b,h,x0); %龙格库塔算出u1(γk) constant=y0(n,1)-beta; 这里的y0(n,1)即是u1(γk,b),constant即为F(γk) 循环第二步 检验误差以跳出 if abs(constant)eps%检验精度是否合题意 break; 循环第三步 得到F函数的导数 u0=[0,1]; u1=NRK4(g,a,b,h,u0,y0); 通过偏导数求得的F’。 循环第四步 用牛顿迭代算出新的初值 s0=s0-constant/u1(n,1); 之后把所有的步奏放进一个while循环,跳出的条件即是constant小于给定的误差 数值实验 微分方程 得到图像 可以看出精度还是蛮高的 与matlab自带函数的比较 分别用Bvp4c 函数和打靶法解微分方程: 得到结论:图像上的拟合度差不多,但是具体做数值误差之后Bvp4c函数的精确度比较高。Bvp4c大概为1.0e-10,打靶法只有1.0e-4 再改变迭代方法进行比较 用二分法迭代γk 此时不用再求F的导数,所以也不用输入偏导数g 同样解上面的微分方程: 图像的拟合度也比较高。 数值误差方面和牛顿迭代在同一 数量级,所以相差不大。 算法总结 牛顿打靶法精度比较高 但是对于初值的选取要求很高,需要在精确值附近 而且在开头需要手动输入偏导数 谢谢观赏,祝大家期末满绩! * *

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档