matlab在常微分方程中的应用,matlab在常微分方程数值解中的应用.docx

41528d3028836879cd698677c3999917.gifmatlab在常微分方程数值解中的应用.docx

MATLAB在常微分方程数值解中的应用摘要】许多现实问题都可以通过微分方程的形式进行表示,传统解微分方程的方法【有近似分析解法、表解法和图解法,这些方法需对其进行大量的假设,而使得数学模型有一定的失真,有一定的局限性。数值解法利用计算机,使得求解更精确、效率更高,而MATLAB是一种数学软件包,有高级编程格式,使得计算结果更具有可信性,因此微分方程的求解及MATLAB在其中的应用具有实际意义。本文对常微分方程数值解问题作进一步探讨,并应用MATLAB对其中难解的改进Euler法和Runge-Kutta法进行编程实现,程序简洁、直观,求解速度快、方法实用性较强。【关键词】常微分方程数值解MATLABEuler法龙格-库塔方法ode45ode15sMatlabinordinarydifferentialequationnumericalsolutionofapplicationYangHuaZhangLei【Abstract】Manypracticalproblemscanbeusingdifferentialequationsintheofrepresentation,thetraditionalofsolvingdifferentialequationsaresimilaranalysis,tableandgraphical,thesestocarryonthelargeamountsofhypothesis,sothatthemathematicalmodelhascertaindistortion,havecertainlimitation.Numericalsolutionofusingacomputer,makesolvingmoreaccurateandmoreefficient,andMATLABisakindofmathematicssoftwarepackage,withadvancedprogrammingat,makingcalculationresultismorecredibility,thereforedifferentialequationandsolutionoftheMATLABinoneoftheapplicationofpracticalsignificance.Thispapernumericalsolutionofdifferentialequationproblemfurtherdiscussion,andtheapplicationofMATLABinwhichthedifficultsolutionimprovementEulerandRunge-Kuttaontheprogramming,theprogramisconcise,intuitiveandsolutionspeed,ofpracticalstronger.【Keywords】ordinarydifferentialequation,numericalsolution,Matlab,Euler,Runge-Kutta【引言】微分方程的概念:未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。如果未知函数是一元函数,称为常微分方程。常微分方程的一般形式为0),“, ((nyytF微分方程是数学科学联系实际问题的主要桥梁之一,它是含有未知数及其导数的方程。常微分方程的求解是现代科学研究和工程技术中经常遇到的问题,然而,从实际问题中建立起来的微分方程往往具有非常复杂的形式,有写解析式难以计算,有的则根本不能用解析式来表达。在实际上对初值问题,一般是要求得到解在若干个点上满足规定精确度的近似值,或者得到一个满足精确度要求的便于计算的表达式,所以利用数值解法求解实际问题显得非常重要。一阶常微分方程的初值,其一般形式为(a)(1){𝑑𝑦𝑑𝑥=𝑓(𝑥,𝑦)𝑦(𝑎)=𝑦0 ≤𝑥≤𝑏在本文的讨论中,总假设函数f(x,y)连续,且关于y满足莱布尼兹条件,即存在常数L,使得│𝑓(𝑥,𝑦)-𝑓(𝑥,𝑦)│≤𝐿|𝑦‒𝑦|由微分方程理论可知,初值问题式(1)的解必定存在唯一。若给出节点xn=a+nh(n=0,1,2…),其中h为步长,设y(xn)代表方程(1)的精确解在xn的值,yn代表某种算法(忽略计算的舍入误差)得到的y(xn)近似值,所谓数值解法,就是寻求y(x)在系列离散点a==bnx210处的近似值yn(n=1,2,…),求解过程是顺着节点的次序一步步的向前推进,即按递推公式由已知的y1,y2,y3…yi求出yi+1。1建立数值解法的一些途径1.1、用差商代替导数若步长较小,则有hxyxy)(() 固有公式:0,12n)(),01xyyfn此即Euler法。1.2、使用数值积分01i)y(xf, 12,xnihi解微分方程:可用以下离散化方法求设对微分方程两边积分得)](,)(,[2)(,)((11111nnnnxnnxyfxyfxdyfyxn故有公式:和)()],(),[2011xyyxffhnnn{𝑦𝑛+1=𝑦𝑛+ℎ(𝑦𝑛-2𝑥𝑛/𝑦𝑛)𝑦𝑛+1=𝑦𝑛+ℎ[(𝑦𝑛-2𝑥𝑛𝑦𝑛)+(𝑦𝑛+1-2𝑥𝑛𝑦𝑛+1)]2 此即改进的Euler法。1.3.四阶Runge-Kutta法以Euler法为基础,继续推广和处理,可得一、二、三、四阶Runge-Kutta格式,最常用的一种经典Runge-Kutta格式的具体形式如下:(n=0,1,2,…){𝑦𝑛+1=𝑦𝑛+(𝑘1+2𝑘2+2𝑘3+𝑘4)/6𝑘1=ℎ𝑓(𝑥𝑛,𝑦𝑛)𝑘2=ℎ𝑓(𝑥𝑛+ℎ2,𝑦𝑛+𝑘12)𝑘3=ℎ𝑓(𝑥𝑛+ℎ2,𝑦𝑛+𝑘22)𝑘4=ℎ𝑓(𝑥𝑛+ℎ,𝑦𝑛+𝑘3) 2利用matlab求解一阶常微分方程的初值解在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下:X=dsolve(‘f1’,’f2’,…)函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解。有大量的常微分方程虽然从理论上讲,其解是存在的,但我们却无法求出其解析解,此时,我们需要寻求方程的数值解,在求常微分方程数值解方面,MATLAB具有丰富的函数,我们将其统称为solver,其一般格式为:[T,Y]=solver(odefx,t,y0)该函数表示在区间t=[t0,tf]上,用初始条件y0求解显式常微分方程 (,)yft。solver为命令ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一,这些命令各有特点。列表说明如下:求解器ODE类型特点说明ode45非刚性一步算法,4,5阶Runge-Kutta方法累积截断误差3()

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值