MATLAB a numerické metod MATLAB je velmi vhodný nástroj pro numerické výpočt mnoho problémů je již vřešeno (knihovní funkce nebo Toolbo), jiné si můžeme naprogramovat sami. Budeme se zabývat některými oblastmi numerické matematik. V následujícím tetu jsou nastíněn některé běžné numerické metod.!!! Nikde není uveden odhad chb.!!!!
Numerická integrace Používáme ji v případě, že potřebujeme nalézt určitý integrál funkce na daném intervalu, ale neznáme (neumíme nalézt) primitivní funkci: I ( ) Metod jsou založené na rozdělování intervalu [a,b] na n dílků a výpočtu obsahu jednoduché ploch (např. obdélníkové) nad každým dílkem. Podmínka: funkce f musí být spojitá. b a f d
zleva Obdélníková metoda f I n 1 i i 1 i= 0 zprava ( ) i a= 0 1... n-1 n =b I n i= 1 i ( ) i i 1 f a= 0 1... n-1 n =b
Lichoběžníková metoda aproimace polnomem 1. stupně: I n 1 i= 0 i 1 i ( ) i 1 i f a= 0 1... n-1 n =b
Simpsonovo pravidlo aproimace polnomem. stupně:!potřebuje ekvidistantní dělení intervalu [a,b] ( ) ( ) ( ) ( ) ( ) 1 4 1 3 1 0 4 3 d f 4 3 = k k k n n n h n a b h h I k k K K f a= 0 n =b 1... n-1
Další metod Předchozí metod se obecně nazývají Newtonov-Cotesov vzorce. Kromě nich eistují i jiné metod výpočtu určitého integrálu: Gaussova metoda integrace (Legendreov polnom), vužití Richardsonov etrapolace, Rombergova metoda,...
Jak v MATLABu Matlab obsahuje tto funkce pro num. integraci: quad... rekurzivní adaptivní Simpsonovo pravidlo quadl... adaptivní Gaussova-Lobattova kvadratura quad8... Newtonov-Cotesov vzorce 8. řádu Příklad - výpočet ploch od 0 do 1 ohraničené funkcí 1 1 f ( ) = 6 0,3 0,01 0,09 0,04 ( ) ( ) f=inline('1./((-.3).^.01)1./((-.9).^.04)-6'); fplot(f,[0,1]); % graf na intervalu [0;1] grid % zapnout mřížku hold on % zachovat pův. graf stem(0:.0:1,f(0:.0:1)) % stopkový graf quad(f,0,1) % spočítat urč. integrál numerick
Dvojný a trojný integrál Numerický výpočet dvojného integrálu: funkce dblquad, která implicitně používá metodu funkce quad, ale lze ji donutit používat jinou metodu (předáním handle funkce, která má stejné vstupní parametr jako quad). Numerický výpočet trojného integrálu: funkce triplequad, která opět implicitně vužívá pro výpočet funkci quad, ale lze jí předat i jinou metodu (handle funkce se stejnými tp vstupů jako má quad).
Numerická derivace Používáme ji v případě, že potřebujeme včíslit derivaci funkce v daných bodech, ale neznáme (neumíme nalézt) funkční předpis derivace. Nejjednodušším řešením je nahradit derivaci zlomkem (h musí být malé číslo ): f ( ) f ( h) f ( ) Podmínka: známe předpis původní funkce h
h n n n n 3 4 d d 1 1,..., d d 1 1 = n i h i i i Lepších výsledků (tj. s menší chbou) dosáhneme použitím vztahů: první vnitřní poslední Zde může funkce být zadána i tabulkou hodnot. h 4 3 d d 1 0 0
Řešení nelineární rovnice hledáme reálné číslo a, pro které platí f(a) = 0; [a je kořen rovnice f() = 0] nelineární, algebraické i transcendentní rovnice jedné reálné proměnné určování reálných kořenů těchto rovnic (reálné kořen rovnice jsou průsečík grafu funkce a os ) u některých metod je požadována separace kořenů rovnice (provedeme ji grafick )
Metoda půlení intervalu = metoda bisekce vžd konvergentní, pokud jsou splněn podmínk použití: 1. funkce f je spojitá v daném intervalu. funkční hodnot v krajních bodech zvoleného intervalu mají opačná znaménka konverguje pomalu
Metoda půlení intervalu a 1 b 1 = f() a a b 1 0 b a 3 b 3 i = s je střed příslušného intervalu a i 0 b 0 Zdroj: http://www.kvd.zcu.cz/cz/material/numet/_numet.html
Metoda tětiv (regula falsi) je konvergentní pro všechn spojité funkce funkční hodnot v krajních bodech zvoleného intervalu musí mít opačná znaménka konverguje relativně pomalu
Metoda tětiv (regula falsi) = f() f( ) 0 f( ) 1 a 1 3 0 ξ (kořen) Zdroj: http://www.kvd.zcu.cz/cz/material/numet/_numet.html
Newtonova metoda = metoda tečen podmínk: 1. funkce musí být v okolí kořene spojitá. funkce nesmí mít v okolí kořene nulovou derivaci 3. znalost první derivace funkce pokud metoda konverguje, tak většinou rchleji než metoda bisekce
Newtonova metoda = f() tečna X X 1 X 0 Zdroj: http://www.kvd.zcu.cz/cz/material/numet/_numet.html
Přímá iterační metoda = prostá iterace rovnice f() = 0 se nahradí rovnocennou rovnicí ve tvaru = ϕ() (ϕ nazýváme iterační funkcí) podmínk: v daném intervalu musí být fce f spojitá ϕ'() < 1 konvergence metod závisí na vhodné volbě iterační funkce a na volbě 0
Přímá iterační metoda = = () ϕ () <1 0 1 ξ 3 Zdroj: http://www.kvd.zcu.cz/cz/material/numet/_numet.html
Další metod metoda sečen (sekantová metoda) Čebševova metoda Halleho-Richmondova metoda Riddersova metoda...
Jak v MATLABu Matlab podporuje práci s kompleními čísl a s polnom, takže hledání kořenů nelineárních rovnic lze rozdělit na: hledání kořenů polnomu, tj. řešení rovnice P()=0, kde P() je polnom stupně n (funkce roots vrací všechn kořen, i komplení). jiné rovnice musíme řešit pomocí: funkce solve (Smbolic Toolbo), knihovní funkce fzero, uživatelskými funkcemi (naprogramované některé numerické metod). http://vukaap.vscht.cz/html/kap11.html
Příklad: nalezněte řešení rovnice 3 sin() = 0 v intervalech [-1,1], [-3,-1], [1,3]. Řešení v MATLABu: f = @() 3*sin()-; % definice funkce (anonmní) fplot(f,[-4 4]) % koukneme na graf 1 = fzero(f, 1.0) % první řešení, poblíž =1 = fzero(f, -.0) % druhé řešení, blízko =- 3 = fzero(f,.0) % třetí řešení, blízko = % vlepšení (více informací o průběhu výpočtu): info=optimset('displa','iter'); % chci iterace [3,f_3,stav,out_info]=fzero(f,-.0,info); out_info.algorithm % jaký algoritmus bl použit
Řešení soustav rovnic SOUSTAVY LINEÁRNÍCH ROVNIC [SLR] - přímé metod: Gaussova eliminace, Gaussova-Jordanova eliminace, LU-rozklad, QR-rozklad, Choleskho rozklad... MATLAB: fce null (homogenní SLR), operátor \ (partikulárnířešení), fce rref (Hermiteův tvar rozšířené matice soustav), fce solve (Smbolic Toolbo); funkce pro rozklad matice: lu (luinc), qr, chol (cholinc) http://vdavatelstvi.vscht.cz/knih/uid_isbn-80-7080-558-7/pages-img/014.html - iterační metod: Jacobiova metoda, Gaussova-Seidelova metoda,... http://vdavatelstvi.vscht.cz/knih/uid_isbn-80-7080-558-7/pages-img/00.html
SOUSTAVY NELINEÁRNÍCH ROVNIC [SNR] - přímé metod:...?... (obecná eaktní metoda neeistuje) MATLAB: funkce Smbolic Toolbou solve nebo funkce Optimization Toolbou (především fsolve) - iterační metod: metoda prosté iterace, Newtonova metoda (metoda linearizace), Picardova metoda,...