Sympy
Sympy je Python biblioteka za simboličku matematiku. Prednost Sympy-ja je što je potpuno napisan u Pythonu (što je katkad i mana). Mi ćemo u nastavku kolegiju obraditi i puno moćniji Sage, koji je CAS u klasi Mathematice i Maplea. No Sage nije biblioteka u Pythonu, već CAS koji koristi Python kao programski jezik.
Korištenje Sympy-ja počinje kao i kod ostalih biblioteka, s importiranjem.
Da bi dobili lijepi izlaz:
Koristit ćemo i interaktivne widgete, pa ih ovdje učitavamo
Simboličke varijable
Kako je Sympy samo Python paket, trebamo deklarirati koje simbole ćemo koristiti kao simboličke vatrijable. To možemo napraviti na više načina:
Možemo navoditi i dodatne pretpostavke:
Možemo kreirati i apstraktne funkcije:
Kompleksni brojevi
Imaginarna jedinica se označava s I
.
Razlomci
Postoje tri numerička tipa: Real
, Rational
, Integer
:
Numerička evaluacija
SymPy može računati u proizvoljnoj točnosti te ima predefinirane matematičke konstante kao: pi
, e
te oo
za beskonačnost.
Funkcija evalf
ili metoda N
s ulaznom varijablom n
računaju izraz na n
decimala.
Ukoliko želimo zamijeniti varijablu s konkretnim brojem, to možemo učiniti koristeći funkciju subs
:
No subs
možemo korisiti i općenitije:
Sympy i Numpy se mogu simultano koristiti:
Efikasniji kod se postiže funkcijom lambdify
koja kompajlira Sympy izraz u funkciju:
Razlika u brzini izvođenja:
Ovdje smo mogli koristiti i theano ili uFuncify.
Pretvaranje stringa u Sympy izraz:
Jedan interaktivan primjer:
Eq
kreira matematičke jednakosti, tj. jednadžbe.
Algebarske manipulacije
expand
prima dodatne argumente. Npr. trig=True
:
Analiza
Deriviranje
Više derivacije:
Želimo izračunati
Integracija
Definitni integrali:
Nepravi integrali:
Sume i produkti
Limesi
(Taylorovi) redovi
Rastav oko :
S metodom removeO
se možemo riješiti dijela:
Ali oprezno s time:
Reziduumi:
Linearna algebra
Matrice
Rješavanje jednadžbi
Sustavi jednadžbi:
Više o interaktivnim widgetima možete naučiti preko primjera koji se nalaze ovdje.
Python verzija | 3.5.3 |
kompajler | GCC 4.8.2 20140120 (Red Hat 4.8.2-15) |
sustav | Linux |
broj CPU-a | 8 |
interpreter | 64bit |
sympy verzija | 1.0 |
matplotlib verzija | 2.0.0 |
IPython verzija | 5.3.0 |
numpy verzija | 1.11.3 |
ipywidgets verzija | 6.0.0 |
Zadaci za vježbanje
Napišite funkciju koja prima listu izraza, varijablu i točku, a ispisuje vrijednost svakog izraza s liste u toj točki. Funkcija treba izgledati ovako
Izračunajte
Izraz
(x**2 + 3*x + 1)/(x**3 + 2*x**2 + x)
pojednostavite do izraza1/(x**2 + 2*x + 1) + 1/x
Izraz
(a**b)**c)
pojednostavite do izrazaa**(b*c)
Napišite funkciju koja rješava (egzaktno) kvadratnu jednadžbu.
Napišite funkciju koja za ulazne parametre prima funkciju (danu simboličkim izrazom) te točku (tj. broj) a crta danu funkciju i njenu tangentu u danoj točki. Učinite funkciju interaktivnom na način da se može birati funkcija (upisivanjem u polje) te točka (klizačem).
Izračunajte vektorski produkt vektora i
Riješite Cauchyjev problem i pojednostavite dobijeno rješenje. Ovdje su , i nepoznate konstante.
Riješite diferencijalnu jednadžbu i nacrtajte partikularna rješenja koristeći sympy modul za crtanje.