Search
Cílem čtvrté úlohy je aproximovat transcendentní číslo Pi pomocí částečných součtů dvou nekonečných řad a numerickým řešením rovnice $\sin(x) = 0$.
Vytvořte funkci s názvem leibnizPi s jedním parametrem (určujícím počet členů), jež sečte daný počet členů Gregoryho-Leibnizovy řady:
$$ \pi = \frac{4}{1} - \frac{4}{3} + \frac{4}{5} - \frac{4}{7} + \frac{4}{9} - \frac{4}{11} + \frac{4}{13} - \dots $$
Tzn. volání funkce leibnizPi(1) vrátí 4.0, leibnizPi(2) vrátí 2.666666, atd.
leibnizPi(1)
4.0
leibnizPi(2)
2.666666
Vytvořte obdobnou funkci nilakanthaPi (také s jedním parametrem) sčítající řadu:
nilakanthaPi
$$ \pi = 3 + \frac{4}{2 \times 3 \times 4} - \frac{4}{4 \times 5 \times 6} + \frac{4}{6 \times 7 \times 8} - \frac{4}{8 \times 9 \times 10} + \dots $$
Tzn. volání funkce nilakanthaPi(1) vrátí 3.0, nilakanthaPi(2) vrátí 3.166666, atd.
nilakanthaPi(1)
3.0
nilakanthaPi(2)
3.166666
Vytvořte funkci newtonPi s jedním parametrem (počáteční hodnota $x_0$), která bude numericky řešit rovnici $\sin(x) = 0$ pomocí metody tečen (viz. Newtonova metoda a její použití při výpočtu odmocniny). Tento algoritmus se obecně snaží najít takové $x$, pro které platí $f(x) = 0$, pomocí cyklického vyhodnocování výrazu:
$$ x_{k+1} = x_k - \frac{f(x_k)}{f^{\prime}(x_k)}, $$
kde $f^{\prime}$ značí derivaci funkce $f$. Hledání tedy začneme s nějakou počáteční hodnotu $x_0$ (parametr funkce newtonPi). Použitím uvedeného výrazu vypočteme novou hodnotu $x_1$ (krok $k$=0). Tuto nově získanou hodnotu $x_1$ následně obdobně použijeme k výpočtu $x_2$ (krok $k$=1), atd. dokud rozdíl mezi $x_k$ a $x_{k+1}$ není zanedbatelně malý, neboli $x_k = x_{k+1}$ s ohledem na přesnost použitého datového typu proměnných. Jakmile tato podmínka nastane, tak poslední takto získanou hodnotu $x$ prohlásíme za řešení rovnice $f(x) = 0$.
Všechny tyto tři funkce umístěte do souboru picalculator.py a ten následně nahrajte do Odevzdávacího systému.
Za funkce můžete získat 0,6 + 0,6 + 0,8 bodů, celkem tedy 2 body.
Aby jste nemuseli chodit na vaše následující cvičení, tak je potřeba úlohu odevzdat před cvičením a mít za ní plný počet bodů.