Simulace dynamických systémů v Matlabu, Simulink Runge Kutta metody s adaptací Dt během řešení Využití vnořené (embeded) R-K metody (ode23, ode45) V každém kroku se řeší následující optimalizační úloha: 1. výpočet R-K 5. (3.) řádu s krokem Dt: 2. výpočet vnořenou R-K 4. (2.) řádu s krokem Dt: 3. odhad chyby 4. porovnání odhadu chyby s předepsanout tolerancí etol výsledek s Dt akceptovánvýpočet v dalším kroku s Dt výsledek s Dt akceptovánvýpočet v dalším kroku s Dt=2Dt zkrátit Dt=Dt/2 opakovat výpočet v současném kroku od bodu 1.
Simulace dynamických systémů v Matlabu, teorie Stabilita numerických metod Oblast stability expl. metod Výše uvedené metody byly tak zvaně explicitní metody (neznámá se vyskytuje pouze na levé straně rovnice). Tyto metody jsou jednoduše řešitelné, ale mají poměrně úzkou oblast stability vzhledem k velikosti kroku . Jestliže jsou vlastní čísla matice A systému (popřípadě tzv. Jakobiho matice Jx nelineárního systému), pak pro stabilitu metody je nutné aby body ležely uvnitř oblasti stability. I když oblast stability expl. metod je poměrně malá, k řešení běžných úloh tyto postačují, zvláště, jeli krok adaptován. Obtížně řešitelné jsou tzv. Stiff systémy, u nichž platí, že - vl. číslo s max. modulem - vl. číslo s min. modulem kde
Simulace dynamických systémů v Matlabu, teorie Implicitní metody Neznámá se vyskytuje i na pravé straně rovnice. Př. Impl. Eulerova metoda Obtížně řešitelné, praktická využitelnost pouze pro lineární systémy Široká oblast stability vzhledem ke kroku metody – vhodné pro Stiff systémy. Oblast stability impl. metod Semi-mplicitní metody (ode15s, ode23s) Implicitnost vzorce řešena a) linearizací v každém kroku b) numericky, Newtonovou iterační metodou metody BDF (Backward Differentiation Formula), např. Gearova metoda a její modifikace NDF (Numerical Differentiation Formula) – implementace ode15s, ode23s širší oblast stability spolu s adaptací délky kroku nabízí robustní, velice stabilní metody
Simulace dynamických systémů v Matlabu, Simulink Příklad Porovnejme výsledky simulace odezvy Stiff systému druhého řádu, na počáteční podmínky a to zejména délku kroku jednotlivých solverů. options=simget('stiff'); %stiff.mdl for k=1:5 switch k case 1 options=simset(options,'solver','ode45'); c='r'; case 2 options=simset(options,'solver','ode23'); c='b'; case 3 options=simset(options,'solver','ode15s'); c='g'; case 4 options=simset(options,'solver','ode23s'); c='m'; end [t,x]=sim('stiff',6,options); figure(1) plot(t,x(:,1),c), hold on figure(2) plot(t(2:end)-t(1:end-1),c), hold on end legend('ode45','ode23','ode15s','ode23s') xlabel('t'),ylabel(‘x_1') xlabel('pocet vzorku'),ylabel('\Delta t')
Simulace dynamických systémů v Matlabu, Simulink stiff.mdl V modelu stiff.mdl byla nastavena požadovaná relativní chyba . Jak je patrné, Stiffové metody ode15s a ode23s mají výrazně delší krok a kratší dobu simulace než ode45 a ode23.
Simulace bez Simulinku Simulace dynamických systémů v Matlabu, ode45 Simulace bez Simulinku Problém numerického řešení odezvy stavového modelu lze řešit i bez Simulinku, např. pomocí solveru ode45 (ode23, ode15s, ode23s....) s následnou syntaxí Dáno: Hledáme: [t,x] = ode45(@fce,[0 tmax],x0,options,par1, par2,...) t, x – výsledek řešení, vektory času a stavu fce – funkce, ve které jsou definovány stavové rovnice (@ - povinný parametr) [0 tmax] – rozsah času options – parametry solveru – možno měnit pomocí příkazu odeset par1, par2 – parametry modelu Definice funkce pravých stran function dx=fce(t,x,par1,par2,..) dx(1,1)=f1(x,t) dx(2,1)=f2(x,t)
Simulace dynamických systémů v Matlabu, ode45 Příklad Sestavme funkci pro řešení odezvy systému Van der Pole pomocí solveru ode45, v závislosti na parametrech A, u a x(0) function VdPole(A,u,x0) options = odeset('MaxStep',0.1); [t,y] = ode45(@fvdp,[0 100],x0,options,u,A); plot(y(:,1),y(:,2)), grid xlabel('x_1'), ylabel(‘x_2') function dx = fvdp(t,x,u,A) dx(1,1)=x(2); dx(2,1)=A*(1-x(1)^2)*x(2)-x(1)+u; >> VdPole(0.3,-1,[1;1])
Nespojité nelinearity v Simulinku – knihovna Discontinuities Simulace dynamických systémů v Matlabu, Simulink Nespojité nelinearity v Simulinku – knihovna Discontinuities Statický omezovač wmax x w wmin
Simulace dynamických systémů v Matlabu, Simulink Necitlivost w m2 m1 x
Simulace dynamických systémů v Matlabu, Simulink Omezení integrace Odlišnost omezení integrace od statického omezovače spočívá v tom, že toto omezení nemůže být aplikováno až na výsledek integrace, ale vždy už na způsob jejího provedení Příklad Omezení zdvihu pístového pohonu Další příklad: omezení integrační složky regulátoru
Simulace dynamických systémů v Matlabu, Simulink Omezení simultánní integrace Integrace je zastavena, když výstup integrátoru dosáhne omezující hodnoty. Od omezující hodnoty se poté výstup odlepí až když vstup změní znaménko.
Simulace dynamických systémů v Matlabu, Simulink Reset integrátoru V bloku integrátoru lze nastavit nulování výstupní hodnoty na základě vnějšího signálu – a to sice pomocí volby external reset, která je explicitně nastavena na none. Resetovací signál se poté přivede do druhého vstupu integrátoru.
Simulace dynamických systémů v Matlabu, Simulink Coulombovo a vizkózní tření f(v) = 0 pro v = 0, - odlehčený stav bez smyku f(v) = kF0 , pro v = 0, - v zatíženém stavu bez smyku f(v) = f0(v) , - pro vzájemný skluz
Simulace dynamických systémů v Matlabu, Simulink Přepínání platnosti relací V některých případech se pravá strana stavové rovnice, nebo její část mění v závislosti na nějakém paramteru, např. stavové proměnné. Příklad Stavové rovnice
Simulace dynamických systémů v Matlabu, Simulink m1=1000; m2=700;b1=10; b2=5;H=2000; C=2500;L0=7; sim('auta') subplot(3,1,1), plot(tout,v1,'r') hold on, grid plot(tout,v2,'b') xlabel('t'),ylabel('v') legend('v_1', 'v_2') subplot(3,1,2) plot(tout,L),grid xlabel('t'),ylabel('L') subplot(3,1,3) plot(tout,h,'r') plot(tout,S,'b') xlabel('t'),ylabel('H, S') legend('H','S') Přepínání relací je realizováno pomocí bloku Switch
Simulace dynamických systémů v Matlabu, Simulink