MATLAB在常微分方程上的應用 楊惠如 老師:王天楷教授 2005/8/30
數值分析法 Taylor series Runge-Kutta Method
y後=y前+(x後-x前)y’前+ y’’前 Taylor’s series 一階 二階 Runge-Kutta Method A first-order Runge-Kutta method: uses a first-order Taylor series expansion 一階 y後=y前+(x後-x前)y’前 二階 y後=y前+(x後-x前)y’前+ y’’前
MATLAB在常微分方程上的應用 函數解法的特點 M檔案 ODE範例
函數解法的特點 ode45 ode23 ode113 ode23t ode23s ode15s ode23tb 4階/5階Rung-Kutta(4,5)法。採單步法,速度快,作為解問題的初試法 ode23 2階/3階Rung-Kutta(2,3)法。對於誤差容許範圍較寬且稍帶剛性問題比ode45效果好 ode113 採可變階的Adams-Bashforth-Moulton PECE法,屬於多步解法,比ode45更適合於誤差容許範圍要求較嚴格時 ode23t 採自由內插法實現的梯形規則,適用剛性並要求無數值衰減的問題 ode23s 採用改進的2階Rosenbrock法,採單步法,比ode15s更適於誤差範圍容許較寬的情況。 ode15s 可變階的數值微分公式法(NDFs),屬於多步解法,如果用在ode45效果很差或失敗,可考慮用此方式。可解剛性問題。 ode23tb 採用TR-BDF2方法,和ode23s一樣,對於誤差容許範圍較寬的情況,比ode15s效果好,可解剛性問題 資料來源:蔡宏睿
M檔案 以MATLAB程式碼所撰寫的檔案通常以 “ m ” 為副檔名,所以這些檔案又稱為M檔案 M檔案又可分為兩類—”函式” 和”主程式” 資料來源:蔡宏睿
ODE範例 y’=3x2 函式 function dy=ff(x,y) dy=3*x.^2 執行 ode45(‘ff’,[2 7],0.5) 檔名 y的初值 X的範圍
ODE範例 函式 function yprime=cc(x,y) yprime=[y(2);-sin(y(1))] 執行 ode45(‘cc’,[0 10],[1;1.5])
ODE範例 y1(0)=1 y2(0)=1 y3(0)=1 函式 function yprime=bb(t,y,a,b,c) yprime=[-y(2)-y(3);y(1)+a*y(2);b+y(3)*(y(1)-c)] options=odeset(‘AbsTol’,1e-7,’Reltol’,1e-4) 絕對誤差 相對誤差 1·10-4 執行 ode45(‘bb’,[0 100],[1;1;1],options,a,b,c)
bb.m
報告完畢 謝 謝