下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 实验六__用matlab求解常微分方程

实验六__用matlab求解常微分方程.doc

实验六__用matlab求解常微分方程

hanlin3066
2011-12-01 0人阅读 举报 0 0 暂无简介

简介:本文档为《实验六__用matlab求解常微分方程doc》,可适用于高等教育领域

实验六 用matlab求解常微分方程        .微分方程的概念未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。如果未知函数是一元函数称为常微分方程。常微分方程的一般形式为如果未知函数是多元函数成为偏微分方程。联系一些未知函数的一组微分方程组称为微分方程组。微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。若方程中未知函数及其各阶导数都是一次的称为线性常微分方程一般表示为若上式中的系数均与无关称之为常系数。       .常微分方程的解析解有些微分方程可直接通过积分求解例如,一解常系数常微分方程可化为,两边积分可得通解为其中为任意常数有些常微分方程可用一些技巧,如分离变量法,积分因子法,常数变异法,降阶法等可化为可积分的方程而求得解析解线性常微分方程的解满足叠加原理,从而他们的求解可归结为求一个特解和相应齐次微分方程的通解一阶变系数线性微分方程总可用这一思路求得显式解。高阶线性常系数微分方程可用特征根法求得相应齐次微分方程的基本解再用常数变异法求特解。一阶常微分方程与高阶微分方程可以互化已给一个阶方程设可将上式化为一阶方程组反过来在许多情况下一阶微分方程组也可化为高阶方程。所以一阶微分方程组与高阶常微分方程的理论与方法在许多方面是相通的一阶常系数线性微分方程组也可用特征根法求解。.微分方程的数值解法除常系数线性微分方程可用特征根法求解少数特殊方程可用初等积分法求解外大部分微分方程无限世界应用中主要依靠数值解法。考虑一阶常微分方程初值问题其中所谓数值解法就是寻求在一系列离散节点上的近似值称为步长通常取为常量。最简单的数值解法是Euler法。Euler法的思路极其简单:在节点出用差商近似代替导数这样导出计算公式(称为Euler格式)他能求解各种形式的微分方程。Euler法也称折线法。Euler方法只有一阶精度改进方法有二阶RungeKutta法、四阶RungeKutta法、五阶RungeKuttaFelhberg法和先行多步法等这些方法可用于解高阶常微分方程(组)初值问题。边值问题采用不同方法如差分法、有限元法等。数值算法的主要缺点是它缺乏物理理解。       .解微分方程的MATLAB命令MATLAB中主要用dsolve求符号解析解ode,ode,odes求数值解。  s=dsolve(‘方程’,‘方程’,…,’初始条件’’初始条件’…,’自变量’) 用字符串方程表示自变量缺省值为t。导数用D表示阶导数用D表示以此类推。S返回解析解。在方程组情形s为一个符号结构。tout,yout=ode(‘yprime’,t,tf,y)采用变步长四阶RungeKutta法和五阶RungeKuttaFelhberg法求数值解yprime是用以表示f(t,y)的M文件名t表示自变量的初始值tf表示自变量的终值y表示初始向量值。输出向量tout表示节点(t,t,…,tn)T,输出矩阵yout表示数值解每一列对应y的一个分量。若无输出参数则自动作出图形。ode是最常用的求解微分方程数值解的命令对于刚性方程组不宜采用。ode与ode类似只是精度低一些。odes用来求解刚性方程组是用格式同ode。可以用helpdsolve,helpode查阅有关这些命令的详细信息    例 求下列微分方程的解析解()()()方程()求解的MATLAB代码为:>>clear>>s=dsolve('Dy=a*yb')结果为s=baexp(a*t)*C方程()求解的MATLAB代码为:>>clear>>s=dsolve('Dy=sin(*x)y','y()=','Dy()=','x')>>simplify(s) 以最简形式显示s结果为s=(*cos(*x)*cos(x))*sin(x)(*sin(x)*sin(*x))*cos(x)*sin(x)ans=*sin(x)*cos(x)*sin(x)方程()求解的MATLAB代码为:>>clear>>s=dsolve('Df=fg','Dg=gf','f()=','g()=')>>simplify(sf)  s是一个结构>>simplify(sg)结果为ans=exp(t)*cos(t)exp(t)*sin(t)ans=exp(t)*sin(t)exp(t)*cos(t)   例2求解微分方程先求解析解再求数值解并进行比较。由>>clear>>s=dsolve('Dy=yt','y()=','t')>>simplify(s)可得解析解为。下面再求其数值解先编写M文件funmM函数funmfunctionf=fun(t,y)f=yt再用命令>>clearcloset=::>>y=texp(t)plot(t,y) 化解析解的图形>>holdon 保留已经画好的图形如果下面再画图两个图形和并在一起>>t,y=ode('fun',,,)>>plot(t,y,'ro') 画数值解图形用红色小圈画>>xlabel('t'),ylabel('y')结果见图 图解析解与数值解由图可见解析解和数值解吻合得很好。   例求方程的数值解不妨取则上面方程可化为先看看有没有解析解运行MATLAB代码>>clear>>s=dsolve('Dy=*sin(y)','y()=','Dy()=','t')>>simplify(s)知原方程没有解析解下面求数值解令可将原方程化为如下方程组建立M文件funm如下M文件funmfunctionf=fun(t,y)f=y(),*sin(y())' f向量必须为一列向量运行MATLAB代码>>clearclose>>t,y=ode('fun',,,,)>>plot(t,y(:,)) 画随时间变化图,y(:)则表示的值>>xlabel('t'),ylabel('y')结果见图 图数值解由图可见随时间周期变化。  习题    .求下列微分方程的解析解     .求方程的解析解和数值解,并进行比较.分别用ode和odes求解VandelPol方程的数值解,并进行比较

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/5

实验六__用matlab求解常微分方程

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利