ODE SOLVER-ek használata a MATLAB-ban Mi az az ODE? ordinary differential equation Milyen ODE megoldók vannak a MATLAB-ban? ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb, stb. A részletes leírásuk elérhető a: http://www.mathworks.com/help/matlab/ref/ode45.html?searchhighlight=ode45#bti6n8p-45 -n. Szintaktika [T,Y] = solver(odefun,tspan,y0) [T,Y] = solver(odefun,tspan,y0,options) 1. A fenti bemenő argumentumok jelentése: 2. A kimenet argumentumainak jelentése: odefun tspan y0 options Annak a function-nak a neve, amiben letároltuk az egyenletünket. Az integrálás határait megadó vektor. Pl. ha 0 és 2 m között vagyunk kíváncsiak egy nyaláb gyengülésére, akkor [0 2]. Ha azt szeretnénk, hogy 1.5 m-nél mindenképpen legyen számított pontunk, akkor [0 1.5 2] A kezdeti feltételek vektora. Plusz opciókat is készíthetünk a solver számára az odeset függvény segítségével. T Y A megoldás-függvény argumentumát leíró vektor. A megoldás-függvény. Minden pontja T egy elemében számolódik ki. Hogyan áll össze a feladat megoldása a MATLAB ban? Kell: 1. Egy függvény (function), amelyben letároljuk a megoldandó egyenletet 2. Egy script, ami megoldja az egyenletet 1
Példa: A megoldandó egyenlet: di = μ I dx 1. Lépés: Írjuk meg a function-t, amiben tároljuk az egyenletet! function di_dx=exp_gyeng_equ(x,i) mu=2; di_dx = -mu*i; end Ennek ugye az alábbi paraméterekre lesz szüksége: x, I 2. Hívjuk meg egy script-en belül az ode45-t az egyenlet megoldására! % Milyen x koordinátákra akarjuk megoldani? x=0:0.1:3; % Mi a kezdeti intenzitás (=kezdeti feltétel)? I0=1000; % Hívjuk meg a solver-t! % szintaxis: [kimenő paraméter1, kimenő paraméter2] = % =solver_neve('annak a file-nak a neve, ami a megoldandó egyenletet tartalmazza', % az a tartomány, ahol meg akarjuk oldani az egyenletet, kezdeti feltétel) [X,I]=ode45('exp_gyeng_equ',x,I0); % Ábrázoljuk a megoldást! plot(x,i) title('exp. gyengules') xlabel('x (cm)') ylabel('i (a.u.)') 3. Gyönyörködjünk a megoldásban! 2
Differenciálegyenlet-rendszer megoldása MATLAB-bal Amit megoldunk: Az egyenletrendszer: Kezdeti feltételek: y 1 = y 2 y 3 y 1 (0) = 0 y 2 = y 1 y 3 y 2 (0) = 1 y 3 = 0.5 y 1 y 2 y 3 (0) = 1 Ugyanaz a két lépés, mint előbb, csak más function-t kell írni! A keresett y-ok 1 db y változó különböző elemei lesznek y 1 y(1); y 2 y(2), stb. Ugyanígy a deriváltak is egy dy_dt változó különböző elemei. function dy_dt = de_rendszer_equ(t,y) dy_dt = zeros(3,1); dy_dt(1) = y(2) * y(3); dy_dt(2) = -y(1) * y(3); dy_dt(3) = -0.51 * y(1) * y(2); end A 2. lépés lényegében ugyanaz, mint előbb. A változatosság kedvéért most egy másik ekvivalens módon hívjuk meg a függvényt: % Hívjuk meg a solver-t! % szintaxis: [kimenő paraméter1, kimenő paraméter2] = % =solver_neve(@annak a file-nak a neve, ami a megoldandó egyenletet tartalmazza, % az a tartomány, ahol meg akarjuk oldani az egyenletet, kezdeti feltétel) [T,Y] = ode45(@de_rendszer_equ,[0 12],[0 1 1]); % Ábrázoljuk a megoldást! plot(t,y) 3
Feladatok 1. Egyszerű bomlás analitikus megoldása dn = λ N dt N(t) N radioaktív atommagok száma [-] vagy [db] = N 0e λt N 0 t=0 pillanatban a radioaktív atommagok száma λ bomlási állandó [1/s] vagy [db/s] Legyen a vizsgált elem a 38 90 Sr a következő paraméterekkel: N 0 = 10 5, T 1/2 = 28,9 év. Ábrázoljuk az analitikus megoldás alapján a magok számát a 0-100 év időskálán MATLAB-bal! 2. Xenon-mérgezettség A 135 Xe a 135 I-ből keletkezik ß-bomlással, de lehet közvetlenül hasadási termék is, és neutron befogással stabil 136 Xe-ná alakul, valamint ß-bomlással tovább bomolhat. Mivel a Xe neutron befogási hatáskeresztmetszete és a kumulált keletkezési gyakorisága is igen nagy, ezért jelentős reaktivitáscsökkentő hatáshoz vezet. A két izotóp időbeli alakulását az alábbi két egyenlet írja le: dn I (t) dt dn Xe (t) dt = Σ f φγ I λ I N I (t) = Σ f φγ Xe + λ I N I (t) (λ Xe + φσ a,xe )N Xe (t) Ahol: γ I = 0,061 és γ Xe = 0,003 a keletkezési gyakoriságok λ I = 2,89 10 5 1/s, λ Xe = 2,09 10 5 1/s a bomlási állandók σ a,xe = 2,72 10 6 barn a 135 Xe izotóp neutron befogási hatáskeresztmetszete (megfelelő energiájú neutronokra) (1 barn = 10-24 cm 2 ) Σ f = 12,9 1/cm a makroszkopikus hatáskeresztmetszet 4
Oldjuk meg MATLAB-bal numerikusan a fenti differenciálegyenlet rendszert a következő kezdeti feltételekkel és fluxussal: 1. Kezdetben (t<0) φ = 0! Vizsgáljuk meg, hogyan áll be a xenon és a jód atommagok számának egyensúlya, ha t=0 + időpillanatban φ 1 = 10 14 n cm 2 s ra változik a fluxus. Mennyi idő alatt áll be az egyensúly (nagyjából)? Mekkora lesz az egyensúlyi atommag-szám a két elem esetében (T es, N I,es, N Xe,es)? (A mellékelt ábrán ez az egyensúlyi pont a szaggatott vonal.) 2. Vizsgáljuk meg mi történik, ha az egyensúly beállása után a fluxust a felére csökkentjük (φ 2 = 0.5 10 14 n )! Vagyis futtassuk le ugyanazt a szimulációt (függvényt) azokkal a kezdeti atommag-szám cm 2 s értékekkel, amelyek az egyensúly beállásakor megkaptunk, valamint φ 2 fluxussal! 5