MATLAB a numerické metody - FILES.klaska.net hodin...MATLAB a numerické metody MATLAB je velmi...
Transcript of MATLAB a numerické metody - FILES.klaska.net hodin...MATLAB a numerické metody MATLAB je velmi...
-
MATLAB a numerickémetody
MATLAB je velmi vhodný nástroj pro numerickévýpočty – mnoho problémů je již vyřešeno (knihovní funkce nebo Toolboxy), jiné si můžeme naprogramovat sami.
Budeme se zabývat některými oblastmi numerickématematiky. V následujícím textu jsou nastíněny některé běžné numerické metody.!!! Nikde není uveden odhad chyby. !!!!
-
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:
Metody jsou založené na rozdělování intervalu [a,b] na n dílků a výpočtu obsahu jednoduchéplochy (např. obdélníkové) nad každým dílkem.
Podm ínka : funkce f musí být spojitá.
( )∫≅b
a
xxI df
-
Obdélníková metoda• zleva
• zprava
( )iin
ii xxyI −≅ +
−
=∑ 1
1
0
f
y
xa=x0 xn=bx1 ... xn-1
f
y
xa=x0 xn=bx1 ... xn-1
( )11
−=
−≅∑ iin
ii xxyI
-
Lichoběžníková metoda
aproximace polynomem 1. stupně:
( )∑−
=+
+ −+
≅1
01
1
2
n
iii
ii xxyy
I
f
y
xa=x0 xn=bx1 ... xn-1
-
Simpsonovo pravidlo
aproximace polynomem 2. stupně:
!potřebuje ekvidistantní dělení intervalu [a,b]
( ) ( )( )
( ) ( )22122
2242123120
43
df
2
243
22
2
++
−−
++≅
−=
+++++++++≅
∫+
kkk
x
x
nnn
yyyh
xx
n
abh
yyyyyyyyh
I
k
k
KK
f
y
xa=x0 xn=bx1 ... xn-1
-
Další metody
Předchozí metody se obecně nazývajíNewtonovy-Cotesovy vzorce. Kromě nich existují i jiné metody výpočtu určitého integrálu:– Gaussova metoda integrace
(Legendreovy polynomy),– využití Richardsonovy extrapolace,– Rombergova metoda,...
-
Jak v MATLABuMatlab obsahuje tyto funkce pro num. integraci:
• quad ... rekurzivní adaptivní Simpsonovo pravidlo• quadl ... adaptivní Gaussova-Lobattova kvadratura• quad8 ... Newtonovy-Cotesovy vzorce 8. řádu
Příklad - výpočet plochy od 0 do 1 ohraničené funkcí
f= inline ('1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6');fplot(f,[0,1]); % graf na intervalu [0;1]grid % zapnout m řížkuhold on % zachovat p ův. grafstem(0:.02:1,f(0:.02:1)) % stopkový grafquad (f,0,1) % spo čítat ur č. integrál numericky
( )( ) ( )
604,009,0
1
01,03,0
1f
22−
+−+
+−=
xxx
-
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í parametry jako quad ).
• Numerický výpočet trojn ého integrálu : funkce triplequad , která opět implicitněvyužívá pro výpočet funkci quad , ale lze jípředat i jinou metodu (handle funkce se stejnými typy vstupů jako má quad ).
-
Numerická derivacePoužíváme ji v případě, že potřebujeme vyčí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“):
Podmínka: známe předpis původní funkce
( ) ( ) ( )h
xhxx
fff
−+≅′
-
h
yyy
x
y nnn
n 2
34
d
d 12 +−≅
−−
1,...,22d
d 11 −=−
≅
−+ nih
yy
x
y ii
i
Lepších výsledků (tj. s menší chybou) dosáhneme použitím vztahů:
první
vnitřní
poslední
Zde může funkce být zadána i tabulkou hodnot.
h
yyy
x
y
2
43
d
d 210
0
−+−≅
-
Řešení nelineární rovnice• hledáme reálné číslo a, pro které platí f(a) = 0;
[a je kořen rovnice f(x) = 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řeny rovnice jsou průsečíky grafu funkce a osy x)
• u některých metod je požadována separace kořenů rovnice (provedeme ji „graficky“)
-
Metoda půlení intervalu
= metoda bisekce• vždy konvergentní, pokud jsou splněny
podmínky použití:1. funkce f je spojitá v daném intervalu2. funkční hodnoty v krajních bodech
zvoleného intervalu mají opačnáznaménka
• konverguje pomalu
-
Metoda půlení intervalu
a1 b1a2 b2
b3a3
a0 b0
a bx1 x2 x0
x
y = f(x)
xi i= s je střed příslušného intervalu
Zdroj: http://www.kvd.zcu.cz/cz/materialy/numet/_numet.html
-
Metoda tětiv (regula falsi)
• je konvergentní pro všechny spojitéfunkce
• funkční hodnoty v krajních bodech zvole-ného intervalu musí mít opačná znaménka
• konverguje relativně pomalu
-
Metoda tětiv (regula falsi)y = f(x)
ξ (kořen)
y
xx1 x0x2 x3
f(x )0
f(x )1
a
Zdroj: http://www.kvd.zcu.cz/cz/materialy/numet/_numet.html
-
Newtonova metoda
= metoda tečen• podmínky:
1. funkce musí být v okolí kořene spojitá2. funkce nesmí mít v okolí kořene
nulovou derivaci3. znalost první derivace funkce
• pokud metoda konverguje, tak většinou rychleji než metoda bisekce
-
Newtonova metoda
X0X2 X1
y = f(x)y
x
tečna
Zdroj: http://www.kvd.zcu.cz/cz/materialy/numet/_numet.html
-
Přímá iterační metoda
= prostá iterace
• rovnice f(x) = 0 se nahradí rovnocennou rovnicí ve tvaru x = ϕ(x) (ϕ nazýváme iterační funkcí)
• podmínky:– v daném intervalu musí být fce f spojitá– |ϕ'(x)| < 1
• konvergence metody závisí na vhodnévolbě iterační funkce a na volbě x0
-
Přímá iterační metoda
y = (x)
y = x
x0 x1 x2
ξx3
y
x
| ´(x)|
-
Další metody
• metoda sečen (sekantová metoda)
• Čebyševova metoda
• Halleyho-Richmondova metoda
• Riddersova metoda
• ...
-
Jak v MATLABuMatlab podporuje práci s komplexními čísly a s polynomy, takže hledání kořenů nelineárních rovnic lze rozdělit na:
• hledání kořenů polynomu , tj. řešení rovnice P(x)=0, kde P(x) je polynom stupně n (funkce roots vrací všechny kořeny, i komplexní).
• jiné rovnice musíme řešit pomocí:• funkce solve (Symbolic Toolbox),• knihovní funkce fzero ,• uživatelskými funkcemi (naprogramované
některé numerické metody).http://vyukaap.vscht.cz/HTML/kap11.html
-
Příklad : nalezněte řešení rovnice 3 sin(x) – x = 0 v intervalech [-1,1], [-3,-1], [1,3].
Řešení v MATLABu:f = @(x) 3*sin(x)-x; % definice funkce (anonymní)fplot(f,[-4 4]) % koukneme na grafx1 = fzero(f, 1.0) % první řešení, poblíž x=1x2 = fzero(f, -2.0) % druhé řešení, blízko x=-2x3 = fzero(f, 2.0) % třetí řešení, blízko x=2
% vylepšení (více informací o průběhu výpočtu):info =optimset('Display','iter'); % chci iterace[x3,f_x3,stav, out_info ]=fzero(f,-2.0, info );
out_info .algorithm % jaký algoritmus byl použit
-
Řešení soustav rovnicSOUSTAVY LINEÁRNÍCH ROVNIC [SLR]
- přímé metody:Gaussova eliminace, Gaussova-Jordanova eliminace, LU-rozklad, QR-rozklad, Choleskyho rozklad...MATLAB : fce null (homogenní SLR), operátor \(partikulární řešení), fce rref (Hermiteův tvar rozšířené matice soustavy), fce solve (SymbolicToolbox); funkce pro rozklad matice: lu (luinc ), qr , chol (cholinc ) http://vydavatelstvi.vscht.cz/knihy/uid_isbn-80-7080-558-7/pages-img/014.html
- itera ční metody:Jacobiova metoda, Gaussova-Seidelova metoda,...
http://vydavatelstvi.vscht.cz/knihy/uid_isbn-80-7080-558-7/pages-img/020.html
-
SOUSTAVY NELINEÁRNÍCH ROVNIC [SNR]
- přímé metody: ...?... (obecná exaktní metoda neexistuje)MATLAB : funkce Symbolic Toolboxu solve nebo funkce Optimization Toolboxu (především fsolve )
- itera ční metody:metoda prosté iterace, Newtonova metoda (metoda linearizace), Picardova metoda,...