Lekce 18 - Matematické funkce v Pythonu a knihovna math
V minulé lekci, Funkce a výjimky v Pythonu, jsme si ukázali, jak na funkce a základy ošetřování chyb.
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.