222
ROZDZIAŁ 9. METODY NUMERYCZNE
są w danym przypadku potrzebne. Poniżej pokazano zasadę konstruowania pliku odefile.m w wersji poszerzonej czyli tak, aby umożliwiał on obliczanie i przekazywanie do algorytmu wybranych parametrów dodatkowych.
function [outl,out2,out3] = odefile(t,y,flag,pl,p2) if nargin < 3 I isempty(flag) "/.brak flag, licz pochodne outl = < miejsce na wzory liczające wektor pochodnych >;
else
switch(flag)
case ’init’ 7. podaj parametry [tspan,yO,options] . outl = < tu podaj tspan >; out2 = < podaj warunki początkowe >; out3 = < wstaw options = odeset(...) lub [] >;
case 'jacobian’ 7. Jakobian
outl = < J(t,y) = dF/dy >;
case 'jpattern’
outl = < wstaw macierz określającą niezerowe elementy Jakobianu>;
7, wzorzec macierzy rzadkiej Jakobianu
case 'mass1
outl = < wstaw macierz masy M(x) >;
case ’events’ 7.algorytm całkujący wykrywa przejście rozwiązania 7.przez zero w danym kroku całkowania outl = < wektor: obserwowane wartości, np. out 1=[y(1),y(2)]>; out2 = < wektor: zera i jedynki, jedynka zatrzyma obliczenia>;
7. np. out2=[l;0]; zerowanie y(l) zatrzyma obliczenia out3 =<wektor: określa interesujący kierunek przejścia przez zero> 7. +1 dodatni, -1 ujemny, 0 - dowolny 7. np. out3=[-l,0] obserwuj tylko zmniejszanie y(l)
otherwise
error([’ERR0R, nie zdefiniowana flaga: ’’’ flag ’ ’’.’]);
end end
Symbolic Math Toolbox pozwala uzyskać rozwiązanie analityczne dla równania różniczkowego zwyczajnego. Zapis funkcji będącej rozwiązaniem dokładnym równania (9.2) z rozdziału 9.1.2 otrzymuje się jako rezultat natępującego zestawu poleceń:
>> syms x
7. deklarowanie x jako zmiennej niezależnej