Try  HackMD Logo HackMD

Математика

Easy

def my_times(a, b)

Реалізувати множення чисел через додавання.

a×b=i=1ab

def my_power(x, p)

Реалізувати піднесення до степеня через множення

xp=i=1px

def my_factorial(x)

Реалізувати факторіал через множення

x!=i=1xi

def my_geometric(x)

Реалізувати суму геометричної прогресії (

|x|<1):

geom(x)=i=1xi

def my_exp(x)

Реалізувати функцію

exp

exp(x)=i=0xii!

def my_ln_mini(x)

Реалізувати натуральний логарифм (обмежений варіант)

ln(1+x)=i=1(1)i+1ixi,1<x1

def my_sin(x)

Реалізувати функцію синусу

sinx=n=0(1)n(2n+1)!x2n+1

def my_cos(x)

Реалізувати косинус

cosx=n=0(1)n(2n)!x2n

def my_arctan(x)

Реалізувати арктангенс

arctanx=n=0(1)n2n+1x2n+1

def my_arcsin(x)

Реалізувати арксинус

arcsinx=n=0(2n)!4n(n!)2(2n+1)x2n+1

І що це дає?

  • можна пора

Medium

def my_fast_power(x, p)

Реалізувати "швидке" піднесення до степеня. Використовуючи це правило

a2c=(a2)c

можна скоротити кількість множень, якщо на парних кроках множення робити піднесення до квадрату

xp={(x2)t,p=2t,tNx×(x2)t,p=2t+1,tN

def my_ln(x)

Реалізувати натуральний логарифм через my_ln_mini(). Використати правило

ln(xy)=lnx+lny

def my_ln_alt(x)

Реалізувати натуральний логарифм, використавши формулу

ln(n+1n)=22n+1k=01(2k+1)((2n+1)2)k