⼀阶时滞微分⽅程三种求解⽅法的MATLAB 实现及稳定性分析
前⾔: ⼤学期间只学习过《常微分⽅程》,没想到有些学校竟然还学《时滞微分⽅程》,于是到⼀本由内藤敏机(⽇本)等著,马万彪等译的《时滞微分⽅程——泛函数微分⽅程引论》(有需要的可以私聊,CSDN貌似上传不了书籍,说侵权emmm),看着头秃,不过受到不少启发,尤其是对Logistic⽅程的改进,真真是长见识了。没到有⼈⽤欧拉法解⼀阶时滞微分⽅程的,于是⼀不做⼆不休便⽤MATLAB实现了⼀下下,顺便改进了点点。
⼀阶时滞微分⽅程在求解时常常会解着解着就变成了解超越⽅程了,⽽超越⽅程很难求解,很头疼,因此常常都是计算⽅程的数值解,⽽⾮解析解。本⽂也只计算数值解。
对于⼀阶时滞微分⽅程(⽅程(1))
这⾥都是正的常数,是时滞量,,并且满⾜
啊,不想打字了,直接放我写的报告的截图了。
取步长
x =′−px t −τ+(),t ≥r +x t α()qx t ()
0,
p ,q ,r τα∈N ={1,2,3,...}>p q
r .
当时,写出上述⽅程的欧拉法和改进欧拉法的Matlab程序,并进⾏稳定性分析和与解析解⽐较。
p =10,q =2,r =0.1,α=3,r =0.01
欧拉法是⼀种解决数值微分⽅程的最基本的⽅法,其基本思想是迭代。其中分为前进的欧拉法、后退的欧拉法、改进的欧拉法,本⽂使⽤的是前进的欧拉法。所谓迭代,就是逐次替代,最后求出所要求的解,并达到⼀定的精度。误差可以很容易地计算出来。
该⽅法有明显的优势:单步、显式、⼀阶求导精度、截断误差为⼆阶,以上优势能够⼤⼤减⼩运算的难度。但是不可避免的,欧拉法也存在着⼀定的缺陷。欧拉法简单地取切线的端点作为下⼀步的起点进⾏计算,当步数增多时,误差会因积累⽽越来越⼤。
为了提⾼精度,需要在欧拉格式的基础上进⾏改进。本⽂采⽤区间两端的函数值的平均值作为直线⽅程的斜率得到改进的欧拉格式。改进欧拉法的精度为⼆阶。
除了改进的欧拉格式以外,还有许多⽐较好的改进⽅法,龙格库塔法便是其中⼀种。在数值分析中,龙格库塔法是⽤于模拟微分⽅程的解的重要的⼀类隐式或显式迭代法。实际上,龙格库塔法是欧拉法的⼀种推⼴,向前欧拉格式将导数项简单取为 ,⽽龙格库塔法则是在区间 内多取⼏点,将他们的斜率加权平均,作为导数的近似。matlab求导
综合使⽤以上的欧拉法、改进欧拉法和龙格库塔法,取初值为1,步长 ,求解时滞微分⽅程(1)。编程时,我们先利⽤三中⽅法求解的值,由于 ,因此为了得到 ,需要对解得的 做如下逆变换
得到的结果对⽐图如图1-4所⽰。
图1 ⽅程(1)的解,步长h =0.5u k u (t )=x (τt )x (t )u (t )x (t )=u ()
τt
h =1/2
图2 ⽅程(1)的解,步长 图2 ⽅程(1)的解,步长 h =1/4h =1/8