co byste měli umět po dnešní lekci: vyřešit dif.rovnici Eulerovou metodou vyřešit dif.rovnici metodou prediktor-korektor vyřešit dif.rovnici metodou Runge-Kutta vyřešit soustavu diferenciálních rovnic znát rozdíl mezi explicitní a implicitní metodou řešení dif.rovnic vědět, co je hraniční úloha a jak je ji možno řešit vyřešit dif.rovnici vyššího řádu převedením na soustavu dif.rovnic prvního řádu
Eulerova metoda tečna v bodě t i y Příklad: Řešte dif.rovnici: s počáteční podmínkou Numerické řešení porovnejte s analytickým výsledkem h t
Metoda prediktor-korektor prediktor korektor y prediktor y korektor t t
Metoda prediktor-korektor prediktor korektor iterativní výpočet
Metoda Runge-Kutta přírůstková funkce a i jsou konstanty Metoda Runge-Kutta 2.řádu máme 3 rovnice a 4 neznámé = volíme hodnotu a 2 a 2 =1/2 prediktor/korektor, a 2 =1 midpoint, a 2 =2/3 Ralstonova metoda
Metoda Runge-Kutta 2.řádu function [t,y]=rk2(drce,y0,t,a2) h=t(2)-t(1); n=length(t); y=zeros(size(t)); y(1)=y0; a1=1.0-a2; p1=1.0/2.0/a2; q11=p1; for k=1:n-1 k1=feval(drce,t(k),y(k)); k2=feval(drce,t(k)+p1*h,y(k)+q11*k1*h); y(k+1)=y(k)+(a1*k1+a2*k2)*h; end
Metoda Runge-Kutta 4.řádu
Metoda Runge-Kutta 5.řádu
Soustavy diferenciálních rovnic závaží na pružině k=0.25 kg/m, g=9.81 ms -2, m=68.1 kg, x(t=0)=0, v(t=0)=0 t=t(:); h=t(2)-t(1); n=length(t); m=length(y0); y=zeros(n,m); y(1,:)=y0; for k=1:n-1 k1=feval(sdrce,t(k),y(k,:)); k2=feval(sdrce,t(k)+0.5*h,y(k,:)+0.5*k1*h); k3=feval(sdrce,t(k)+0.5*h,y(k,:)+0.5*k2*h); k4=feval(sdrce,t(k)+h,y(k,:)+k3*h); y(k+1,:)=y(k,:)+1.0/6.0*(k1+2*k2+2*k3+k4)*h; end
Implementované funkce Octave/Matlabu pro řešení diferenciálních rovnic Octave: y = lsode (funkce, y_0, t, t_krit) - t_krit je vektor hodnot t, které by mohli působit potíže (singularity,...) lsode_options (OPT, VAL) - nastavení parametrů řešení pomocí lsode Matlab a Octave: (v Matlabu jeste ode45,...) adaptivní Runge-Kutta [tout, xout] = ode23(funkce,t,y0,ode_fcn_format,tol,trace,count,hmax) v Octave/Matlabu si prostudujte help k výše uvedeným funkcím a zkuste vyřešit předchozí příklady pomocí těchto funkcí
Implicitní řešení diferenciálních rovnic forward centered backward Hledejme řešení dif. rovnice i=1 počáteční podm. je-li g(x,y) lineární v y, máme soustavu (n-2) rovnic pro (n-1) neznámých pomůžeme si např. Eulerovou metodou
Příklad: Řešte rovnici implicitní metodou pro x=<0,5>, h=0.5, y(0)=1. Řešení porovnejte s Eulerovou metodou a metodou R-K. Řešení: (n=11) pomocná rovnice pro n=5 řešíme soustavu rovnic: Pozn.: analytické řešení je
Chaotické proudění (Rösslerovo proudění)
Hraniční úloha Řešení diferenciálních rovnic I. y nemáme informaci o hodnotě derivace v x 0 y 1 spočtu několik řešení pro různé hodnoty a správnou hodnotu derivace v x 0 určím interpolací z hodnot v bodě x 1 metoda střelby x 0 x 1 x diferenciální rovnice vyšších řádu se povětšinou řeší převodem na soustavu dif. rovnic prvního řádu, tam znalost derivací v x 0 potřebuji
Hraniční úloha Řešení diferenciálních rovnic I. Řešení: dif. rovnici 2.řádu převedu na soustavu 2 dif.rovnic 1.řádu
Úloha: Řešte diferenciální rovnici Eulerovou metodou a metodou Runge-Kutta 4.řádu, y(t=0)=1, pro velikost kroku h=0.5 a 0.25 pro t=<0,2>. Úloha: Řešte soustavu diferenciálních rovnic metodou Runge-Kutta 4.řádu, y(t=0)=2,z(t=0)=4, pro velikost kroku h=0.1 pro t=<0,0.4>.