




免费预览已结束,剩余20页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
求微分方程的解,自牛顿发明微积分以来,微分方程在描述事物运动规律上已发挥了重要的作用。实际应用问题通过数学建模所得到的方程,绝大多数是微分方程。,由于实际应用的需要,人们必须求解微分方程。然而能够求得解析解的微分方程十分有限,绝大多数微分方程需要利用数值方法来近似求解。,本实验主要探讨如何用Matlab来计算微分方程(组)的数值解,并重点介绍一个求解微分方程的基本数值解法Euler折线法。,问题背景和实验目的,考虑一维经典初值问题,基本思想:用差商代替微商,根据Talyor公式,y(x)在点xk处有,Euler折线法,初值问题的Euler折线法,具体步骤:,等距剖分:,步长:,分割求解区间,差商代替微商,得方程组:,分割求解区间,差商代替微商,解代数方程,为分割点,k=0,1,2,.,n-1,yk是y(xk)的近似,Euler折线法举例,例:用Euler法解初值问题,取步长h=(2-0)/n=2/n,得差分方程,当h=0.4,即n=5时,Matlab源程序见fulu1.m,解:,Euler折线法源程序,clearf=sym(y+2*x/y2);a=0;b=2;h=0.4;n=(b-a)/h+1;%n=(b-a)/h;x=0;y=1;szj=x,y;fori=1:n-1%i=1:ny=y+h*subs(f,x,y,x,y);x=x+h;szj=szj;x,y;endszjplot(szj(:,1),szj(:,2),or-),Euler折线法举例(续),解析解:,解析解,近似解,Runge-Kutta方法,为了减小误差,可采用以下方法:,让步长h取得更小一些;,改用具有较高精度的数值方法:,龙格-库塔方法,Runge-Kutta(龙格-库塔)方法,是一类求解常微分方程的数值方法,有多种不同的迭代格式,Runge-Kutta方法,用得较多的是四阶R-K方法(教材第92页),其中,四阶R-K方法源程序,clear;f=sym(y+2*x/y2);a=0;b=2;h=0.4;n=(b-a)/h+1;%n=(b-a)/h;x=0;y=1;szj=x,y;fori=1:n-1%i=1:nl1=subs(f,x,y,x,y);l2=subs(f,x,y,x+h/2,y+l1*h/2);l3=subs(f,x,y,x+h/2,y+l2*h/2);l4=subs(f,x,y,x+h,y+l3*h);y=y+h*(l1+2*l2+2*l3+l4)/6;x=x+h;szj=szj;x,y;endplot(szj(:,1),szj(:,2),dg-),Runge-Kutta方法,Euler法与R-K法误差比较,Matlab解初值问题,用Maltab自带函数解初值问题,求解析解:dsolve,求数值解:ode45、ode23、ode113、ode23t、ode15s、ode23s、ode23tb,dsolve求解析解,dsolve的使用,y=dsolve(eq1,eq2,.,cond1,cond2,.,v),其中y为输出,eq1、eq2、.为微分方程,cond1、cond2、.为初值条件,v为自变量。,例1:求微分方程的通解,并验证。,y=dsolve(Dy+2*x*y=x*exp(-x2),x),symsx;diff(y)+2*x*y-x*exp(-x2),dsolve的使用,几点说明,如果省略初值条件,则表示求通解;,如果省略自变量,则默认自变量为t,dsolve(Dy=2*x,x);dy/dx=2xdsolve(Dy=2*x);dy/dt=2x,若找不到解析解,则返回其积分形式。,微分方程中用D表示对自变量的导数,如:,Dyy;D2yy;D3yy,dsolve举例,例2:求微分方程在初值条件下的特解,并画出解函数的图形。,y=dsolve(x*Dy+y-exp(x)=0,y(1)=2*exp(1),x)ezplot(y);,dsolve举例,例3:求微分方程组在初值条件下的特解,并画出解函数的图形。,x,y=dsolve(Dx+5*x+y=exp(t),Dy-x-3*y=0,.x(0)=1,y(0)=0,t)ezplot(x,y,0,1.3);,注:解微分方程组时,如果所给的输出个数与方程个数相同,则方程组的解按词典顺序输出;如果只给一个输出,则输出的是一个包含解的结构(structure)类型的数据。,dsolve举例,例:,x,y=dsolve(Dx+5*x=0,Dy-3*y=0,.x(0)=1,y(0)=1,t),r=dsolve(Dx+5*x=0,Dy-3*y=0,.x(0)=1,y(0)=1,t),这里返回的r是一个结构类型的数据,r.x%查看解函数x(t)r.y%查看解函数y(t),只有很少一部分微分方程(组)能求出解析解。大部分微分方程(组)只能利用数值方法求数值解。,dsolve的输出个数只能为一个或与方程个数相等。,Matlab函数数值求解,T,Y=solver(odefun,tspan,y0),其中y0为初值条件,tspan为求解区间;Matlab在数值求解时自动对求解区间进行分割,T(向量)中返回的是分割点的值(自变量),Y(向量)中返回的是解函数在这些分割点上的函数值。solver为Matlab的ODE求解器(可以是ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb),没有一种算法可以有效地解决所有的ODE问题,因此MATLAB提供了多种ODE求解器,对于不同的ODE,可以调用不同的求解器。,Matlab提供的ODE求解器,参数说明,odefun为显式常微分方程,可以用命令inline定义,或在函数文件中定义,然后通过函数句柄调用。,fun=inline(-2*y+2*x2+2*x,x,y);x,y=ode23(fun,0,0.5,1);,注:也可以在tspan中指定对求解区间的分割,如:,x,y=ode23(fun,0:0.1:0.5,1);%此时x=0:0.1:0.5,T,Y=solver(odefun,tspan,y0),数值求解举例,如果需求解的问题是高阶常微分方程,则需将其化为一阶常微分方程组,此时需用函数文件来定义该常微分方程组。,令,则原方程可化为,数值求解举例,先编写函数文件verderpol.m,functionxprime=verderpol(t,x)globalmu;xprime=x(2);mu*(1-x(1)2)*x(2)-x(1);,再编写脚本文件vdpl.m,在命令窗口直接运行该文件。,clear;globalmu;mu=7;y0=1;0;t,x=ode45(verderpol,0,40,y0);plot(t,x(:,1),r-);,Matlab求解微分方程小结,M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空天大数据存储中心创新创业项目商业计划书
- 职业教育虚拟实训基地创新创业项目商业计划书
- 2025内蒙古呼伦贝尔陆港国际有限公司市场化选聘总经理、副总经理2人笔试备考及答案详解(各地真题)
- 教师招聘之《小学教师招聘》题型+答案(考点题)【预热题】附答案详解
- 教师招聘之《幼儿教师招聘》每日一练及答案详解(基础+提升)
- 教师招聘之《幼儿教师招聘》考前冲刺试卷及参考答案详解(精练)
- 花卉彩铅速写课件
- 教师招聘之《幼儿教师招聘》强化训练模考卷附参考答案详解【b卷】
- 教师招聘之《幼儿教师招聘》考试押题卷及一套参考答案详解
- 2025年本科应届测试题及答案
- 《幼学琼林》全文原文及注释译文
- 23J916-1 住宅排气道(一)
- Unit 2 Travelling Around Reading and Thinking 课件高中英语人教版(2019)必修第一册
- (高级)航空油料特设维修员(三级)理论考试题库-上(单选题)
- 山东省岩棉板外墙外保温系统应用技术规程
- NB-T31053-2014风电机组低电压穿越建模及验证方法
- 《一着惊海天》学案
- (高清版)DZT 0261-2014 滑坡崩塌泥石流灾害调查规范(1:50000)
- 高压灭菌器安全培训
- 周围神经损伤(InjuryofPeripheralNerve)
- 合并同类项 公开课比赛一等奖
评论
0/150
提交评论