# Математика ## Easy ### `def my_times(a, b)` Реалізувати множення чисел через додавання. $$ a\times b = \sum_{i=1}^a{b} $$ ### `def my_power(x, p)` Реалізувати піднесення до степеня через множення $$ x^p = \prod_{i=1}^p{x} $$ ### `def my_factorial(x)` Реалізувати факторіал через множення $$ x! = \prod_{i=1}^x{i} $$ ### `def my_geometric(x)` Реалізувати суму геометричної прогресії ($|x| < 1$): $$ geom(x) = \sum_{i=1}^\infty x^i $$ ### `def my_exp(x)` Реалізувати функцію $\exp$ $$ \exp(x) = \sum_{i=0}^\infty \frac{x^i}{i!} $$ ### `def my_ln_mini(x)` Реалізувати натуральний логарифм (обмежений варіант) $$ \ln(1 + x) = \sum_{i=1}^\infty \frac{(-1)^{i+1}}{i}x^i, -1 < x \leq 1 $$ ### `def my_sin(x)` Реалізувати функцію синусу $$ \sin x = \sum_{n=0}^\infty \frac{(-1)^n}{(2n + 1)!}x^{2n+1} $$ ### `def my_cos(x)` Реалізувати косинус $$ \cos x = \sum^{\infty}_{n=0} \frac{(-1)^n}{(2n)!} x^{2n} $$ ### `def my_arctan(x)` Реалізувати арктангенс $$ \arctan x = \sum^{\infty}_{n=0} \frac{(-1)^n}{2n+1} x^{2n+1} $$ ### `def my_arcsin(x)` Реалізувати арксинус $$ \arcsin x = \sum^{\infty}_{n=0} \frac{(2n)!}{4^n (n!)^2 (2n+1)} x^{2n+1} $$ ### І що це дає? - можна пора ## Medium ### `def my_fast_power(x, p)` Реалізувати "швидке" піднесення до степеня. Використовуючи це правило $$a^{2c} = (a^2)^c $$ можна скоротити кількість множень, якщо на парних кроках множення робити піднесення до квадрату $$x^p = \begin{cases} (x^2)^t, p=2t, t\in\mathbb{N} \\ x\times (x^2)^t, p=2t+1, t\in\mathbb{N} \end{cases} $$ ### `def my_ln(x)` Реалізувати натуральний логарифм через `my_ln_mini()`. Використати правило $$ \ln(xy) = \ln{x}+\ln{y} $$ ### `def my_ln_alt(x)` Реалізувати натуральний логарифм, використавши формулу $$ \begin{align} \ln \left(\frac{n + 1}{n}\right) &= \frac{2}{2n + 1} \sum_{k=0}^\infty \frac{1}{(2k + 1) ((2n + 1)^2)^k} \end{align} $$