matlabode.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
matlabode.ppt

* 第6章 微分方程模型仿真 常微分方程的数值求解 微分方程模型的建立及仿真 6.1 微分方程的求解 在现在数学研究和工程实践中,很多数学模型都是用微分方程确定的,很多基本方程本身就是一个微分方程,因此求微分方程非常重要,但是大部分的微分方程目前难以求得其解析解,因此人们只有利用计算机强大的计算功能来求其数值解。MATLAB主要使用龙格-库塔法求解微分方程。 在控制系统仿真中,常用的求微分方程数值解的函数是ode23和ode45。 1. ode23 在MATLAB中,函数ode23采用2-3阶龙格-库塔法求解微分方程。 [t,y]=ode23(odefun,tspan,y0) [t,y]=ode23(odefun,tspan,y0,options) odefun:定义微分方程的形式y’=f(t,y) tspan=[t0,tfinal]:表示微分方程的积分限从t0(始值)到tfinal(终值),该积分限也可以是一些离散的点。 y0:初始状态列向量 options:积分参数,包括‘RelTol’(相对误差)和‘AbsTol’(绝对误差),可省略。 例:使用ode23函数求解常微分方程y’=-y+x2+4x+1,x=[1 4], x=1时,y=1。 解:首先创建函数fun1.m function f=fun1(x,y) f=-y+x^2+4*x+1; 在命令窗口中输入 [x,y]=ode23(fun1,[1,4],1); dy=-y+x.^2+4*x+1; plot(x,y,x,dy); legend(y,dy) 2. ode45 在MATLAB中,函数ode45采用普通4-5阶龙格-库塔法求解微分方程。其使用方法与ode23函数的使用方法基本相同。 ode45函数是大部分场合的首选算法,ode23函数主要适用于精度较低的场合。 例:解经典非线性方程,范得波(Van der Pol)微分方程(ω=2)。 当t=0时,x=1,dx/dt=0。 解:(1)将高阶微分方程式等价变换成一阶微分方程组。 令y1=x且y2=dx/dt dy1/dt=y2 dy2/dt=w(1-y12)y2-y1 (2)编写M文件表示该微分方程,该文件给定时间及y1和y2的值,返回上述的导数值,并将y(y1和y2)与导数值以列向量的形式给出。 function fun2=vdpol(t,y) fun2=[y(2) 2*(1-y(1)^2)*y(2)-y(1)]’ %输出结果必须是列向量,w=2 (3)计算结果如下: [t,y]=ode45(vdpol,[0 30],[1;0]); y1=y(:,1); y2=y(:,2); plot(t,y1,:b,t,y2,-r) legend(‘位移’,‘速度) 3. 定积分的数值解法 MATLAB软件使用quad函数进行定积分的数值解法。使用格式为: q = quad(fun,a,b) fun:被积分函数 a、b:积分上下限 例:计算下列定积分 function y = myfun(x) y = 1./(x.^3-2*x-5); Q = quad(myfun,0,2) Q = -0.4605 F = @(x)1./(x.^3-2*x-5); Q = quad(F,0,2) Q = -0.4605 6.2 微分方程模型 6.2.1 方法描述 微分方程模型是数学模型的一种主要形式。当采用一阶微分方程的数值积分法进行数值计算时,应把高阶微分方程变换成n个一阶微分方程形式。对于微分方程而言,除了少数可以得到解析解外,大多数只能采用数值解法。 在MATLAB中,使用ode函数求解微分方程模型。 6.2.2 简单电路模型仿真 例:在RC电路中,电阻R=5Ω,理想电压源为Vi=20V,电容C=70μF。分析电容元件的电压特性。 (1)分析:电容电压和电流的关系 根据基尔霍夫定律,可得出微分方程 使用ode函数时,对微分方程进行如下假设 (2)建立导数函数 function dy=cap(t,y) Vi=20; R=5; C=70e-6; dy=(Vi-y)/(R*C); (3)使用ode函数进行仿真,仿真时间0~0.006s,Vc初始值为0V。 [t,y]=ode45(cap,[0,0.006],0); plot(t,y) axis([0 0.006 0 25]) title(Vc-Time) xlabel(Time/sec) ylabel(Vc/V) 当电压源为直流电压源时,加载在电容上的电压随时间呈抛物线

文档评论(0)

rewfdgd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档