4. úkol - Pi

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$.

Zadání

Gregoryho-Leibnizova řada

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.

Nilakantova řada

Vytvořte obdobnou funkci nilakanthaPi (také s jedním parametrem) sčítající řadu:

$$ \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.

Numerické řešení rovnice

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 tomto případě $f(x) = \sin(x)$ a $f^{\prime}(x) = \cos(x)$.
  • Pro výpočet $\cos(x)$ a $\sin(x)$ v Pythonu použijte modul math (funkce math.cos, math.sin).
  • Volání funkce newtonPi(3.0) (počáteční hodnota $x_0=3.0$) by mělo vrátit vámi spočtenou hodnotu konstanty Pi.
  • Inspirujte se obdobným příkladem ze cvičení pro výpočet odmocniny $\sqrt{S}$, kde se takto hledá řešení pro $f(x) = x^2 - S$.

Upload

Všechny tyto tři funkce umístěte do souboru picalculator.py a ten následně nahrajte do Odevzdávacího systému.

K implementaci použijte tuto šablonu: picalculator.py
Pozor: K vyhodnocení se využívá Python 3.

Hodnocení

Za funkce můžete získat 0,6 + 0,6 + 0,8 bodů, celkem tedy 2 body.

Za každý započatý týden po deadline (termínu odevzdání) je penalizace 2 body. Záporné body neudělujeme.

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ů.

courses/b0b36zal/zadani/4_pi.txt · Last modified: 2023/09/29 13:29 by seredlad