网站大量收购闲置独家精品文档,联系QQ:2885784924

一种新数值曲线分段微分方法及应用.docVIP

一种新数值曲线分段微分方法及应用.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共15页,可阅读全部内容。
  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文档。上传文档
查看更多
一种新数值曲线分段微分方法及应用

一种新数值曲线分段微分方法及应用   摘要:基于MATLAB的函数库,分析比较了微分方程数值解曲线微分的不同实现手段,从而提出了一种新的数值曲线分段微分法。该方法针对由自适应调整步长积分算法得到的非等间距数值曲线设计,用于对该类曲线的进一步微分。这种方法不仅有利于保证求解精度,而且具有较高的运算速度,对于工程实际中需要对数值曲线进一步微分的数值仿真,提供了一种有效的途径。给出了汽车运行中的加速度曲线的数值仿真实例。   关键词:数值解;曲线;分段微分      中图分类号:O175   文献标识码:B   文章编号:1005-569X(2010)06-0153-04      1 引言      对强非线性系统的非线性运动微分方程,目前为止没有一种非常有效的精确的解析求解方法。因而,在很多场合数值求解成为首选的方法[1]。对常微分方程来说,初值问题的数值解法已经有很多,常用的有Euler法、预报校正法、Adams法、Gear法以及Runge-Kutta法等。MATLAB作为一种优秀的科学计算语言,具有丰富的库函数,很多数值算法能实现非线性微分方程的求解,如ode23,ode23s,ode15s,ode113和ode45都是数值积分函数。这对于诸多数值模拟和求解的场合很适用[2,4]。工程实际中普遍存在的振动,其描述多为微分方程甚至非线性方程[5],速度曲线是其中需要得到的重要的解曲线之一,可以通过上述函数直接得到。但如果需要得到工程实际中的另一重要曲线加速度曲线,则必须对先前的数值解曲线速度曲线进一步微分。这一过程在MATLAB中需要用到求导函数diff。diff函数要求是等间距的系列离散数据,而ode45等函数在求解中均有自动选择步长的功能,以保证把误差控制在0.001以下,其步长是变化的,显然,直接调用现有的diff函数链接完成下一步的数值微分是不可能的。本文基于现有的ode45和diff函数,给出来一种新的针对非等间距数值曲线的分段微分方法。该方法从数值曲线的求解开始,保证了求解的精度和运算速度,使得最终的曲线更可靠。   2 四阶Runge-Kutta算法和数值微分   微分方程初值问题的数值解法是系统数值仿真的基础,设系统的常微分方程满足   ??x?????i??=?f???i?(x,?t?)??x?????i??=?f???i?(x,t)(1)      其中?x?i?=1,2,…,?n?为状态向量,且x=[?x??1,…,?x???n?],而?f?i?(#8226;)为任意非线性函数且f(#8226;)=[?f??1,…,?f?n?(#8226;)],?t?为时间变量。当给定初值?x?(0),方程(1)的数值接可以求得。   对于方程(1),德国学者Felhberg对传统的Runge-Kutta方法进行了改进,在每一个计算步长内对?f?i?(#8226;)函数进行六次求值,以保证更高的精度和数值稳定性,假设当前的步长为?h?k?,则定义了下面的6个?k?i?变量   ?k?i?=?h?k?fx??k?+?∑??i?-1?j?=1?β???ij??k?j?,?t?k?+?α?i??h?k?,   (2)   式中?t?k?为当前计算时刻,而中间参数?α?i,β??ij??及其它参数专门给出,详见参考文献[6]。状态变量可以由下式给出   x???k?+1?=x??k?+?∑?6?i?=1?γ?ik?i?(3)      这种方法又称为四阶/五阶Runge-Kutta-Felhberg (RKF)方法。   2.1 等步长   当直接采用上述方法则为定步长的方法。对于合适的步长,四阶Runge-Kutta方法具有高的精度,每一步需要四次/六次计算函数值,可以证明典型的四阶Runge-Kutta方法的截断误差为?O?(?h??6) [7]。但定步长方法在实际中是很不实用的,因为如果步长选得过小,虽可以保证较高的精度,但随着步长的缩小,在一定求解范围内所要完成的的步数相应就增加,但由于步数的增加不仅引起计算量的增大,也可能导致舍入误差的严重积累[8],计算的时间将比步长大时多花费很多;而步长选择大时,计算速度虽提高,但要以牺牲一定的精度为代价。   2.2 自适应步长   对于一些实际问题,对步长的要求往往不一样。当解的变化缓慢时,宜采用较大的步长保证较高的精度;当解的变化较快时,宜采用较小的步长。这种能自动变换步长的方法称为自适应步长法。本文中采用的RKF方法,有专门的变步长的解法,并引入了误差量?∑??6???i?=1?(γ?i-γ?*?i)?k?i?来控制步长的大小。   MATLAB提供的常微分方程求解的函数ode45(),采用的是自适应变步长的求解方法,

文档评论(0)

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

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

1亿VIP精品文档

相关文档