Skip to content

Numerické metody

octicon-noteNote

Iterativní metody pro řešení nelineárních rovnic (Newtonova metoda a její modifikace). Přímé metody pro řešení systému lineárních rovnic (Gaussova eliminace, Jacobi, Gauss-Seidel, relaxační metody). Numerická diferenciace, diferenciační schémata.
MA018

  • Numerická analýza / numerical analysis
    Oblast matematiky / informatiky zabývající se tvorbou numerických metod a algoritmů, které řeší problémy matematické analýzy (např. derivace, integrály a podobný symbolický balast) pomocí numerické aproximace. 1

    Je výhodná v situacích, kdy problém nelze řešit analyticky nebo je to příliš složité a není to (výpočetní) čas.

  • Notace chyb

    • xx je přesná hodnota,
    • x~\tilde{x} je aproximace xx,
    • xx~x - \tilde{x} je absolutní chyba x~\tilde{x},
    • xx~α\lvert x - \tilde{x} \rvert \leq \alpha je odhad absolutní chyby,
    • xx~x\frac{x - \tilde{x}}{x} je relativní chyba,
    • xx~xα\left\lvert \frac{x - \tilde{x}}{x} \right\rvert \leq \alpha je odhad relativní chyby.
  • Numerická stabilita
    Schopnost numerické metody zpracovat chyby vstupních dat a výpočetních operací.

    Desetinná čísla jsou v počítačích nevyhnutelně reprezentována nepřesně. Numericky stabilní metody jsou takové, které tyto nepřesnosti nezhoršují. 2

  • Řád metody / order of accuracy / order of approximation
    Hodnota reprezentující, jak rychle metoda konverguje k výsledku, resp. jak přesný je její odhad.

    Numerická metoda obvykle konverguje snižováním nějakého kroku hh. Pokud ho lze zvolit libovolně malý, a lze-li prohlásit, že pro chybu aproximace EE platí: 3 4 5

    E(h)ChpE(h)O(hp)\begin{aligned} E(h) &\leq C \cdot h^p \\ E(h) &\in \mathcal{O}(h^p) \end{aligned}

    kde CC je konstanta. Pak pp je řád metody.

Iterativní metody pro řešení nelineárních rovnic

Section titled “Iterativní metody pro řešení nelineárních rovnic”
  • Root-finding problem
    Problém nalezení kořenů (root) funkce ff. T.j. takových parametrů x,...x, ..., kde funkce vrací 0: 6

    f(x,...)=0f(x, ...) = 0
  • Iterative methods for root-finding problem
    Metody pro řešení root-finding problemu, které využívají iterativního přístupu. Tedy opakují nějaký výpočet a zpřesňují svůj odhad, dokud nedosáhnou požadované přesnosti. 7 6

  • Řád metody / rate of convergence
    Hodnota reprezentující, jak rychle metoda konverguje k výsledku. 3

  • Prostá iterační metoda / metoda pevného bodu / fixed-point iteration
    Používá se pro rovnice typu x=g(x)x = g(x).

    1. Zvolíme počáteční odhad x0x_0.

    2. Opakujeme xn+1=g(xn)x_{n+1} = g(x_n) dokud xn+1xnα\lvert x_{n+1} - x_n \rvert \leq \alpha (kde α\alpha je požadovaná přesnost).

      width=400

  • Newtonova metoda / metoda tečen
    Používá k odhadu kořene funkce ff její tečnu v bodě xnx_n. Iterační funkce je:

    g(xk+1)=xkf(xk)f(xk)g(x_{k+1}) = x_k - \frac{f(x_k)}{f'(x_k)}
    1. Zvolíme počáteční odhad x0x_0.

    2. Další odhad je xn+1=g(xn)x_{n+1} = g(x_n), tedy průsečík tečny fukce ff v bodě xnx_n s osou xx.

    3. Opakujeme 2. dokud nedosáhneme požadované přesnosti odhadu.

      width=400

    octicon-tipTip

    How to derive Newton approximation method:

    1. Start with Taylor f(x)=n=01fn(a)n!(xa)nf(x)=\sum_{n=0}^{1} \frac{f_n(a)}{n!} \cdot (x-a)^n
    2. Substitute a=xna = x_n

    f(x)f(xn)+f(xn)(xxn)f(x) \approx f(x_n) + f'(x_n)(x-x_n)

    Now, we want to find xn+1x_{n+1} such that f(x)=f(xn+1)=0f(x) = f(x_{n+1}) = 0.

    0 f(xn)+f(xn)(xn+1xn)0 f(xn)f(xn)+xn+1xnxn+1= xnf(xn)f(xn)\begin{aligned} 0 \approx &\ f(x_n) + f'(x_n)(x_{n+1}-x_n) \\ 0 \approx &\ \frac{f(x_n)}{f'(x_n)} + x_{n+1} - x_n \\ x_{n+1} = &\ x_n - \frac{f(x_n)}{f'(x_n)} \end{aligned}
  • Metoda sečen / secant method
    Používá k odhadu kořene funkce ff sečny, resp. finite difference, které aproximují derivaci funkce ff. Díky tomu není potřeba znát derivaci funkce ff. Iterační funkce je:

    g(xk+1)=xkf(xk)(xkxk1)f(xk)f(xk1)g(x_{k+1}) = x_k - \frac{f(x_k)(x_k - x_{k-1})}{f(x_k) - f(x_{k-1})}

    width=400

  • Metoda regula falsi
    Je bracketing metoda, tedy metoda, která využívá intervalu, ve kterém se nachází kořen. Nemusí se použít iterativně, ale v iterativní podobě tento interval postupně zmenšuje. 8

    xk+1=xkxkxsf(xk)f(xs)f(xk)x_{k+1} = x_k - \frac{x_k - x_s}{f(x_k) - f(x_s)} f(x_k)

    kde ss je největší index takový, že f(xk)f(xs)<0f(x_k)f(x_s) < 0.

    width=400

  • Metoda Binary search
    Prvotní interval (x0,x1)(x_0, x_1) musí obsahovat kořen funkce ff, tj. x0x_0 a x1x_1 mají různé znaménka. V každém kroku se rozdělí interval na dvě poloviny a dál hledáme v polovině která obsahuje kořen funkce. Metoda regula falsi se pokouší o rychlejší kovergenci sofistikovanějším dělením intervalu.

Přímé metody pro řešení systému lineárních rovnic

Section titled “Přímé metody pro řešení systému lineárních rovnic”

Systém rovnice je přepsán do matice. Gaussova eliminace je posloupnost operací, jejichž cílem je převést matici do horní trojúhelníkové matice (row echelon form). 9 Povoleny jsou následující operace:

  • výměna dvou řádků,
  • vynásobení řádku nenulovou konstantou,
  • přičtení násobku jednoho řádku k jinému.

Iterativní algoritmus pro řešení soustavy lineárních rovnic. Rozděluje vstupní matici lineárních rovnic na matici diagonál DD, dolní trojúhelníkovou matici LL a horní trojúhelníkovou matici UU. 10

Nechť Ax=bA\mathbf{x} = \mathbf{b} je systém nn lineárních rovnic. Tedy:

A=[a11a12a1na21a22a2nan1an2ann],x=[x1x2xn],b=[b1b2bn].A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix}, \qquad \mathbf{x} = \begin{bmatrix} x_{1} \\ x_2 \\ \vdots \\ x_n \end{bmatrix} , \qquad \mathbf{b} = \begin{bmatrix} b_{1} \\ b_2 \\ \vdots \\ b_n \end{bmatrix}.

Algoritmus vypadá takto:

  1. Zvolíme počáteční odhad x(0)\mathbf{x}^{(0)}, nejčastěji 0\vec{0}.

  2. Nový odhad získáme ze vztahu:

    x(k+1)=D1(b(L+U)x(k))\mathbf{x}^{(k+1)} = D^{-1}(\mathbf{b} - (L + U)\mathbf{x}^{(k)})

Jelikož L+U=ADL + U = A - D, dá to zapsat i jako:

x(k+1)=D1b+(ID1A)x(k)\mathbf{x}^{(k+1)} = D^{-1}\mathbf{b} + (I - D^{-1} A) \mathbf{x}^{(k)}
  • Spektrální poloměr
    Spektrální poloměr ρ\rho matice AA je největší absolutní hodnota vlastního čísla matice AA.

    ρ(A)=maxi=1,,nλi\rho(A) = \max_{i=1,\ldots,n} |\lambda_i|
  • (Řádková) diagonální dominance
    Matice AA je diagonálně dominantní, pokud platí:

    aii>j=1,jinaij|a_{ii}| > \sum_{j=1, j \neq i}^n |a_{ij}|

    Tedy absolutní hodnota prvku na diagonále je větší než součet absolutních hodnot všech ostatních prvků v řádku.

    • Striktní: nerovnost je ostrá (>>).
    • Slabá: nerovnost je neostá (\ge).

    Analogicky se definuje sloupcová diagonální dominance.

  • Konvergence Jacobiho metody
    Jacobiho metoda konveguje pokud všechny následující podmínky:

    1. Nechť Tj=ID1AT_j = I - D^{-1} A je matice iterace Jacobiho metody. Pak Jacobiho metoda konverguje, pokud:

      ρ(Tj)<1\rho(T_j) < 1
    2. Jacobiho metoda konverguje pro libovolný počáteční odhad x(0)\mathbf{x}^{(0)}, pokud AA je diagonálně dominantní (sloupcově nebo řádkově).

Iterativní metoda pro řešení soustavy lineárních rovnic. Dělí vstupní matici na spodní trojúhelníkovou matici LL_* (včetně diagonály, tedy L=D+LL_* = D + L) a striktně horní trojúhelníkovou matici UU (diagonála je nulová). Algoritmus vypadá takto: 11

  1. Zvolíme počáteční odhad x(0)\mathbf{x}^{(0)}.

  2. Nový odhad získáme ze vztahu:

    x(k+1)=L1(bUx(k)).\mathbf{x}^{(k+1)} = L_*^{-1}(\mathbf{b} - U\mathbf{x}^{(k)}).

Alternativně:

Tgs=(D+L)1U=L1Ux(k+1)=Tgsx(k)+g,g=L1b\begin{aligned} T_{gs} &= (D + L)^{-1} U = L_*^{-1} U \\ \mathbf{x}^{(k+1)} &= T_{gs} \mathbf{x}^{(k)} + g,\quad g = L_*^{-1} \mathbf{b} \end{aligned}
  • Konvergence Gaussovy-Seidelovy metody
    Analogicky jako u Jacobiho metody, ale místo matice TjT_j se použije matice Tgs=(D+L)1UT_{gs} = (D + L)^{-1} U.

Modifikace Gauss-Seidelovy metody. Využívá parametr ω\omega, který určuje, jak moc se má nový odhad lišit od předchozího. Vztah pro další iteraci se mění na: 12

x(k+1)=(DωL)1[(1ω)D+ωU]x(k)+ω(DωL)1bTω=(DωL)1[(1ω)D+ωU]\begin{align*} \mathbf{x}^{(k+1)} &= (D - \omega L)^{-1} [(1-\omega)D + \omega U]\mathbf{x}^{(k)} + \omega(D - \omega L)^{-1}\mathbf{b} \\ T_\omega &= (D - \omega L)^{-1} [(1-\omega)D + \omega U] \end{align*}
  • Pro 0<ω<10 < \omega < 1 se názývá metodou dolní relaxace. Je vhodná v případě, kdy Gauss-Seidel nekonverguje.
  • Pro ω=1\omega = 1 je totožná s Gauss-Seidelem.
  • Pro ω>1\omega > 1 se názývá metodou horní relaxace / SOR metodou. Zrychluje konvergenci Gauss-Seidela.

Metody podobné Gaussově eliminaci, ale s vlastnostmi, které mohou být vyhodné.

  • LU dekompozice
    Rozdělení matice AA na horní dolní trojúhelníkovou matici LL a horní trojúhelníkovou matici UU, tak že A=LUA = LU.

    Je to v podstatě Gaussova eliminace. Matice PP je permutační matice, která prohazuje řádky:

    PA=LUP \cdot A = L \cdot U

    Platí, že:

    Ax=bA=LULUx=b\begin{aligned} A \cdot x &= b \\ A &= LU \\ LU \cdot x &= b \end{aligned}

    Původní problém řešení soustavy linárních rovnic se tedy převede na dva problémy:

    y=UxLy=b\begin{aligned} y &= U \cdot x \\ L \cdot y &= b \\ \end{aligned}

    Řešíme tedy dva systémy rovnic s trojúhelníkovými maticemi.

    Oproti Gaussovi je výhodnější pro:

    • Opakované řešení soustav s maticí AA a různými pravými stranami bb.
    • Inverzi matice AA.
    • Výpočet determinantu matice AA.
  • QR dekompozice
    Rozdělení matice AA na ortogonální matici QQ a horní trojúhelníkovou matici RR (už ne UU), tak že A=QRA = QR.

    Ax=bA=QRUx=QTb\begin{aligned} A \cdot x &= b \\ A = QR \Rightarrow U \cdot x &= Q^T \cdot b \\ \end{aligned}

    Protože je ortogonální a tedy Q1=QTQ^{-1} = Q^T.

    Má lepší numerickou stabilitu než LU dekompozice.

Algoritmy numerické diferenciace (derivace) počítají odhady derivace reálných funkcí — aproximují f(x)f'(x). Využívají při tom známé hodnoty této funkce a jiné znalosti a předpoklady. 13

Numerická diferenciace se využívá pro aproximaci differenciálních rovnic (převodem na diferenční rovnice).

  • Langrangeova interpolace
    Pokud známe hodnoty ff můžeme mezi nimi interpolovat pomocí Lagrangeova polynomu a derivovat ten, protože derivovat polynomy je jednoduché.

    octicon-importantImportant

    Lagrangeovu interpolaci řeší část otázky Křivky a povrchy.

  • Finite difference method
    Rodina metod numerické diferenciace, které využívají konečné diference. Tedy approximují limitu v definici derivace malými posuny ve vstupních hodnotách diferenciovaných funkcí. 14

    Jednotlivým “odstínům” — konkrétním výpočetním vzorcům — téhle metody se říká diferenciační schémata.

    octicon-tipTip

    Abych pravdu řekl, nepodařilo se mi najít zdroj pro konkrétní definici pojmu “diferenciační schéma”.

  • (Konečné) diference prvního řádu / first-order (finite) differences
    Nejjednodušší schéma numerické diferenciace. Vychází z definice derivace. 15

    • Dopředná diference / forward (finite) difference

      fxf(x+h)f(x)h\frac{\partial f}{\partial x} \approx \frac{f(x+h) - f(x)}{h}
    • Zpětná diference / backward (finite) difference

      fxf(x)f(xh)h\frac{\partial f}{\partial x} \approx \frac{f(x) - f(x-h)}{h}
    • Centrální diference / central (finite) difference

      fxf(x+h)f(xh)2h\frac{\partial f}{\partial x} \approx \frac{f(x+h) - f(x-h)}{2h}

    kde hh je kladné číslo napodobující nekonečně malou změnu (limitu) v definici derivace. Může to být konstanta, může ale být i zvoleno adaptivně.

    octicon-tipTip

    Tečna je tak napodobena sečnou.

  • Richardson extrapolation
    Způsob zlepšení rate of convergence iterativních metod. 16

  1. Wikipedia: Numerical analysis

  2. Wikipedia: Numerical stability

  3. Wikipedia: Rate of convergence 2

  4. Wikipedia: Numerická metoda

  5. What is the intuitive meaning of order of accuracy and order of approximation?

  6. Wikipedia: Root-finding algorithms 2

  7. MA018 Numerical Methods (podzim 2019)

  8. Wikipedia: Regula falsi

  9. Wikipedia: Gaussian elimination

  10. Wikipedia: Jacobi method

  11. Wikipedia: Gauss-Seidel method

  12. Wikipedia: Relaxation (iterative method)

  13. Wikipedia: Numerical differentiation

  14. Wikipedia: Finite difference method

  15. Wikipedia: Finite difference

  16. Wikipedia: Richardson extrapolation