Matematički softver
Sadržaj kolegija
Python
Numpy / Scipy
Pandas
Sympy
Sage
Markdown
Kolegij će se bazirati na korištenju web platforme Sagemath cloud. Materijali za kolegij se nalaze na web stranici kolegija, na Sagemath oblaku te u Git repozitoriju kolegija.
Plan kolegija
Uvod u Python; upoznavanje s web platformom
Markdown, notacija za matematičke formule
Python kao alat za znanstvenike (Matplotlib, Pandas, ...)
Sage
Polaganje kolegija
Ocjena se formira na osnovu dva kolokvija te domaćih zadaća.
Kolokviji open-book tipa.
Kolokviji nose najviše 80 bodova.
Domaće zadaće u obliku eseja, sa zadanim elementima.
Predaja ispravno napravljenih svih domaćih zadaća nužan je uvjet za polaganje kolegija. Domaća zadaća je uspješno predana samo ako ima sve tražene elemente.
Domaće zadaće nose do 20 bodova, ali na sljedeći način: studenti čije domaće zadaće odskaču kvalitetom dobit će do 20 dodatnih bodova.
Popravni ispit nije predviđen.
Python
Prvi primjeri, korištenje Jupyter (IPython) notebook-a
Jupyter notebook ima puno mogućnosti, koje ćemo upoznavati tijekom kolegija. Jedna od njih je i jednostavan pristup datotečnom sustavu.
astro.png mojmodul.py terminal.term Uvod.ipynb
custom.css mojmodul.pyc thumb2.png Uvod.slides.html
integral_demo.py __pycache__/ thumb.png verzije.py
Jedan primjer korištenja Jupytera. Verzija sa svim pomoćnim datotekama na Sagemath oblaku.
Primjer korištenja Pythona
Krenimo s nečim korisnim. Učitajmo sliku, prikažimo je, prikažimo dio slike te smanjimo šum na tom dijelu slike.
Što se dešava u gornjem kodu?
Prvi redak koda služi da se iz biblioteke scikit-image učita pod-bibiloteka data.
U drugom retku iz biblioteke matplotlib učitavamo pod-biblioteku pyplot. Kako ćemo pyplot često koristiti dajemo joj kraće ime plt.
U trećem retku iz biblioteke data učitavamo objekt coins. To je u ovom slučaju slika novčića.
Na koncu prikazujemo sliku.
Varijabla coins.shape sadrži par brojeva.
Što točno radi funkcija denoise_tv_chambolle? To možemo saznati na sljedeći način.
Analogno smo mogli koristiti i restoration.denoise_tv_chambolle?
Još jedan primjer korištenja biblioteka.
Ukoliko želimo učitati sve iz biblioteke koristimo *.
Varijable se definiraju sa znakom za jednakost =.
Brojevi
Razlomci
Stringovi, liste, rječnici
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-34-678f722d1c34> in <module>()
1 # nizovi (tuples) su isto što i liste, ali ne mogu se mijenjati
2 point = (10, 20)
----> 3 point[0] = 20
TypeError: 'tuple' object does not support item assignment
Skupovi
Funkcije
Blokovi se u Pythonu označavaju uvlačenjem koda. Praznine imaju sintaktičku ulogu.
Kompliciraniji primjer.
Funkcije su objekti kao i svi drugi.
Kontrola toka
Klase
Smisao klasa (tj. objektnog programiranja) je da omogući grupiranje varijabli i pripadnih funkcija koje rade s njima.
Funkcija oblika __imeFunkcija__
obično implementira neku standardnu metodu za odgovarajući tip podataka.
__init__
služi za kreiranje objekta dane klase__str__
služi za ispisivanje objektas matematičkog aspekta je važno da se mogu definirati i matematičke operacije nad objektima, kao npr. zbrajanje, množenje,...
Moduli
Moduli (ono što učitavamo s import) strukturom su ili datoteke (s nastavkom .py) koje na početku imaju doc string (komentar) koji opisuje modul.
Primjer modula uz korištenje Jupyter magije.
Paketi
To su kompleksniji moduli, koji su strukturirani kao dorektoriji, s datotekom __init__.py
.
Lovljenje grešaka
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-70-fc41adc288f0> in <module>()
----> 1 raise Exception("opis greške")
Exception: opis greške
Jupyter interactive
Jupyter notebook podržava i interaktivan rad. Dokumentaciju možete ovdje pogledati. Za sada ćemo samo napraviti jedan primjer.
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 |
matplotlib verzija | 2.0.0 |
IPython verzija | 6.0.0 |
scikit-image verzija | 0.13.0 |
networkx verzija | 1.11 |
Zadaci za vježbu
Napišite funkciju koja prima n, a vraća listu neparnih brojeva od 1 do n.
Napišite funkciju koja rješava kvadratnu jednadžbu.
Napišite funkciju koja numerički računa integral funkcije koristeći trapeznu formulu Funkcija treba ovako izgledati:
trapezint(f,n,a,b)
Napišite funkciju za numeričko deriviranje oblika
diff(f,x,h=1e-6)