Lekce 19 - Matematické funkce v Pythonu a knihovna math
V minulé lekci, Funkce v Pythonu, jsme si ukázali, jak na funkce, jejich parametry a návratové hodnoty.
V dnešním tutoriálu se budeme věnovat knihovně math, která
poskytuje Pythonu matematické funkce jako zaokrouhlení, goniometrické funkce,
mocniny, odmocniny a podobně.
Knihovny
Knihovny (neboli moduly) nám poskytují užitečný zdroj datových typů, funkcí a různých nástrojů pro ještě lepší programy. Jednoduše nemusíme psát něco, co už někdo napsal před námi. Své programy složíme z existujících modulů a díky tomu bude jejich vývoj pohodlnější a rychlejší.
Import knihoven
Abychom mohli funkce z knihoven používat, musíme nejprve knihovnu importovat (zpřístupnit). Import se provádí pomocí následující syntaxe:
import nazev_modulu
Poté funkci z modulu zavoláme:
nazev_modulu.nazev_funkce()
Pokud chceme jen určitou funkci, můžeme ji importovat takto:
from nazev_modulu import nazev_funkce
Následně napíšeme:
nazev_funkce()
Pro zpřístupnění všeho z modulu použijeme hvězdičku
*:
from nazev_modulu import *
Tento způsob je na první pohled jasným kandidátem na ulehčení práce.
Opak je však pravdou
Pokud
si zpřístupníme vše, velmi nám nabobtná jmenný systém. Také může
dojít ke kolizi názvů z jiných modulů. Také se znepřehlední kód. Tento
nástroj je tedy potřeba používat s důkladnou rozvahou.
Při importu můžeme s následující syntaxí použít i aliasy:
import nazev_modulu as vlastni_nazev
Aliasy se používají pro import modulů z balíčků. Balíčky jsou seskupení více modulů.
Moduly se importují na začátku programu.
Knihovna math
Základní matematické funkce jsou v Pythonu obsaženy v knihovně
math. Knihovna nám poskytuje dvě základní konstanty:
pi a e. Konstanta pi je pochopitelně
číslo pí (3.1415…) a e je Eulerovo číslo, tedy
základ přirozeného logaritmu (2.7182…). Asi je zřejmé, jak
se s knihovnou pracuje, ale pro jistotu si na ukázku konstanty vypišme do
konzole:
import math
print("pí:", math.pi)
print("e:", math.e)
Výstup programu:
Konzolová aplikace
pí: 3.141592653589793
e: 2.718281828459045
Funkce knihovny math
Modul nám také poskytuje velmi užitečné funkce pro výpočty. Podívejme se na ty nejzákladnější.
Goniometrické
funkce sin(), cos(), tan(),
asin(), acos() a atan()
Goniometrické funkce vrací hodnotu pro úhel v radiánech, který předáme jako parametr. Syntaxe je u všech funkcí stejná:
import math
print(math.sin(math.pi/2)) # Vrací sinus 90°
Radián je bezrozměrná jednotka používaná pro velikost
úhlu. Plný kruh odpovídá úhlu 2π radiánů.
Konverzní funkce
degrees() a radians()
Funkce degrees() převádí hodnotu úhlu z radiánů na
stupně, zatímco radians() převádí stupně na radiány:
import math
print(math.degrees(math.pi)) # Vrací 180.0
print(math.radians(180)) # Vrací hodnotu π
Funkce pro zaokrouhlování
ceil() a floor()
Funkce ceil() provede zaokrouhlení na nejbližší celé
číslo směrem nahoru, funkce floor() pak dolů :
import math
print(math.ceil(3.1))
print(math.floor(3.9))
Funkce round(), kterou už dobře známe,
zaokrouhluje podle pravidel matematiky. Není součástí knihovny
math, jde o vestavěnou (built-in) funkci Pythonu.
Funkce pro práci s
čísly fabs(), factorial(), pow() a
sqrt()
Funkce fabs() nám vrátí absolutní hodnotu desetinného
čísla. Funkce factorial() vrátí faktoriál daného čísla.
Pokud je hodnota nečíselná nebo záporná, vyvolá funkce
factorial() výjimku ValueError. Funkce
pow() umocní první předané číslo na druhé číslo a
sqrt() vrátí druhou odmocninu z daného čísla:
import math
print(math.fabs(-3.1))
print(math.factorial(4))
print(math.pow(2, 3))
print(math.sqrt(16))
Funkce hypot()
Funkce vrátí euklidovskou vzdálenost, tj.
math.sqrt(x*x + y*y). Neboli jinými slovy na základě Pythagorovy
věty vypočítá přeponu pravoúhlého trojúhelníka:
import math
print(math.hypot(3, 4))
Funkce pro logaritmy
log(), log10() a log2()
Funkce log() vrátí logaritmus čísla o základu, je-li
zadán. Pokud ne, funkce vrátí hodnotu přirozeného logaritmu (se základem
Eulerova čísla). Funkce log10() vrátí z daného čísla
logaritmus o základu 10 a log2() vrátí z daného
čísla logaritmus o základu 2:
import math
print(math.log(16, 4))
print(math.log10(1000))
print(math.log2(32))
Tak to bychom měli. V kurzu Základní konstrukce jazyka Python naleznete
ještě několik dalších příkladů k procvičení, které určitě
doporučujeme vypracovat. Na kurz nyní navazují Základy
objektově orientovaného programování v Pythonu. Příště si tedy
představíme objektový svět a pochopíme mnoho věcí, které nám až doteď
byly skryty 
V příští lekci, Nejčastější chyby Python začátečníků, děláš je také?, si ukážeme nejčastější chyby
začátečníků v Pythonu, např. ohledně pojmenování kolekcí,
bool výrazů a DRY.

