5.1 KiB
Nelineární rovnice
Předpokládáme, že
- reálná funkce
f
je spojitá prox \in \langle a, b\rangle
, f(a) \cdot f(b) < 0
.
Potom existuje aspoň jedno řešení x
rovnice f(x) = 0
na \langle a,b\rangle
.
Metoda půlení intervalu
Máme interval \langle a,b\rangle
, který budeme půlit. Vypočítáme funkční hodnotu f(s_{i})
v polovině intervalu.
Pokud má funkční hodnota f(s_{i})
stejné znaménko jako funkční hodnota f(a)
, změníme a = s_{i}
, v opačném případě b = s_{i}
.
- zastavovací podmínka - velikost intervalu
- výsledek je
x = \frac{a+b}{2}
- vždy konverguje, ale velmi pomalu
Metoda prosté iterace
Postup
- z rovnice vyjádříme některé
x
x^5 - x = \ln(x+4)
do formátux_{k+1} = \sqrt[5]{ \ln(x_{k}+4) + x_{k} }
- určíme/dostaneme zadaný
\epsilon
ax_{0}
\epsilon = 0.01
x_{0} = 1
- dosazujeme hodnoty do rovnice, dokud nenastane zastavující podmínka
\vert x_{k} - x_{k-1} \vert < \epsilon
k |
x_k |
\vert x_{k} - x_{k-1}\vert |
---|---|---|
0 | 1 | - |
1 | 1,211460877 | 0,211460877 |
2 | 1,234081012 | 0,022620135 |
3 | 1,236396294 | 0,002315282 |
Postačující podmínky konvergence. Funkce \varphi
na intervalu I = \langle a,b\rangle
je spojitá a platí:
\forall x \in I : \varphi(x) \in I
(funkce\varphi
zobrazujeI
do sebe)\exists q \in \langle 0, 1) : \vert \varphi(x) - \varphi(y)\vert \leq q\vert x-y\vert \quad \forall x, y \in I
(funkce\varphi
je kontrakce)
Newtonova metoda
x_{0} = 1.236396294
- z metody prosté iterace nebo zadáno
f(x) = x^5 - x - \ln(x+4)
- vše převedeme na jednu stranu rovnice
f'(x) = 5x^4 - 1 - \frac{1}{x+4}
- derivací funkce
f(x) = x^5 - x - \ln(x+4)
- derivací funkce
Hodnotu poté x_{0}
zpřesňujeme vzorcem x_{k+1} = x_{k} - \frac{f(x_{k})}{f'(x_{k})}
- zastavovací podmínka
\vert x_{k+1} − x_k\vert < \epsilon
nebo\vert f(x_k)\vert < \delta
Geometrický význam
- také metoda tečen nebo metoda linearizace
- tvoříme tečny funkce v bodech
x_{k}
- hodnota
x_{k+1}
je průsečíkem tečny s osoux
Modifikovaná Newtonova metoda
- pokud se derivace moc nemění, můžeme místo
f'(x_{k})
využívatf'(x_{0})
- tečnou je pouze první přímka, ty následující jsou na ni kolmé
Metoda sečen
- je i pro nediferencovatelné funkce
f'(x_{k})
nahradíme za\frac{f(x_{k}) - f(x_{k-1})}{x_{k}-x_{k-1}}
- potřebujeme znát dvě počáteční hodnoty
- další iterace
x_{k+1}
je průsečíkem sečny s osoux
Soustava lineárních rovnic
Jacobiova metoda
$$
A = \begin{bmatrix}
3 & 1 & 0 \
1 & 4 & 0 \
0 & 1 & 5
\end{bmatrix} \qquad b = \begin{bmatrix}
1 \
2 \
3
\end{bmatrix} \qquad x_{0} = \begin{bmatrix}
0 \
0 \
0
\end{bmatrix}
- kontrola diagonální dominance
\vert 3\vert > \vert 1\vert + \vert 0\vert
\vert 4\vert > \vert 1\vert + \vert 0\vert
\vert 5\vert > \vert 0\vert + \vert 1\vert
- sestavení rovnic a vyjádření
x, y, z
3x + y = 1
\to x = \frac{1}{3}(1 - y)
x + 4y = 2
\to y = \frac{1}{4}(2 - x)
y + 5z = 3
\to z = \frac{1}{5}(3 - y)
k | 0. | 1. | 2. | 3. | 4. |
---|---|---|---|---|---|
x | 0 |
0.333333333 |
0.166666667 |
0.194444444 |
0.180555556 |
y | 0 |
0.5 |
0.416666667 |
0.458333333 |
0.451388889 |
z | 0 |
0.6 |
0.5 |
0.516666667 |
0.508333333 |
Gauss-Seidelova metoda
Stejná, jako Jacobiova metoda, ale rovnou používáme s vypočítanými hodnotami.
- provedeme výpočet pro
x = \dots
, takže už ve výpočtuy
použijeme novéx
Sestavení rovnice
x^{(k+1)} = \frac{1}{3}(1 - y^{(k)})
y^{(k+1)} = \frac{1}{4}(2 - x^{(k+1)})
z^{(k+1)} = \frac{1}{5}(3 - y^{(k+1)})
k | 0. | 1. | 2. | 3. |
---|---|---|---|---|
x | 0 |
0.333333333 |
0.194444444 |
0.18287037 |
y | 0 |
0.416666667 |
0.451388889 |
0.454282407 |
z | 0 |
0.516666667 |
0.509722222 |
0.509143519 |
Metoda SOR
Tato metoda vychází z GS metody, akorát navíc přidává relaxační koeficient \omega \in (0,2)
.
\omega = 1
- jedná se o GS metodu\omega \in (0,1)
- jedná se o metodu SUR\omega \in (1,2)
- jedná se o metodu SOR
Postup
- kontrola diagonální dominance
- sestavení rovnic GS metody
- přidání relaxačního koeficientu
x^{(k+1)} = \omega \cdot [\frac{1}{3}(1 - y^{(k)})] + (1 - \omega)x^{(k)}
y^{(k+1)} = \omega \cdot [\frac{1}{4}(2 - x^{(k+1)})] + (1 - \omega)y^{(k)}
z^{(k+1)} = \omega \cdot [\frac{1}{5}(3 - y^{(k+1)})] + (1 - \omega)z^{(k)}
Zvolíme \omega = 1.05, \epsilon = 0.01
.
k | 0. | 1. | 2. |
---|---|---|---|
x | 0 |
0.35 |
0.18090625 |
y | 0 |
0.433125 |
0.455855859 |
z | 0 |
0.53904375 |
0.507318082 |