《常微分方程式》PPT课件.ppt
《《常微分方程式》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《常微分方程式》PPT课件.ppt(46页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、MATLAB 程式設計進階篇:常微分方程式MATLAB 程序设计进阶篇常微分方程式張智星http:/www.cs.nthu.edu.tw/jang清大资工系 多媒体检索实验室MATLAB 程式設計進階篇:常微分方程式11-1 ODE 指令列表 nMATLAB用于求解常微分方程式的指令:指令方法適用ODE類別ode45Explicit Runge-Kutta(4,5)pair of Dormand-PrinceNonstiff ODEode23Explicit Runge-Kutta(2,3)pair of Bogacki and ShampineNonstiff ODEode113Variab
2、le order Adams-Bashforth-Moulton PECE solverNonstiff ODEode15sNumerical differentiation formulas(NDFS)Stiff ODEode23sModified Rosenbrock formula of order 2Stiff ODEode23t Trapezoidal rule with a“free”interpolantStiff ODEode23tbImplicit Runge-Kutta formula with a backward differentiation formula of o
3、rder twoStiff ODEMATLAB 程式設計進階篇:常微分方程式ODE 指令列表n指令项目繁多,最主要可分两大类n适用于Nonstiff系统n一般的常微分方程式都是Nonstiff系统n直接选用ode45、ode23或ode113来求解n适用Stiff系统n速率(即微分值)差异相常大n使用一般的ode45、ode23或ode113来求解,可能会使得积分的步长(Step Sizes)变得很小,以便降低积分误差至可容忍范围以内,会导致计算时间过长n专门对付Stiff系统的指令,例如ode15s、ode23s、ode23t及ode 23tbMATLAB 程式設計進階篇:常微分方程式提示
4、n使用 Simulink 來求解常微分方程式nSimulink是和MATLAB共同使用的一套软件n可使用拖拉的方式来建立动态系统n可直接产生C程序代码或进行动画显示n功能非常强大 MATLAB 程式設計進階篇:常微分方程式11-2 ODE 指令基本用法 n使用ODE指令时,必须先将要求解的ODE表示成一个函式n输入为t(时间)及y(状态变量,State Variables)n输出则为dy(状态变量的微分值)nODE函式的档名为odeFile.m,则呼叫ODE指令的格式如下:t,y=solver(odeFile,t0,t1,y0);nt0,t1是积分的时间区间ny0代表起始条件(Initial
5、Conditions)nsolver是前表所列的各种ODE指令nt是输出的时间向量ny则是对应的状态变量向量MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法n以van der Pol微分方程为例,其方程式为:n化成标准格式n可用向量来表示成一般化的数学式n 为一向量,代表状态变量MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法n假设=1,ODE档案(vdp1.m)可显示如下:type vdp1.m function dy=vdp1(t,y)mu=1;dy=y(2);mu*(1-y(1)2)*y(2)-y(1);n有了ODE档案,即可选用前述之ODE指令来求解MATL
6、AB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-1(I)n在 =1 時,van der Pol 方程式并非Stiff系统,所以使用ode45来画出积分的结果n範例11-1:odeBasic01.mode45(vdp1,0 25,3 3);MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-1(II)n 0,25 代表积分的时间区间,3 3 则代表起始条件(必须以行向量来表示)n因为没有输出变量,所以上述程序执行结束后,MATLAB只会画出状态变量对时间的图形MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-2(I)n要取得积分所得的状态变量及对应的
7、时间,可以加上输出变量以取得这些数据n范例11-2:odeGetData01.mt,y=ode45(vdp1,0 25,3 3);plot(t,y(:,1),t,y(:,2),:);xlabel(Time t);ylabel(Solution y(t)and y(t);legend(y(t),y(t);MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-2(II)MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-3(I)n也可以画出 及 在 相位平面(Phase Plane)的运动情况n範例11-3:odePhastPlot01.mt,y=ode45(vdp1
8、,0 25,3 3);plot(y(:,1),y(:,2),-o);xlabel(y(t);ylabel(y(t);MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-3(II)n当 值越来越大时,van der Pol方程式就渐渐变成一个Stiff的系统,此时若要解此方程式,就必须改用专门对付Stiff系统的指令MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-4(I)n将 值改成1000,ODE档案改写成(vdp2.m):type vdp2.m function dy=vdp2(t,y)mu=1000;dy=y(2);mu*(1-y(1)2)*y(2)-y
9、(1);MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-4(II)n选用专门对付Stiff系统的ODE指令,例如ode15s,来求解此系统并作图显示n範例11-4:ode15s01.mt,y=ode15s(vdp2,0 3000,2 1);subplot(2,1,1);plot(t,y(:,1),-o);xlabel(Time t);ylabel(y(t);subplot(2,1,2);plot(t,y(:,2),-o);xlabel(Time t);ylabel(y(t);%注意單引號的重覆使用MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-4(III
10、)n由上图可知,的变化相当剧烈(超过 ),这就是Stiff系统的特色MATLAB 程式設計進階篇:常微分方程式ODE 指令基本用法範例-5(I)n若要画出二维平面相位图,可以使用下列范例:n范例11-5:ode15s02.mn若要产生在某些特定时间点的状态变量值,则呼叫ODE指令的格式可改成:t,y=solver(odeFile,t0,t1,tn,y0);n其中t0,t1,tn即是特定时间点所形成的向量t,y=ode15s(vdp2,0 3000,2 1);subplot(1,1,1);plot(y(:,1),y(:,2),-o);xlabel(y(t);ylabel(y(t)MATLAB 程
11、式設計進階篇:常微分方程式ODE 指令基本用法範例-5(II)MATLAB 程式設計進階篇:常微分方程式11-3 ODE 指令的選項nODE指令可以接受第四个输入变量,代表积分过程用到的各种选项(Options),此种ODE指令的格式为:t,y=solver(odeFile,t0,tn,y0,options);n其中options是由odeset指令来控制的结构变量n结构变量即包含了积分过程用到的各种选项nodeset的一般格式如下:options=odeset(name1,value1,name2,value2,)n其字段name1的值为value1,字段name2的值为value2,依此类
12、推n未被设定的字段,其域值即为默认值MATLAB 程式設計進階篇:常微分方程式ODE 指令的選項n也可以只改变一个现存的options结构变量中,某个字段的值,其格式如下:newOptions=odeset(options,name,value);n若要读出某个字段的值,可用odeget,其格式如下:value=odeget(otpions,name);n其中name为域名,value即为对应的域值n当使用odeset指令时,若无任何输入变量,则odeset会显示所有的域名及域值,并以大括号代表默认值MATLAB 程式設計進階篇:常微分方程式ODE 指令的選項 odeset AbsTol:po
13、sitive scalar or vector 1e-6 RelTol:positive scalar 1e-3 NormControl:on|off NonNegative:vector of integers OutputFcn:function_handle OutputSel:vector of integers Refine:positive integer Stats:on|off InitialStep:positive scalar MaxStep:positive scalar BDF:on|off MaxOrder:1|2|3|4|5 Jacobian:matrix|fun
14、ction_handle JPattern:sparse matrix Vectorized:on|off Mass:matrix|function_handle MStateDependence:none|weak|strong MvPattern:sparse matrix MassSingular:yes|no|maybe InitialSlope:vector Events:function_handle MATLAB 程式設計進階篇:常微分方程式由 odeset 產生的 ODE 選項 類別欄位名稱資料型態預設值說明誤差容忍度之相關欄位RelTol正純量相對誤差容忍度AbsTo1正純量
15、或向量絕對誤差容忍度積分輸出之相關欄性OutPutFcn字串odeplot輸出函式(若 ODE 指令無輸出變數,則在數值積分執行完畢後,MATLAB 會呼叫此輸出函式)OutputSel索引向量全部ODE 指令之輸出變數的索引值,以決定那些輸出變數之元素將被送到輸出函式Refine正整數1或4(for ode45)Refine=2 可產生兩倍數量的輸出點,Refine=3 可產生三倍數量的輸出點,依此類推。Statson 或 offoffStats=on 產生計算過程的各種統計資料。MATLAB 程式設計進階篇:常微分方程式由 odeset 產生的 ODE 選項若F(t,y,Jacobian)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 常微分方程式 微分 方程式 PPT 课件
限制150内