- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
基于Matlab常微分方程数值解的分析与比较
?
?
马泽涛
[摘要]本文借助Matlab常微分方程求解工具箱,从时间与精度两个方面对刚性和非刚性方程的数值求解进行分析与比较,进而对常微分方程的求解给出一般的建议。
[关键词]常微分方程;时间;精度;刚性方程;非刚性方程
[]G642[]A[]2095-3437(2017)12-0050-03
常微分方程现代数学的一个重要组成部分,是研究自然科学、社会科学中事物运动变化规律最基本的数学理论和方法,是各种应用型学科和数学理论研究都不可缺少的工具。但绝大多数常微分方程都不能求得解析解。因此,要分析与比较不同数值解法[1][2][3][4],面对用户不同层次的要求,找到最优解法是急需解决的问题。根据常微分方程理论,一阶常微分方程初值问题
上述的方法在求解刚性方程和非刚性方程时,有各自的优点,又都存在着一定的局限性。例如:一般情况下,若采用函数ode45求解刚性方程时,结果会很糟糕甚至是死机。即使求得了相应的数值解,所得的结果也会和精确解相差较大。因此,在将常微分方程分为刚性方程和非刚性方程后,针对它们各自的特殊性,从求得数值解所用的时间和精度这两个方面,来对比总结出较好的方法。
一、基于时间的比较
上述ode系列函数所基于的数学思想方法不同,主要是步长取法上的差异,而步长的选取对数值计算有很大的影响。步长选取较大虽然会减少方程求解在计算机中的运行时间,但保证不了求解精度;步长选取过小,虽然保证了求解的精度,却会引起计算机中的多次舍入误差的积累及运行时间的增加。因此,产生了变步长的算法,它能很好地平衡这两方面。然而,有的用户仅需要了解方程解的大概分布情况,对精度的要求不太高,因此针对时间方面,我们做了如下的比较。
对于刚性方程(2)来说,首先,基于ode15s,ode23s,ode23t和ode23tb这四个函数都只能求得低精度的数值解情况下,又从上表的各函数运行所需时间可以看出,函数ode15s和ode23t所需时间明显少于ode23tb和ode23s,并且函数ode23tb又明显优于ode23s。
其次,在这4个函数都是隐格式情况下,函数ode15s采用的是多步长法,而ode23s,ode23t和ode23tb采用的都是单步长法。从上表可以看出,多步长法在运行时间方面具有较大的优势。在单步法中,函数ode23t的运行时间又少于其他函数。因此,在求解这类刚性方程且求解精度相差不大的四种函数中,函数ode15s是最佳的求解办法,ode23t次之。
而对于非刚性方程(3),从上表中可以看到,函数ode113运行时间最少,ode23次之,ode45最多。
这是因为,这三个函数中,函数ode45与ode23采用的都是变步长的单步法,而ode113采用的是多步法。变步长法即在解变化大的地方采用小步长,解变化小的地方采用大步长。但许多理论和研究都表明,在解变化小的地方仍然不能采用大步长,否则会导致误差的急剧增加。于是,為了保证函数ode45和ode23的求解精度,并没有在解变化小的地方采用大步长,从而导致了其运算次数的增加。相应的,和多步法的函数ode113相比,运算时间上也不占优势。因此,求解非刚性方程时,函数ode113运行时间最少,是最佳的求解办法,ode23次之,ode45最慢。
二、基于精度的比较
其次,单纯地要求运行时间少并不利于更好的研究解的性质。在精度方面,我们可以发现,多步法提出了一种新的逼近,但是许多必需的计算将被求解过程中已经算得的值的插值所代替。且采用多步长算法的函数的求解精度往往比采用单步长算法的函数的求解精度要高。于是,在不考虑时间因素的情况下,作了如下比较。
对于刚性方程(4)来说,首先,可以知道函数ode23t和ode23tb在求解该方程时失效。因此,在求解刚性方程时,在四个求解刚性方程的函数中,函数ode23t和ode23tb不是首要选择。
再讨论函数ode15s和ode23s的精度。函数ode15s采用的是多步法,而ode23s采用的是单步法。多步法利用前面若干个节点得到下一点的近似值,相比只利用了前一个节点得到下一点的单步法得到的数据更具说服力与科学性。再比较二者的二范数,由于0.20580.3885,所以函数ode15s是求解这个微分方程的最佳方法,ode23s次之。
而对于非刚性方程(5),首先可以发现这三个函数都能求得相应的二范数,故函数ode45,ode23,ode113都可用来求解此方程。其次,根据二范数的比较可知,函数ode45所求精度最高,ode113其次,ode23最差。
由于这三个函数都是显格式,我们进行其他算法上的综合比较。函数ode45和ode23都是单步法,其中函数ode45采用的是Runge-Kutta
文档评论(0)