Symbolické výrazy a premenné

JupyterLab
Sympy
Výrazy
Premenné
Zjednodušovanie
Substitúcia
Autor

Jakub Šperka

Publikované

18. septembra 2025

✨ Úvod

Balíček SymPy je určený na symbolickú matematiku v Pythone. Umožňuje pracovať so symbolickými premennými, výrazmi a funkciami podobne ako v algebre a analýze – t.j. bez okamžitej numerickej evaluácie.

Kód
import sympy as sp
sp.init_printing()  # krajšie (2D) zobrazenie výrazov v notebooku

🆎 Definovanie symbolov

Definovanie jednej symbolickej premennej

Kód
i = sp.Symbol('i')
i

\(\displaystyle i\)

Definovanie viacerých symbolických premenných

Kód
x, y, z = sp.symbols('x y z')
x, y, z

\(\displaystyle \left( x, \ y, \ z\right)\)

Symbol vs. symbols a assumptions

  • symbols('x y') je skratka na vytváranie viacerých symbolov naraz.
  • Trieda Symbol vytvorí jediný symbol; užitočné, keď chcete zadať predpoklady (assumptions), napr. že premenná je kladná alebo celé číslo.
Kód
a = sp.Symbol('a', positive=True, real=True)   # a > 0, a ∈ ℝ
n = sp.Symbol('n', integer=True)               # n ∈ ℤ
a, n

\(\displaystyle \left( a, \ n\right)\)

Zobrazenie výrazov

Kód
display(i)
display(x,y,z)

\(\displaystyle i\)

\(\displaystyle x\)

\(\displaystyle y\)

\(\displaystyle z\)


🧮 Práca so symbolickými výrazmi

Výrazy skladáme rovnako, ako píšeme matematiku. SymPy si uchováva strom výrazov, s ktorým vie ďalej pracovať.

Kód
vyraz_1 = x + y + 2*z
vyraz_2 = x**2 + 3*x*y + y**2
vyraz_3 = (x + y)**2

vyraz_1, vyraz_2, vyraz_3

\(\displaystyle \left( x + y + 2 z, \ x^{2} + 3 x y + y^{2}, \ \left(x + y\right)^{2}\right)\)


🔄 Zjednodušovanie výrazov — simplify

simplify() sa pokúsi nájsť algebraicky jednoduchšiu (alebo kanonickejšiu) formu výrazu.

Kód
vyraz = (x**2 + 2*x + 1) / (x + 1)
sp.simplify(vyraz)

\(\displaystyle x + 1\)


📦 Rozšírenie a rozklad polynómov — expand, factor

Kód
polynom = (x + y)**2

rozsireny = sp.expand(polynom)
faktorizovany = sp.factor(rozsireny)

rozsireny, faktorizovany

\(\displaystyle \left( x^{2} + 2 x y + y^{2}, \ \left(x + y\right)^{2}\right)\)


📐 Použitie funkcií a konštánt v symbolických výrazoch

Kód
goniometricky_vyraz = sp.sin(x)**2 + sp.cos(x)**2
sp.simplify(goniometricky_vyraz)

\(\displaystyle 1\)

Kód
sp.pi, sp.E

\(\displaystyle \left( \pi, \ e\right)\)


🎯Substitúcia

Do symbolických výrazov môžeme dosadiť čísla, iné symboly alebo celé výrazy.

Kód
vyraz = x**2 + y

Dosadenie jedinej hodnoty

Kód
dosadenie_1 = vyraz.subs(x, 3)
dosadenie_1

\(\displaystyle y + 9\)

Dosadenie viacerých hodnôd

Kód
dosadenie_2 = vyraz.subs({x: 2, y: 5})
dosadenie_2

\(\displaystyle 9\)

Dosadenie výrazu do výrazu

Kód
dosadenie_vyrazu = vyraz.subs(y, (1 - x))
dosadenie_vyrazu

\(\displaystyle x^{2} - x + 1\)


📊 Numerická evaluácia

Ak chcete desatinné čísla (floating-point), použite evalf(). Je bežné kombinovať subsevalf.

Kód
vyraz = ((x + 1)/3)
display(vyraz)
type(vyraz)

\(\displaystyle \frac{x}{3} + \frac{1}{3}\)

sympy.core.add.Add
Kód
hodnota = vyraz.subs(x,2)
display(hodnota)
type(hodnota)

\(\displaystyle 1\)

sympy.core.numbers.One
Kód
hodnota = hodnota.evalf()
display(hodnota)
type(hodnota)

\(\displaystyle 1.0\)

sympy.core.numbers.Float

🔐 Predpoklady (assumptions) a ich vplyv

Predpoklady môžu zjednodušiť výsledky (napr. positive=True umožní rušiť absolútne hodnoty).

Kód
b = sp.Symbol('b', positive=True)
sp.simplify((b**2)**(1/2))  # pre b>0 sa √(b²) zjednoduší na b

\(\displaystyle b^{1.0}\)


🧠 Zhrnutie

  • Symboly: symbols('x y z'), Symbol('a', positive=True, integer=True, ...)
  • Výrazy: bežná algebra s + - * / **, funkcie sin, cos, exp, …
  • Upravy: expand, factor, simplify
  • Dosadzovanie: subs (aj viacnásobné)
  • Numerika: evalf (väčšinou po subs)
  • Predpoklady: uľahčujú zjednodušenia a kontrolu domény symbolov.

📚 Oficiálna dokumentácia SymPy

Podrobný popis funkcií, ich parametrov a príkladov použitia nájdete v oficiálnej dokumentácii knižnice SymPy na adrese: https://docs.sympy.org/latest/index.html.


🎞️ Videonávod