资源描述:
《常微分方程及其matlab求解》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《MATLAB语言》课程论文常微分方程及其MATLAB求解姓名:李坤峰学号:专业:电子信息工程班级:电子(1)班学院:物理电气信息学院指导老师:汤全武完成日期:2011年12月25日常微分方程及其MATLAB求解(李坤峰2010级电子一班)【摘要】:近年来,分数阶微分方程在科学研究和工程计算中到了广泛的应用.找到分数阶微分方程的解是十分必要的,尽管有些方程的解析解可以求出来,但人们注意到,很多分数阶微分方程的解析解是由比较特殊的函数来表示,并且大部分分数阶微分方程是不可能求出其解析解的,于是人们越来越关注分
2、数阶微分方程的数值方法.本文主要研究了一类论文主要研究了一类分数阶线性常系数多项微分方程的数值解法,并用数学软件Matlab实现了其数值解【关键词】微分方程数值解法MATLAB一问题提出MATLAB 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。MATLAB 语言在各国高校与研究单位起着重大的作用.它是一种集数值计算、符号运算、可视化建模、仿真和图形处理等多种功能。那
3、么MATLAB该如何解决常微分方程呢?二.微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。如果未知函数是一元函数,称为常微分方程。常微分方程的一般形式为(1)如果未知函数是多元函数,成为偏微分方程。联系一些未知函数的一组微分方程组称为微分方程组。微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。若方程中未知函数及其各阶导数都是一次的,称为线性常微分方程,一般表示为(2)若上式中的系数均与t无关,称之为常系数。有些微分方程可直接通过积分求解.例如,一
4、解常系数常微分方程可化为,两边积分可得通解为.其中c为任意常数.有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解.三.微分方程的数值解法除常系数线性微分方程可用特征根法求解,少数特殊方程可用初等积分法求解外,大部分微分方程无限世界,应用中主要依靠数值解法。考虑一阶常微分方程初值问题(3)其中所谓数值解法,就是寻求y(t)在一系列离散节点上的近似值称为步长,通常取为常量h。最简单的数值解法是Euler法。Euler法的思路极其简单:在节点出用差商近似代替
5、导数(4)这样导出计算公式(称为Euler格式)(5)他能求解各种形式的微分方程。Euler法也称折线法。Euler方法只有一阶精度,改进方法有二阶Runge-Kutta法、四阶Runge-Kutta法、五阶Runge-Kutta-Felhberg法和先行多步法等,这些方法可用于解高阶常微分方程(组)初值问题。边值问题采用不同方法,如差分法、有限元法等。数值算法的主要缺点是它缺乏物理理解。四.解微分方程的MATLAB命令 s=dsolve(‘方程1’,‘方程2’,…,’初始条件1’,’初始条件2’…,’自变
6、量’)用字符串方程表示,自变量缺省值为t。导数用D表示,2阶导数用D2表示,以此类推。S返回解析解。在方程组情形,s为一个符号结构。[tout,yout]=ode45(‘yprime’,[t0,tf],y0)采用变步长四阶Runge-Kutta法和五阶Runge-Kutta-Felhberg法求数值解,yprime是用以表示f(t,y)的M文件名,t0表示自变量的初始值,tf表示自变量的终值,y0表示初始向量值。输出向量tout表MATLAB中主要用dsolve求符号解析解,ode45,ode23,ode1
7、5s求数值解。示节点(t0,t1,…,tn)T,输出矩阵yout表示数值解,每一列对应y的一个分量。若无输出参数,则自动作出图形。 ode45是最常用的求解微分方程数值解的命令,对于刚性方程组不宜采用。ode23与ode45类似,只是精度低一些。ode12s用来求解刚性方程组,是用格式同ode45。可以用helpdsolve,helpode45查阅有关这些命令的详细信息. 例1 求下列微分方程的解析解(1)(2)(3)方程(1)求解MATLAB为:>>clear;>>s=dsolve('Dy=a*y+
8、b')%列出方程结果为s=-b/a+exp(a*t)*C1方程(2)求解MATLAB为:>>clear;>>s=dsolve('D2y=sin(2*x)-y','y(0)=0','Dy(0)=1','x')%列出三个方程>>simplify(s) %以最简形式显示s结果为s=(-1/6*cos(3*x)-1/2*cos(x))*sin(x)+(-1/2*sin(x)+1/6*sin(3*x))*cos(x)+5/