24
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. !!!!

MATLAB a numerické metody - FILES.klaska.net hodin...MATLAB a numerické metody MATLAB je velmi vhodný nástroj pro numerické výpo čty – mnoho problém ůje již vy řešeno

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

  • 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,...