<<

PRAKTIKUM IZ SOFTVERSKIH ALATA U ELEKTRONICI 2017/2018

Predrag Pejović

31. decembar 2017. Linkovi na primere:

OS: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-3-2017.zip

LATEX 1: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-4-2017.zip

LATEX 2: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-5-2017.zip

LATEX 3: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-6-2017.zip GNU Octave: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-8-2017.zip gnuplot: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-10-2017.zip

Maxima: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-11-2017.zip

Python 1: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-12-2017.py

Python 2: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-13-2017.zip

PyLab: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-14-2017.zip

SymPy: http://tnt.etf.bg.ac.rs/~oe4sae/prim-sympy.py Lica (i ostali podaci o predmetu):

I Predrag Pejović, [email protected], 102 levo, http://tnt.etf.rs/~peja PRAKTIKUM IZ SOFTVERSKIH ALATA I Strahinja Janković

U ELEKTRONICI I sajt: http://tnt.etf.rs/~oe4sae

2017 I cilj: savladavanje niza programa koji se koriste za svakodnevne poslove u elektronici (i ne samo elektronici . . . )

I svi programi koji će biti obrađivani slobodan softver (free ), legalno možete da ih koristite (i ne samo to) gde hoćete, kako hoćete, za šta hoćete, koliko hoćete, na kom računaru hoćete . . .

I literatura . . . sve sa www, legalno, besplatno!

I zašto svake godine (pomalo) updated slajdovi?

Prezentacije predmeta A šta se tačno radi u predmetu, koji programi? 1. uvod (upravo slušate): organizacija nastave + (FS: tehnička, ekonomska i pravna pitanja, kako to uopšte postoji?) (≈ 1 w) 2. operativni sistem (GNU/, Ubuntu), komandna linija (!), shell scripts, . . . (≈ 1 w) 3. nastavak OS, snalaženje, neki IDE kao ilustracija i vežba, I engleski jedan Python i jedan program . . . (≈ 1 w) I srpski, kraća verzija 4.L ATEX i LATEX 2ε (≈ 3 w) I engleski, prezentacija i animacije 5. XCircuit (≈ 1 w)

I srpski, prezentacija i animacije 6. probni kolokvijum . . . (= 1 w) 7. prvi kolokvijum . . . 8. GNU Octave (≈ 1 w) 9. gnuplot (≈ (1 + ) w) 10. wxMaxima (≈ 1 w) 11. drugi kolokvijum . . . 12. Python, IPython, PyLab, SymPy (≈ 3 w) 13. treći kolokvijum . . .

Evolucija i društvene nauke Problemi u radu sa računarima . . .

I svaki program zahteva obuku . . .

I čitati uputstvo? dostupna literatura? rano odustajanje . . .

I teorijski, počinje 1940s I najbrže i najbolje se uči ako neko pokaže (“hands-on I praktično, kod nas možda 1970s approach”)

I 1980s koristimo računar I pomoćnik-savetodavac dostupan?

I 1990s koristimo računar u svakodnevnom radu I Google pomoćnik? Youtube pomoćnik?

I 2000s sve radimo pomoću računara I koji program odabrati? stvaranje zavisnosti (navike + old

I 2010s potpuno zavisimo od računara files)? ozbiljna odluka!

I PC, mobile, cloud, phone, tablet, . . . I da li računar pomaže ili odmaže? kada se vraća naučeno?

I nema više PC? za koga? I strahovito brze promene, novi programi . . .

I ubrzava se . . . I prilagođavanje: psihologija, ergonomija, namere autora programa (vagon primer) . . .

I rezultati: tehnofobija illi zavisnost

I cilj: računar treba da služi nama, ne mi njemu

Pravni i ekonomski problemi Kako je nekada bilo . . . (“učiteljica života”)

I mainframe računari

I Pravni problemi I software i hardware se prodavali zajedno

I licenciranje (program koji ste kupili je vaš?) I računari bili ekskluzivan proizvod, skup I MORAMO biti 100% legalni!!! I mnogo manje korisnika I Ekonomski problemi mnogo manje komunikacije između korisnika I troškovi (i ne samo to! ↓) I

I navike i zavisnost I okruženje bilo uglavnom naučno ili visoko poslovno I problemi sa proprietary formatima (primer: bas bih voleo opet poslovne primene uz razvoj sopstvenih programa, da procitam svoj doktorat u elektronskoj formi) I I bezbednost podataka! custom design I način naplate . . . I dominantna zaštita poslovna tajna I opravdanost naplate . . . I ogromne mogućnosti, pps, strahovito brz razvoj I free (slobodni) software? I besplatno (ako tako hoćete) i jos mnogo više! I društvene implikacije, nestanak i nastanak velikog broja poslova, promena sistema vrednosti, pojava mladih ljudi na uticajnim pozicijama . . . Kako je danas? (posle ≈ 1985) Specifičnosti „intelektualnih“ (nematerijalnih) proizvoda 1

I PC revolucija (prošla; prošla?) I značajni troškovi razvoja I jeftino, dostupno, (modularno (?)) I proizvod se upotrebom ne troši, traje I sklopivo, prilagodljivo korisniku (?) I potražnja se spontano ne obnavlja I izaberete komponente (?), sklopite računar (?), šta dalje? I za zaradu neophodan novi razvoj ili vremenski ograničena I softver postao zasebna komponenta računara, posebno se licenca kupuje (upravo ovde priča počinje . . . ) I misaoni eksperiment: softver koji se kvari I operativni sistem, početak I korisnički softver, zavisno od primene računara I prestaje „podrška“ I softver je intelektualni, nematerijalni proizvod . . . I troškovi umnožavanja zanemarljivi I nematerijalni proizvodi su veoma specifični, I troškovi distribucije zanemarljivi

upotrebom se ne troše! I kako organizovati proizvodnju da bi se ostvario profit? I rezultat: monopoli i „verski ratovi“ I karakteristike veoma slične stvaralaštvu u nauci, oblast slična I ideologizacija i manipulacija . . . matematici . . . I http://en.wikipedia.org/wiki/Samizdat: I postoje programeri koji vole da programiraju . . . _And_Other_Issues_Regarding_the_%27Source%27_of_ . . . dok ne dodje GUI! Open_Source_Code I

Specifičnosti „intelektualnih“ (nematerijalnih) proizvoda 2 „Intelektualna svojina“ i njena „zaštita“

(navedene osobine se uglavnom odnose na softver, manje na ostale intelektualne proizvode) pokušaj da ideje dobiju tretman materijalnih objekata, a time i svog

I ogroman komercijalni potencijal vlasnika

I potencijal za stvaranje zavisnosti (izuzetno opasno!) I potencijal za uslovljavanje forme “intelektualne svojine”: I problemi vezani za privatnost I primeri: 1. copyright I Phil Zimmerman, Boulder, CO, 1991, PGP 2. patent I Mark Shuttleworth (1973), Thawte, digital certificates and security 3. trade secret I Mark Shuttleworth, Canonical, 2004, biće još reči . . .

I sjajna osnova za izgradnju “social machinery” ni oko čega . . . bitno se razlikuju!!!

I u čemu ima mnogo interesa . . . koji se brane!

Copyright Patent

I štiti ideju

I kratko traje (10-20 godina)

I štiti konkretan proizvod, ne ideju I kratko? za sotver kratko?

I dugo traje I širi se domen (predmet, metod, nova primena, organizam, I produžava se geni . . . )

I širi se domen I zahteva prijavu i odobrenje patenta, košta!

I sve copyrightable automatski je copyrighted (negde . . . ) I David Pressman, “Patent it Yourself,” Nolo Press

I copyright notice, “all rights reserved” (ne košta!) I offensive rights

I dominantna zaštita za software u nizu pravnih sistema . . . I samo 10% patenata isplati troškove (???)

I pošto se software kopiranjem umnožava, „proizvodi“ I kritike, 19. vek, “Patent Absurdity”

I ne sprečava da neko napiše nov program iste funkcionalnosti! http://patentabsurdity.com/ I nečitki patenti, promenjen smisao

I pojam „očigledno“

I kako to funkcioniše u praksi . . .

Trade Secret (poslovna tajna) Softver, terminološke zabune

I ne košta I Free Software I traje dok traje tajna I Open Source Software I nikog ne sprečava da otkrije isto I Freeware I zaštita kroz NDA I negde se može primeniti, negde ne I Shareware

I primer: program u interpretativnom jeziku Free Software novo i neobično, . . .

I Richard Mathew Stallman, 1983. I neprijatelji? brojni! I free as in free speech, not free beer (slobodan / besplatan) 1. interesni, racionalni I uvek je neko „platio“ razvoj programa 2. ideološki, iracionalni I korektan prevod „slobodan softver“ I korisnici? I definicija (po RMS): I motivi contributors? I Freedom 0: da se izvršava program, bez ograničenja I Freedom 1: da se proučava i menja program: I treba li programeri da budu plaćeni? potreban I poslovni modeli? I Freedom 2: da se distribuiraju kopije programa I „pustite nas da radimo!“ I Freedom 3: da se distribuiraju modifikovane verzije programa I “social machinery”

I kad licenca ovo dopušta software je free I konkurencija (lojalna, nelojalna?)

I FSF, http://www.fsf.org I prošlost kod nas (do ≈ 2003.): sve je bilo freeware, jako malo free software I FSFE, http://fsfe.org/

I osim praktičnih, pokreću i etička pitanja

Podela softvera Open Source Software

I Bruce Perensi Eric Steven Raymond (ESR)

I “The Cathedral and the Bazaar” I free software (slobodni softver)

I licenca dopušta navedene četiri slobode I Open Source Initiative, www.opensource.org I izvorni kod (source code) uvek dostupan I u osnovi, to je free software I ima više licenci koje to omogućuju I ideja: popraviti marketing (ne zamerati se) I primeri licenci: GNU GPL (GNU/Linux) i BSD (BSD, Python, Spice) I podržao

I proprietary software (vlasnički softver) I u početku uspeh I licenca ne dopušta bar jednu od navedene četiri slobode I softver kome se zna izvorni kod MOŽE biti proprietary I izvorni kod može biti dostupan software!!! I izvorni kod obično nije dostupan, poslovna tajna Primer: FFTW I korisnik baš i ne zna šta program radi na njegovom računaru I maksimiranje profita utiče na software design, primeri . . . I gotovo uvek je (open source = free) software

I FOSS (Free and/or Open Source Software)

I ozbiljan sukob sa FSF, koristili i dalje GPL

Freeware Shareware

I proprietary, ali besplatan softver I besplatan iz nekog razloga

I reklame I problem kod reči “sharing” I prikupljanje informacija I stvaranje navike kod korisnika I softver koji se besplatno distribuira I testiranje programa (besplatno) I manje slobodan nego freeware I testiranje tržišta I obično služi za promociju programa I želja za sakrivanjem dela koda ili podataka I ... I ograničena funkcionalnost i/ili vremensko ograničenje

I obično nepoznat source code

I proučiti motive pre upotrebe, razmisliti

I primer: LTspice

GNU , UNIX (i C)

I 1983. ili 1984., GNU project, RMS, MIT I Unix...

I recursive acronym, GNU’s Not Unix I 1969, AT&T, , , Brian

I da bude i ostane free Kernighan, Douglas McIlroy, and

I nije baš bilo bez pomoći sa strane, prećutna podrška MIT . . . I portability

I kako da ostane free? I modularity

I izmišljen copyleft (jako važno! biće još reči . . . ) I

I http://copyleft.org/ I vrlo povoljna osnova za GNU!

I zašto baš Unix? I C kompajler i modul po modul, . . . Dennis Ritchie, #1 Dennis Ritchie, #2

Views on computing In an interview from 1999, Dennis Ritchie clarifies that he sees Following Ritchie’s death, computer historian Paul E. Ceruzzi Linux and BSD operating systems as a continuation of the basis of stated: the Unix , and as derivatives of Unix:

“Ritchie was under the radar. His name was not a household name “I think the Linux phenomenon is quite delightful, because it draws at all, but . . . if you had a microscope and could look in a so strongly on the basis that Unix provided. Linux seems to be computer, you’d see his work everywhere inside.” among the healthiest of the direct Unix derivatives, though there are also the various BSD systems as well as the more official offerings from the workstation and mainframe manufacturers.”

POSIX

Linux Ličnosti

I do 1991. skoro sve gotovo

I nedostajao kernel OS I Richard Mathew Stallman (RMS) I RMS očekivao Hurd I Eben Moglen I Hurd ne baš sjajno napredovao I Linus Torvalds I Linus Torvalds, University of Helsinki → Linux I (Larry Lessig, Creative Commons) I konačno sve gotovo, free OS I Mark Shuttleworth I počele distribucije, . . .

I „nesporazumi oko imena“

I danas uglavnom GNU/Linux ili GNU+Linux

Licence . . . Spice, BSD licenca, original

http://en.wikipedia.org/wiki/BSD_licenses

7/17/2007 Spice is covered now covered by the BSD Copyright: I GPL, General Public License, FSF, copyleft,... Copyright (c) 1985-1991 The Regents of the University of California. I BSD License, permissive free software license All rights reserved.

I MIT License Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, modify, and distribute this software and its documentation for any purpose, provided that the I dvojno licenciranje moguće, FFTW above copyright notice and the following two paragraphs appear in all copies of this software.

I CeCILL IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF I http://www.gnu.org/licenses/license-list.html THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

MIT license Važno: Copyleft

http://en.wikipedia.org/wiki/MIT_License I Copyright: “all rights reserved”

Copyright (C) I Copyleft: “all rights reversed” ili “all wrongs reversed” ili “some wrongs reversed” Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell I cilj da se free software zaštiti, da ostane slobodan copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: I restriktivne licence

The above copyright notice and this permission notice shall be included in all copies or substantial I „virusna licenca“ portions of the Software. I The GNU General Public License THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, I The GNU Lesser General Public License FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER I The GNU Affero General Public License LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. I The GNU Free Documentation License Organizacija predmeta Program predmeta, teme (ono što je realno moglo da se stigne prethodnih godina)

I sasvim praktičan predmet, lak; lak (?) I Ubuntu, osnove i komandna linija, shell scripts I savladati ((samostalno) korišćenje) niza programa I C, Python, IDEs, kao ilustracija prethodnog I organizacija nastave: radionica, “hands-on approach” I LAT X I Q: koliko ljudi za računarom? E I XCircuit I A: preferably 1! I GNU Octave I maksimum 20 studenata, najbolje 10 I gnuplot I ocenjivanje: mali kolokvijumi, 3 kolokvijuma I Maxima, wxMaxima I za koga predmet nije I Python, PyLab (NumPy, SciPy, Matplotlib, IPython), SymPy

Šta bi još moglo da se uvrsti u predmet? Ispit, ocenjivanje

I VirtualBox

I LibreOffice I kolokvijumi/ispiti sa literaturom I Scilab, Xcos,(Freemat, Euler, . . . ) 1. dokumentacija 1/3 (1. kolokvijum) I Inkscape 2. matematika 1/3 (2. kolokvijum) 3. programiranje 1/3 (ispit) I GIMP, ImageMagick I ne traži se memorisanje, već snalaženje I LibreCAD I na kolokvijumu/ispitu jedino nije dozvoljena saradnja među I Asymptote studentima I git I Ocenjivanje po kolokvijumima: I Qucs 1. LaTeX (80) + XCircuit (20) I ngspice 2. Beamer (20) + Octave (20) + gnuplot (30) + wxMaxima (30) 3. Python (50) + PyLab (50) I KiCad I otvoreno za primedbe i sugestije (do određene granice) . . . I R

I Julia

I SageMath...

Linkovi . . .

HONOR CODE sajt predmeta: CERTIFICATE Jerry Cooperstein, Ph. D. Training Program Director http://tnt.etf.bg.ac.rs/~oe4sae/ The Linux Foundation

Clyde Seepersad General Manager, Training Predrag Pejovic The Linux Foundation edX Linux kurs (bez programa koje obrađuje PSAE): successfully completed and received a passing grade in LFS101x: Introduction to Linux https://www.edx.org/course/linuxfoundationx/ a course of study offered by LinuxFoundationX, an online learning linuxfoundationx-lfs101x-introduction-1621 initiative of The Linux Foundation through edX.

HONOR CODE CERTIFICATE Verify the authenticity of this certificate at Issued August 15th, 2014 https://verify.edx.org/cert/0b2944574c99408e8092adc07b1f9cc5

Linkovi za zainteresovane . . .

Richard Matthew Stallman, TEDx, Geneva, 2014.

Eben Moglen, kako je sve počelo . . .

Eben Moglen, gde smo sada, 2013.

Revolution OS, dokumentarni film iz 2001.

O patentima . . . Operativni sistem

I služi da bi pokretali i koristili programe

I win, Mac OS X, GNU/Linux, BSD, Solaris, OpenIndiana, . . . operativni sistem I GNU/Linux, distribucije: — part 1 — I Ubuntu I Linux Mint I fedora I debian I openSUSE I KNOPPIX (sjajno za probu i popravke, live DVD, live USB disk, “live medium”) I ... distrowatch I i jedna knjiga: linux from scratch

I Ubuntu...

I . . . i bas za hardline free-distros

Ubuntu desktop environments

I www.ubuntu.com I kod windows samo win I desktop, server, Kubuntu, Xubuntu, Lubuntu, Edubuntu, I duga istorija pre toga, Xerox, Apple, . . . Ubuntu GNOME, Ubuntu MATE . . . menja se . . . kod GNU/Linux mnoštvo desktop environment mogućnosti (Gnubuntu, Ubuntu-libre, Gobuntu) I I popularni GNOME, KDE, Xfce, LXDE, MATE, Cinnamon, I dnload, narezati DVD ili napraviti USB startup disk Unity... I narezati? InfraRecorder, http://infrarecorder.org/, svaki od desktop environments ima svoje motive, istoriju, GPLv3 I izgled, . . . HIG I pre instalacije PROBATI, live DVD, live USB disk, “live na kraju sve skoro isto, ali treba vremena da se to shvati . . . medium” I I od 2010. Canonical forsira Unity, to je sada default I može da se napravi USB startup disk, uputstvo . . . I iako nisu svi njime oduševljeni . . . I Ubuntu, instalacije

I samo Ubuntu I možete da instalirate i štošta drugo: GNOME, MATE, I dual boot (dva diska? pazite!) Cinnamon, Cairo,... I wubi, inside windows, prošlost? I sjajna zabava kada imate višak vremena I VirtualBox, iso file, + some proprietary drivers . . . setting up the system . . . desktop environment . . . Unity . . . za sada . . .

I zašto Unity?

I default I motivisan by mobile devices I instalira se operativni sistem . . . I logika HUD

I . . . proprietary drivers (uglavnom graphichs i wlan) . . . I kada se naviknete nije loš, naprotiv! I . . . proprietary codecs . . . ogg? http://xiph.org/ I ima otklonjive privacy issues!!! I ubuntu-restricted-extras Amazon Privacy Controversy I nestaje! Ipak, naslednik je vrlo sličan! I programi se instaliraju iz repository . . . I insistiramo na defaults I za instalaciju potreban jedan disk ili USB flash drive i Internet I customize sami . . . na SVOM nalogu i/ili računaru I za probu sjajno ako imate stari racunar/laptop I pitanje pristojnosti ... I moje iskustvo sa instalacijama . . . I do sada nije bilo problema . . . I a sada pretpostavimo da je sistem instaliran . . . I svoje podatke ponesite na USB flash drive . . . ako su vam važni

I ne ostavljajte podatke na racunaru, počistite . . .

I rekoh, pitanje pristojnosti ...

Unity . . . Launcher . . .

I levi bar I sistem boot-ovan, login, izabrati Unity, DE choice! I pokreće (lansira) aplikacije I let’s log in . . . I uvek je prva aplikacija Dash I Unity . . . http://www.youtube.com/watch?v=xA9EHaNc2VI Dash ima privacy issues, otklonjive!!! (≈ 30 min) I I ostale aplikacije se dodaju (Lock to Launcher) ili uklanjaju I Mint . . . (Unlock from Launcher), desno dugme miša https://www.youtube.com/watch?v=M-d_TNkPjt8 I ostalim aplikacijama se lako menja redosled I Unity . . .

I launcher (application switcher) (jedina customization!) I aplikacija se pokrece sa single click I top menu bar I pokrenuta aplikacija: trouglić (pun) ili > I indicators . . . I vežba: Octave, 2 + 2 I Desktop R 2 I vežba: wxMaxima x dx Dash Dash, vežba . . .

I pretražuje računar, i applications i files

I pokreće se sa single click ili sa “Superkey” ili I start Software Updater Windows key I update

I duže držanje Superkey otvara prozor sa keybord I start Ubuntu Software Center shortcuts I install GeoGebra ima “lenses”, donji “bar” I I instal Pyxplot I home I run GeoGebra I applications I files I nacrtajte elipsu I video I move inside Launcher I music I remove from Launcher I photos

I lenses su neka vrsta filtera I add again to Launcher

I ali ima i filter, lens sensitive! top menu bar indicators . . .

I zaista nov i neobičan koncept

I gornji bar, levi deo, nije jasno odvojen od desnog dela

I zavisi od aplikacije I desni deo menu bar I malo se vidi, malo ne, autodark I poslednje dugme affect system I vežba: pokrenete Firefox I time/date I gde je menu? I sound I iako je Firefox “u prozoru” menu je na menu bar! I Internet connection I pređete mišem do menu bar, pojavi se menu za Firefox! I communications launcher I sklonite miša, nema više tog menu bar! I keyboard switcher I pokrenete wxMaxima I ... I miš na menu bar . . .

I Alt-Tab menja aplikacije

I menja se i menu bar!

I štedi se prostor!!! system settings . . . File Manager, nautilus

I krajnje desno dugme, System Settings I obično prva ikona posle Dash, mada ne mora I pogledati Launcher! Lock to Launcher? I ime sve kaže I Appearance (povratak: All Settings) I nautilus je iz GNOME project I check: 1. Enable workspaces I poružnjao, (nema više F3) 2. Add show desktop icon to the launcher I dva prozora (taba), ctrl-t, može i više

I close the window I gase se klikom (desno je x, levo je ime)

I close? levo! buka oko toga!!! I full path ctrl-l, izlaz sa esc

I promena? I ovo je otprilike sve za početak . . . I workspaces?

get acquainted, startovanje programa, . . . file system . . .

I Home Folder (Home Directory), ima svaki korisnik

I Ctrl/l, full path, Location, wheel-button I updated? 2 I subfolders, create your folder I Octave, plot x za 0 ≤ x ≤ 1, . . . kao Matlab, isto! I MSDOS: folder; UNIX, GNU/Linux: directory (mnogo I octave, poznato? ovakvih situacija) I octave-cli, za old-fashioned I MSDOS: directory separator \; UNIX, GNU/Linux: directory I wxMaxima, solve(x^2=4, x), wxplot2d(x^2, [x,-1,1]) separator / I gedit, iz Launcher-a I MSDOS: command option separator /; UNIX, GNU/Linux: I terminal, gnuplot, plot sin(x) command option separator -, --

I terminal, ipython, a=2, =3, a^b, a**b I POSIX, UNIX, Linux, BSD, . . . jedan tree, vratiću se . . .

I terminal, gedit I win: svaka storage device ima tree, razlika!

I moć navike! (dobre i lose navike)

I komandna linija? već ste je sreli: terminal komandna linija . . . neke komande . . .

I date

I Terminal (izlaz: exit ili Ctrl/d) I cal

I Alt/Ctrl F1 do F6, F1 zaobići, debugging (izlaz: I cal -help Alt/Ctrl F7) I ncal I eto nas na komandnoj liniji I df I jako dobra knjiga: I clear http://sourceforge.net/projects/linuxcommand/ I free I ali 540 strana, treće izdanje! I od sada: terminal na medium, File Manager, home, medium I lako se čita!!! (tablet, prevoz, . . . ) I ideja: da vidite šta komandna linija radi, kako fajlovi i direktorijumi nastaju i nestaju

vrlo osnovne komande, ls pokušaj prevare, , file

I uvek prva komanda, ls, ekvivalent za dir iz MSDOS-a

I ls, ls -l, ls -a, ls -al, ls -lh

I boje govore o tipu fajla, zelena je .exe ili .com ili .BAT I ls ls.ps I man ls, man -t ls, man -t ls >ls.ps I cp ls.ps lspdf.pdf I ls I ls lspdf.pdf I ps2pdf ls.ps I file lspdf.pdf I ls I cp ls.pdf lsps.ps I file ls.ps I ls lsps.ps I file ls.pdf I file lsps.ps I evince ls.pdf

I evince ls.ps

I postoji i evince za win, http://projects.gnome.org/evince/

I man convert ... , more, less . . . biće još jednom cat, gedit i redirekcija

I cat ls.ps I gedit proba I cat ls.ps ls.ps I sadržaj fajla po želji, npr dva reda teksta, save!!! I man cat I cat proba proba proba proba proba > proba5.txt I ko je napisao cat ? I cat proba5.txt I more ls.ps I more proba5.txt I less ls.ps I less proba5.txt I less is more!

help na komandnoj liniji . . . počistite za sobom!

I ls

I izlaz je q, ne esc I ls.ps

I man ls (manual) I ls

I ls --help (help) I rm -i ls.pdf

I info ls (GNU info system) I ls

I apropos, man apropos I ^d

I whatis, whatis apropos (vrlo kratak opis) I shutdown mašine, potom ugasite monitore

I whereis, whereis apropos (vrlo kratak opis) I vratite stolice na mesto

I ponesete sve svoje stvari zagrevanje . . .

update operativni sistem I I komandna linija, nastavak . . . mnoštvo programa — part 2 — (jezik se zaboravlja ako se ne govori)

I scripting, bash, sh

I malo uvoda u Python, IDLE, idle

I malo C

I (ni)malo IDE, Integrated Development Environment, Code::Blocks, Eclipse (drugi to rade . . . )

Synaptic file system, nastavak . . .

I još jedan način za instaliranje programa

I jako dobro, omogućava precizna podešavanja I bitno različit file system u odnosu na MS-DOS/win

I nije instaliran by default . . . I ne postoje volumes poput C:\, D:\,...

I zahteva neko razumevanje . . . I Ext 3, Ext 4, journal file system

I pokrenete Synaptic Package Manager I case sensitive, kada to može, ne kod FAT; ovo pravi probleme kod kopiranja na USB flash, I dopunite octave, modul octave-control File i file primer, preklapanje I pokrenete octave I jedinstven file system, stablo počinje u root, / I h = tf([1], [1, 1]) I volumes se mount-uju: ubacite USB flash I bode(h) I USB flash, CD, u /media/, pogledajte sa ctrl/l I h = tf([10], [1, 0, 100]) I a sada kroz file system pomoću komandne linije . . . I bode(h) I terminal na pola, File Manager na pola, . . . I h = tf([10], [1, 0.1, 100])

I bode(h) directory system commands: pwd, mkdir, rmdir, cd . . . redirekcija, cat, tac, head, tail, more, less . . .

I pwd (koristite često da bi znali gde ste!)

I mkdir I ls -lht /usr/bin >usrbin1.lst

I ls I ls /usr/bin >usrbin2.lst

I cd I ls -lht >ls.lst

I pwd I ls

I ls I cat usrbin1.lst

I cd .. I tac usrbin1.lst

I cd - I head usrbin1.lst

I cd ~ I tail usrbin2.lst

I cd / I cat usrbin1.lst usrbin2.lst

I cd ~/ I cat usrbin1.lst usrbin2.lst > usrbin3.lst

I cd I more usrbin3.lst

I cd I less usrbin3.lst

I pwd pipe, . . . grep i regular expressions

I ls -lht /usr/bin | more

I ls -lht /usr/bin | less I grep, globally search a regular expression and print

I ls /usr/bin | more I regular expression

I ls /usr/bin | less I knjiga, 197 strana

I grep maxima usrbin1.lst I Google Analytics, Regular Expressions I grep maxima usrbin2.lst

I ls -lht /usr/bin | grep maxima scripting . . . script file 1: radi

ls -lh /usr/bin >usrbin1.lst I pokrenuti editor, gedit radi ls /usr/bin >usrbin2.lst ls -lh >ls.lst I View, Highlight Mode, sh ↑ podešava context highlighting mkdir lst mv usrbin1.lst lst scripts su obično sa ekstenzijom I sh mv usrbin2.lst lst I mada ne mora . . . mv ls.lst lst I videćete šta radi file cd lst ls -lh cd ..

script file 2: briši startovanje shell file kao data file

I file radi, koji je tip fajla?

I ls -lh radi, biće još reči o ovome

I bash radi gedit brisi.sh I pogledajte šta je urađeno! rm -i lst/*.lst I bash brisi.sh I pogledajte šta je urađeno!

I sh radi

I pogledajte šta je urađeno!

I sh brisi.sh

I pogledajte šta je urađeno!

privileges . . . chmod . . .

I ls -lh radi I ls -lhtr I chmod I i postoji nešto nalik na -rw-r--r-- pa podaci o fajlu I chmod 700 radi I i nešto nalik na drwxr-xr-x pa podaci o direktorijumu I ls -lh radi

I prvi znak: - za fajl ili d za direktorijum I pozeleneo?

I r je read, w je write, x je execute (ls) I drugi način I chmod {u|g|o}{+|-}{r|w|x} I tripleti rwx rwx rwx |{z} |{z} |{z} I chmod u-w radi user group other I svaka privilegija (r, w ili x je jedan bit) I ls -lh radi I chmod u+w radi I triplet daje oktalnu cifru, rwx je 7, r-- je 4, --x je 1, . . . I ls -lh radi I privilegija se kodira kao trocifreni oktalni broj I chmod go+x radi I rwx------je 700 I ls -lh radi I rwxr--r-- je 744 I chmod go-r radi I rw-r--r-- je 644 I radi I ./radi script file 3 #!

gedit argumenti0.sh I #! promenite u argumenti0.sh prvi red u #! /bin/bash I #! /bin/sh $0 i save kao argumenti0a.sh echo $1 echo $2 I promenite u argumenti0.sh prvi red u echo $3 #! /usr/bin/python i save kao argumenti0b.sh

file argumenti0.sh I obrišete prvi red i save kao argumenti0c.sh sh argumenti0.sh I file argumenti0.sh sh argumenti0.sh a b c file argumenti0a.sh sh argumenti0.sh d e I bash argumenti0.sh I file argumenti0b.sh ./argumenti0.sh I file argumenti0c.sh shell? Malo istorije (za zainteresovane) . . . script file 4

gedit argumenti1.sh

#! /bin/bash I https://en.wikipedia.org/wiki/Unix_shell echo 0 I https://en.wikipedia.org/wiki/Thompson_shell echo $0 I https://en.wikipedia.org/wiki/Bourne_shell echo 1 I https://en.wikipedia.org/wiki/Stephen_R._Bourne echo $1 echo 2 I https: //en.wikipedia.org/wiki/Bash_%28Unix_shell%29 echo $2 echo 3 i jedna knjiga: I echo $3 http://sourceforge.net/projects/linuxcommand/ file argumenti1.sh sh argumenti1.sh ./argumenti1.sh script file 5 environment variables, PATH

gedit argumenti2.sh I printenv #! /bin/sh I printenv | less echo 0: $0 echo 1: $1 I printenv PATH (prikaže vrednost promenljive PATH) echo 2: $2 I printenv PATH | grep home echo 3: $3 I echo $PATH (prikaže vrednost promenljive PATH)

I $PATH (shell pokušava da izvrši) file argumenti2.sh sh argumenti2.sh

environment variables, PWD proširimo PATH!

I pwd (print working directory)

I printenv PWD (isto!) I echo $PATH

I echo $PWD (isto!) I echo $PATH:$PWD

I echo PWD (ništa korisno) I PATH=$PATH:$PWD

I $PWD (pokuša da izvrši) I printenv PATH

I echo $pwd (ništa) I printenv PATH | grep home

I echo $(pwd) (ništa) I radi

I $(pwd) (pokuša da izvrši)

čišćenje . . . uvek!!! vaš prvi Python program, proba, bez .py . . .

I cd lst #! /usr/bin/python I ls I ls -1 print I rm -i * print ’Hello World!’ print I ls print ’MPFC’ I cd .. print

I rmdir lst pokretanje, . . . vaš drugi Python program, f.py, in gedit . . .

I python proba

I chmod +x proba #! /usr/bin/python I ./proba I chmod -x proba print I ./proba n = input(’argument = ’) print I python proba

I cp proba proba.py f = 1 for i in range(n): I ls -lhtr f = f * (i + 1) I idle (Not IDE, Eric Idle?)

I File, Open, proba.py print n, "! =", f print I context highlighting

I Run, Check Module (Alt+X)

I Run, F5 pokretanje . . . Zadatak: Fibonačijevi brojevi

I da probamo sva tri nacina, sa i bez .py?

I ipython

I run f.py

I ctrl/d ili ^d I fn = fn−1 + fn−2, f1 = 1, f2 = 1 I vrednosti promenljivih ostaju u interpreteru I lista od prvih n Fibonačijevih brojeva I nema problema sa velikim brojevima, dynamic typing

I a kako je počelo? ovako:

I python

I execfile(’f.py’)

I ^d

Fibonačijevi brojevi, Python zadatak, C program, faktorijel

#! /usr/bin/python

n = input(’duzina liste (int, >2): ’) I Dennis MacAlistair Ritchie (Username: dmr, September 8, print 1941 – October 8, 2011)

a = b = 1 I "UNIX is very simple, it just needs a genius to understand its simplicity." print 16 * ’-’ I "C is quirky, flawed, and an enormous success."

i = 1 I zatraži argument sa argument = print repr(i).rjust(3) + ’ ’ + repr(a).rjust(10) izračuna faktorijel i javi rezultat u formi m! = n i = 2 I print repr(i).rjust(3) + ’ ’ + repr(b).rjust(10) I gedit faktorijel.c pišete program . . . for i in range(2,n): I a, b = b, a + b print repr(i+1).rjust(3) + ’ ’ + repr(b).rjust(10)

print 16 * ’-’ jedan C program . . . GCC, prevođenje

#include

int main() { int i, n, f; I gcc -o faktorijel faktorijel.c I ls -lh printf("\nargument = "); zeleni faktorijel? scanf("%d", &n); I I ./faktorijel

f = 1; I problemi sa velikim brojevima? for (i=1; i<=n; i++) {f=f*i;}

printf("\n%d! = %d\n\n", n, f);

return 0; } Fibonačijevi brojevi, C, simplified korak napred, IDE, Code::Blocks

#include I IDE, Integrated Development Environment

int main(void) I Eclipse, Code::Blocks i Geany popularni . . . ovde C::B { I gdb, command line, sami printf("\nn = "); int n; I kreirate projekat, Empty scanf("%d", &n); I Debug/Release version

int i = 1, j = 1, k, c; I Build printf("\n\n1\n1\n"); I watches

for (c = 2; c <= n; c++) I breakpoints { I start, step into, shift-F7 k = i + j; i = j; I izvršavanje korak po korak, F7 j = k; I na kraju build Release version printf("%d\n", k); } I F7 ili button panel I watch Local variables return 0; } I just to get acquainted . . . Uvod 1

I TEX (ili TeX), sistem za pripremu dokumenata, http://en.wikipedia.org/wiki/TeX A LTEX I ,  I deo  http://en.wikipedia.org/wiki/Donald_Knuth, 70’s, 1978 taˇcno

I Free/Open-Source Software (FOSS)

I standard za slaganje teksta, posebno nauˇcnog, knjige, formule, import slika, ˇcak i crtanje . . .

I Computer Modern family of fonts, http://en.wikipedia.org/wiki/Computer_Modern

I moˇze sve da se uradi, ali ponekad previˇse slobode ˇskodi, . . .

Uvod 2 Uvod 3

I LATEX (ili LaTeX), sistem makroa za TEX, http://en.wikipedia.org/wiki/LaTeX

I „a document markup language and document preparation I suˇstinski, lako se uˇci system for the TeX typesetting program“ I zaista daje kvalitetan izgled dokumenata Markup? Lako ´cete nauˇciti html ako znate LAT X! I E I platforme na kojima je implementiran uglavnom free software Leslie Lamport, I I sve ˇsto je potrebno postoji kao free software http://en.wikipedia.org/wiki/Leslie_Lamport, 80’s I a potrebno je: A I LTEX je ono ˇsto se svakodnevno koristi I editor teksta A I ima joˇs „nadogradnji“, LyX I LTEX procesor

I i dalje je sve free software

I i dalje svi dokumenti u ascii formatu, u slobodnom formatu, standardizovanom

Uvod 4, Leslie Lamport Uvod 5, Leslie Lamport

“How LAT X changed the face of Mathematics”, an E-interview I E Even if there were some point to teaching kids such an esoteric with Leslie Lamport, the author of LAT X E system, it couldn’t be done for the same reason that it’s been I Q: Is LATEX hard to use? impossible to raise the level of math and science in this country  I A: It’s easy to useif you’re one of the 2% of the population namely, kids can’t learn from teachers who don’t know the subject who thinks logically and can read an instruction manual. The well, and people who are good in math and science don’t become other 98% of the population would find it very hard or grade-school teachers. impossible to use.

Uvod 6, Leslie Lamport Editori za LATEX

I ima ih raznih, http: //en.wikipedia.org/wiki/Comparison_of_TeX_editors A Q: Three LTEX mistakes that people should stop making? I neki free, neki ne koncentriˇsemo se na free, samo njih ´cemo obraditi A: I moˇze bilo kakav editor, ˇcak i gedit ima context highlighting za 1. Worrying too much about formatting and not enough about I T X, poˇce´cemo sa njim content. E komforniji za rad su specijalizovani editori, nalik na IDE za 2. Worrying too much about formatting and not enough about I programanje content. od specijalizovanih, Texmaker, moj izbor, jako napredovao, 3. Worrying too much about formatting and not enough about I sada se ustalio, gotov proizvod content. I Texmaker je „isti“ i pod win i pod lin (GNU/Linux)

I valja pomenuti i TeXstudio

I pod win je popularan i TeXnicCenter LATEX procesori LATEX procesori

I pod lin TeX Live, uglavnom, ima joˇs . . . I dvi moˇze da se gleda i ˇstampa, http://en.wikipedia.org/ I pod win uglavnom MikTeX... wiki/Device_independent_file_format I prevodi *.tex file u *.dvi ili direktno u *.pdf I malo staromodan, mada radi . . . I pod lin, komandna linija I moˇze da se konvertuje u razne druge formate koriˇs´cenjem free latex software ili I dvips konvertuje dvi u ps latex .tex I dvipdf, dvipdfm, dvipdfmx konvertuju dvi u pdf rezultat .dvi I dvipng konvertuje dvi u gif ili png I za direktno prevodjenje u *.pdf I dvisvg, dvisvgm konvertuju dvi u svg pdflatex I ... ili I pravilo: ˇsto manje konverzija  to bolje pdflatex .tex

LATEX osobine LATEX resursi

I obeleˇzen tekst (markup language) I puno resursa na www, Google your problem I obeleˇzavanjem se oznaˇcava ˇsta sa pojedinim delovima teksta treba raditi, ˇsta je naslov, ˇsta je naslov poglavlja, ˇsta je I http://www.tug.org/ numerisana lista, ˇsta je nenumerisana lista, ˇsta je jednaˇcina . . . I http://www.tug.org/ctan.html

I potrebno poznavati „komande“ I http://www.andy-roberts.net/misc/latex/ A I LTEX „teˇzak“ za „proseˇcnog“ korisnika I http://en.wikibooks.org/wiki/LaTeX

I WYSIWYM I http://upload.wikimedia.org/wikipedia/commons/2/ I WYSIWYG(WYSIAYG) i WYSIWYM konvergiraju? 2d/LaTeX.pdf, pdf verzija, 748 strana

I preambula (header) i (obeleˇzen) tekst

LATEX resursi LATEX resursi

I pod lin sve ve´c imate u repository, dovuˇcete Texmaker i to je I pod win: to?

I http://miktex.org/ I ne bas, ponekad mora joˇs nesto da se dodovuˇce, Synaptic I http://www.ghostscript.com/ ili I bitno je da vam je mreˇza pri ruci ako nemate sredenu maˇsinu http://pages.cs.wisc.edu/~ghost/ I moˇzda I po mom ukusu: http://en.wikibooks.org/wiki/LaTeX, http://pages.cs.wisc.edu/~ghost/gsview/get49.htm 748 strana I neko (ja) viˇsevoli: http://projects.gnome.org/evince/ I po mom ukusu: http://www.ctan.org/tex-archive/ I http://www.texniccenter.org/ info/lshort/english/lshort.pdf, 171 strana I ili (po mom ukusu): http://www.xm1math.net/texmaker/ I ˇcitati uputstvo?

I ako baˇs mora; bolji hands-on approach!

„A sada, svi na svoje radne zadatke!“ primer 1, da poˇcnemo

gedit, View, Highlight Mode, LaTeX Ako ho´cete da imate ikakve koristi od ovog ˇcasa: 1. unosite primere svojeruˇcno gedit p1.tex 2. radite i koncentriˇsite se na to ˇsto radite 3. ako vas mrzi da kucate (!), imate na sajtu primere, kako \documentclass{minimal} source files tako i output files koje treba da dobijete 4. NIKAKO ne radite copy/paste sa pdf, bi´ce problema sa ’ i joˇs \begin{document} nekim specijalnim znacima; kopirajte sa source files 5. zovite kada negde zapnete Prva proba za \LaTeX. 6. ako vas sve ovo mrzi i dosadno vam je, idite. \end{document} procesiranje na komandnoj liniji primer 2, dijakritici

I u direktorijumu ste gde je p1.tex \documentclass{minimal}

I kucate pdflatex p1 (ekstenzija .tex se ovde podrazumeva) \begin{document} I sve je gotovo (ako nema poruka o greˇskama) I pogledate pdf file sa evince p1.pdf Prva proba za \LaTeX. I ovaj prozor moˇzete da ostavite, automatski refresh (pod lin, doduˇse) Staˇ ´cebiti kada se pojave naˇsiznaci?

I ovako ´cemo raditi neko vreme, sticanja navike i stava radi \end{document}

primer 3, dijakritici sa input encoding primer 4, dijakritici bez input encoding

\documentclass{minimal} \documentclass{minimal}

\usepackage[utf8]{inputenc} \begin{document}

\begin{document} Prva proba za \LaTeX. ˇ Prva proba za \LaTeX. Sta ´cebiti kada se pojave naˇsiznaci?

Staˇ ´cebiti kada se pojave naˇsiznaci? Mo\v{z}e ovako: \v{S}ta \’{c}e biti kada se pojave na\v{s}i znaci? \end{document} \end{document}

znaˇcenje Tab i Enter primer 5, sreden input encoding

\documentclass{minimal}

I Tab sluˇzi u formatiranju “source” teksta \usepackage[utf8]{inputenc}

I Tab se u izlazu ne vidi kao n*space \begin{document} I zapravo, ne vidi se uopˇste I jedan Enter je separator kao space Prva proba za \LaTeX. I sluˇzi da se pregledno formatira “source” ˇ I nov paragraf je prazan red, dva Enter Sta ´cebiti kada se pojave naˇsiznaci?

I veoma povoljno u praksi A ostaje i: \v{S}ta \’{c}e biti kada se pojave na\v{s}i znaci?

\end{document} primer 6, specijalni znaci ne rade primer 7, specijalni znaci rade, sreden font encoding

\documentclass{minimal} \documentclass{minimal} \usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \begin{document} \begin{document} Prva proba za \LaTeX. Prva proba za \LaTeX. Staˇ ´cebiti kada se pojave naˇsiznaci? Staˇ ´cebiti kada se pojave naˇsiznaci? A ostaje i: \v{S}ta \’{c}e biti kada se pojave A ostaje i: \v{S}ta \’{c}e biti kada se pojave na\v{s}i znaci? na\v{s}i znaci? A kada dodamo specijalne znake poput < i > ? A kada dodamo specijalne znake poput < i > ? \end{document} \end{document} jedna posredna konverzija, za primer ovo se moˇze automatizovati

gedit napravi

#! /bin/sh latex p7 latex $1 ls p7.dvi dvips $1 dvips p7 ps2pdf $1.ps ls p7.ps evince $1.pdf ps2pdf p7.ps ls p7.pdf file napravi evince p7.pdf chmod u+x napravi ls napravi moˇze i evince p7.ps kao i evince p7.dvi ./napravi p7 PATH=$PATH:$PWD napravi p7

Texmaker primer 8, ћирилица у проблему

\documentclass{minimal}

I od sada idemo u prijatnije okruˇzenje, Texmaker \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} I pogledati Tools

I PDFLaTeX je F6 \begin{document}

I View PDF je F7 Prva proba za \LaTeX.

I LaTeX je F2 Staˇ ´cebiti kada se pojave naˇsiznaci? I Dvi -> PS je F4 A ostaje i: \v{S}ta \’{c}e biti kada se pojave I PS -> PDF je F8 na\v{s}i znaci?

I Dvi -> PDF je F9 A kada dodamo specijalne znake poput < i > ?

I context highlighting, check, . . . А како иде са ћирилицом?

\end{document}

primer 9, ћирилица primer 10, package datetime, today

\documentclass{minimal} \documentclass{minimal} \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} \begin{document} \usepackage{datetime}

Prva proba za \LaTeX. \begin{document}

Staˇ ´cebiti kada se pojave naˇsiznaci? Ilustracija za packages:

Ostaje i: \v{S}ta \’{c}e biti kada se pojave na\v{s}i znaci? \bigskip

A kada dodamo specijalne znake poput < i > ? Данас jе \today.

А како иде са ћирилицом? \end{document}

\end{document}

primer 11, package babel primer 12, specijalni znaci

\documentclass{minimal} \begin{document}

\usepackage[utf8]{inputenc} А шта да радимо са специjалним знацима? \usepackage[T1, T2A]{fontenc} \usepackage[serbian]{babel} \bigskip

\usepackage{datetime} % ovo je komentar, ne´cese videti u dokumentu

\begin{document} ako treba u tekstu \% on se piˇsekao \textbackslash\%.

Ilustracija za packages, sada je dodat babel, serbian: можда вам затреба \textasciitilde % za ~

\bigskip а можда и витичасте заграде \{ и \}

Данас jе \today. ima toga joˇs:\$ \_ \& \pounds{} \copyright{} \textless{} \textbar{} \textgreater{} \end{document} \end{document} primer 13, okruˇzenje verbatim primer 14, noindent

\documentclass{minimal} \begin{document} \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} Jош мало форматирања. Обрадили смо \verb+\bigskip+. \usepackage[serbian]{babel} Da vidimo ˇstaradi \verb|\noindent|. \begin{document} \bigskip Дођосмо до окружења. Прво радим окружење \verb-verbatim- \noindent Ima \verb|\noindent|. \begin{verbatim} Nema \verb|\noindent|. Ovde moˇzetekucati ˇstagod ho´cete. И како год хоћете. \noindent Ништа се не форматира. Ima \verb|\noindent|. Слободно куцате \ ~ { }, нема никакво значење. Nema \verb|\noindent|. \end{verbatim} \end{document} \end{document} primer 15, itemize u problemu primer 16, itemize

\documentclass{minimal} \documentclass{article}

\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} \usepackage[T1, T2A]{fontenc} \usepackage[serbian]{babel} \usepackage[serbian]{babel}

\begin{document} \begin{document}

Jош мало окружења (environments). Листе су следећа тема. Jош мало окружења (environments). Листе су следећа тема.

\begin{itemize} \begin{itemize} \item prva taˇcka \item prva taˇcka \item druga taˇcka \item druga taˇcka \item tre´cataˇcka \item tre´cataˇcka \end{itemize} \end{itemize}

Ovo baˇsi ne´cevaljati. Ovo ´cevaljati.

\end{document} \end{document}

primer 17, enumerate primer 18, veliˇcina slova

\documentclass{article} \documentclass{article} \usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} \usepackage[T1, T2A]{fontenc} \usepackage[serbian]{babel} \begin{document}

\begin{document} \noindent А сада мало играња са величином слова:

Jош мало окружења (environments). \Huge \noindent Ali ovo ho´ce!\\ Нумерисане листе су следећа тема. \huge Ali ovo ho´ce!\\ \LARGE Ali ovo ho´ce!\\ \begin{enumerate} \Large Ali ovo ho´ce!\\ \item prva taˇcka \large Ali ovo ho´ce!\\ \item druga taˇcka \normalsize Ali ovo ho´ce!\\ \item tre´cataˇcka \small Ali ovo ho´ce!\\ \end{enumerate} \footnotesize Ali ovo ho´ce!\\ \scriptsize Ali ovo ho´ce!\\ \end{document} \tiny Ali ovo ho´ce!

\end{document} primer 19, margine i prazna strana primer 20, kvazitabela

\begin{document} % margine na 2cm na a4 i da uklonimo broj strane \thispagestyle{empty} \documentclass[a4paper,12pt]{article} \noindent А сада jедна табела: \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} \noindent \usepackage[margin=2cm]{geometry} \Huge \verb|\Huge| \\ \huge \verb|\huge| \\ \begin{document} \LARGE \verb|\LARGE| \\ \Large \verb|\Large| \\ \pagestyle{empty} % ima i \thispagestyle{empty} \large \verb|\large| \\ \normalsize \verb|\normalsize| \\ \Huge \noindent Ali ovo ho´ce!\\ \small \verb|\small| \\ \normalsize Ali ovo ho´ce!\\ \footnotesize \verb|\footnotesize| \\ \tiny Ali ovo ho´ce! \scriptsize \verb|\scriptsize| \\ \tiny \verb|\tiny| \\ \end{document} \end{document} primer 21: joˇs malo o fontovima i pravim tabelama primer 22: gore, dole, levo, desno

\begin{document} \documentclass[a4paper,12pt]{article} \begin{tabular}{|l|l|} \hline \usepackage[utf8]{inputenc} команда & ефекат \\ \usepackage[T1, T2A]{fontenc} \hline \usepackage[margin=1cm]{geometry} \verb|\textnormal| & \textnormal{Jош мало о фонтовима (typefaces).} \\ \verb|\textit| & \textit{Jош мало о фонтовима (typefaces).} \\ \begin{document} \verb|\underline| & \underline{Jош мало о фонтовима (typefaces).} \\ \verb|\textbf| & \textbf{Jош мало о фонтовима (typefaces).} \\ \thispagestyle{empty} \verb|\emph| & \emph{Jош мало о фонтовима (typefaces).} \\ \verb|\textrm| & \textrm{Jош мало о фонтовима (typefaces).} \\ горе лево \hfill горе десно \verb|\textsf| & \textsf{Jош мало о фонтовима (typefaces).} \\ \verb|\textsc| & \textsc{Jош мало о фонтовима (typefaces).} \\ \vfill \verb|\textsl| & \textsl{Jош мало о фонтовима (typefaces).} \\ \verb|\texttt| & \texttt{Jош мало о фонтовима (typefaces).} \\ доле лево \hfill доле десно \hline \end{tabular} \end{document}

\end{document} poˇcetak, zagrevanje

I update LATEX I install PyXPlot, ako nije ve´c instaliran  II deo  I install PyX i dokumentaciju za njega I obavezno instalirati i gv

I probajte pyxplot sa komandne linije

I plot sin(x)

I dalje ´cete se sna´ci sami . . .

I save as slika.eps

I epstopdf slika.eps

Struktura dokumenta, WYSIWYM primer a, struktura dokumenta, 1

\documentclass[a4paper,12pt]{article} I zavisi od tipa dokumenta \usepackage[utf8]{inputenc} I za article: \usepackage[T1, T2A]{fontenc} \section{...} \usepackage[serbian]{babel} \subsection{...} \usepackage{datetime} \subsubsection{...} \usepackage[bottom=3cm,top=3cm,left=3cm,right=2cm]{geometry} \paragraph{...} \subparagraph{...} \title{Primer jednog struktuiranog dokumenta} \author{Predrag Pejovi´c} \date{\today}

primer a, struktura dokumenta, 2 primer a, struktura dokumenta, 3

\begin{document} \section{Centralni deo 1}

\maketitle Ovde ilustrujemo subsections.

\section*{Abstract} \subsection{Prvi pododeljak} Ovo je samo primer za odeljak koji nije numerisan, \\ Kao ˇstorekoh, prvi pododeljak. * znaˇcida se ne numeriˇse. \subsection{Drugi pododeljak} \section{Uvod} Kao ˇstorekoh, drugi pododeljak.

U uvodu se piˇseˇstase radi i zaˇsto. \section{Centralni deo 2} Vaˇzandeo uvoda je i pregled postoje´cihrezultata, to pomaˇzeda se objasni zaˇstose neˇstoradi. Nastavljamo sa izlaganjem \ldots

primer a, struktura dokumenta, 4 Staˇ je cilj primera?

I kako se automatski pravi naslov \section{Zakljuˇcak} I boldujte naslov, \textbf{...}, radi

U zakljuˇckuse rezimira ˇstaje uradeno i kako. I obrisite datum, \date{} Poneko voli i da kaˇzeˇstabi joˇsmoglo da se uradi. I struktura dokumenta, numerisanje odeljaka

\section*{Literatura} I preglednost dokumenta, bilo gde nov red

Ovaj odeljak se obiˇcnone numeriˇse, I prazan red znaˇci nov paragraf ali referenciranje je baˇsduga priˇca. I nov red sa \newline ili \\, bilo ranije

\end{document} I podelite dokument po stranama sa \newpage i/ili \clearpage I vertical space, \vspace{...} primer b, doterivanje naslova primer b, brisanje broja strane

moˇze (prva strana ili bilo koja specifiˇcna strana)

\thispagestyle{empty} \title{\LARGE \textbf{Primer jednog struktuiranog dokumenta}} ˇsto je vaˇzno kada automatski generiˇse naslov \author{\textsl{Predrag Pejovi´c}} \date{} i/ili

\pagestyle{empty}

kad prode naslov, odnosi se na strane osim prve

primer b, table of contents primer b, dodavanje items u table of contents

iza naslova: \newpage \vspace{3cm} \tableofcontents \section*{Literatura} \newpage \addcontentsline{toc}{section}{Literatura} nenumerisani items nisu u table of contents!

primer c, joˇs malo environments, 1 primer d, joˇs malo environments, 2

\begin{document} \begin{document} \begin{Huge} \begin{center} \begin{flushleft} Ovde su centrirana velika slova. Ovaj environment (okruˇzenje)ukida poravnavanje \end{center} desne ivice, a to je ponekad potrebno. \end{Huge} Primer su US patenti u postupku i neki pravni dokumenti za koje se veruje da su ˇcitljiviji \begin{flushright} ako se ne poravnava desna ivica, mada manje ovde su normalna slova, \\ lepo izgledaju. O ukusima ne vredi raspravljati, ali je sve poravnato \\ a u osnovi je sasvim svejedno. na desnu stranu \end{flushleft} \end{flushright} \end{document} \end{document}

primer e, joˇs malo environments, 3 primer f, malo o razmacima

\documentclass[12pt, a4paper]{article}

\usepackage[utf8]{inputenc} \begin{document} \usepackage[T1, T2A]{fontenc}

\begin{description} \begin{document} \item[Prvi] je onaj koji dolazi pre drugog Mi smo na ETF. Nismo na ETH. \item[Drugi] je onaj koji dolazi posle prvog \item[Tre´ci]je u ovom sluˇcajuposlednji Mi smo na ETF\@. Nismo na ETH. % dodaje razmak \end{description} \bigskip

\end{document} Ono je Prof. Davi´c.

Ono je Prof.\ Davi´c.% smanjuje razmak

\end{document} primer g, joˇs malo o razmacima primer h, jednaˇcine, stilovi i subscript

\documentclass[12pt, a4paper]{article} \usepackage[utf8]{inputenc} \begin{document} \usepackage[T1, T2A]{fontenc} Numerisana jednaˇcina: \begin{document} \frenchspacing \begin{equation} i_{123} = i_1 + i_{2} + i_3 Mi smo na ETF. Nismo na ETH. \end{equation}

Mi smo na ETF\@. Nismo na ETH. \[ i_{123} = i_1 + i_{2} + i_3 \]

\bigskip a moˇzebiti i u tekstu $i_{123} = i_1 + i_{2} + i_3$

Ono je Prof. Davi´c. moˇzei ovako $$ i_{123} = i_1 + i_{2} + i_3 $$ mada nije po standardu! Ono je Prof.\ Davi´c. \end{document} \end{document}

primer h, jednaˇcine, superscript i grˇcka slova primer h, oznaˇcavanje objekata

Neka je \begin{equation}\label{prva} Leonard Ojler je mnogo voleo jednaˇcinu e^{i \pi} + 1 =0 \end{equation} \[ e^{i \pi} + 1 = 0 \] Mi bi to pisali \begin{equation}\label{druga} \noindent e^{j \pi} + 1 =0 Grˇckaslova su: $\alpha, \beta, \gamma, \delta, \end{equation} \ldots \omega$. Sada se treba pozivati na jednаˇcinu(\ref{prva}) i Velika grˇckaslova su: $\Gamma, \Delta, \ldots \Omega$. jednaˇcinu(\ref{druga}). Svaki pristojan quick reference ima tabelu. Ve´cinaeditora, takode. Dobra praksa je da se u \label piˇse i tip objekta, da se ne pojave slika, tabela i/ili jednaˇcina sa istim imenom. Primer: \label{eq:prva}

Sredivanje referenci zahteva dva prolaza kompajlera, pokrenete ga dva puta za redom.

primer h, korenje i razlomci primer h, integrali, razmaci i sume

Gustina verovatno´ce: $\int_{-\infty}^{\infty}{p(x) \, dx} = 1$. Korenje: $\sqrt{9}=3$, $\sqrt[3]{8}=2$. Ili \[ \int_{-\infty}^{\infty}{p(x) \, dx} = 1 \].

\bigskip Razmaci: $ab$ Razlomci: $\frac{1}{2}$, $\displaystyle \frac{1}{2}$, $\frac{a}{b}$, $\frac{a+c}{b}$, moˇzei $1/2$, a moˇzei $a \, b$

$a \: b$ \[ \frac{1}{2} \] $a \; b$ \[ \frac{a+b}{c} \] $a \! b$

Jedno sumiranje: $\sum_{k=1}^{n}{k} = \frac{n (n+1)}{2}$. Ili Pogledajte package amsmath: \dfrac{}{} i \tfrac{}{}. \[ \sum_{k=1}^{n}{k} = \frac{n (n+1)}{2} \]

primer h, o zagradama primer h, funkcije, operatori

\noindent Funkcije se piˇsu u plain fontu (ima i priˇca oko razmaka), dosta ih je Malo o zagradama: uneto i poˇcinju sa\. Neke nisu (npr. sgn)! Mogu se dodefinisati, \[ (\frac{a}{b}) \] package amsmath, \operatorname. \[ \left( \frac{a}{b} \right) \] \[ \big( \frac{a}{b} \big) \] \[ \sin(x+y)=\sin(x) \, \cos(y)+\cos(x) \, \sin(y) \] \[ \Big( \frac{a}{b} \Big) \] \[ \sin^2 x + \cos^2 x = 1 \] \[ \bigg( \frac{a}{b} \bigg) \] \[ \cosh^2 x - \sinh^2 x = 1 \] \[ \Bigg( \frac{a}{b} \Bigg) \] \[ x \, \operatorname{sgn} (x) = |x| \] I joˇsmalo: \[ \operatorname{h}(x)=1, \quad \text{if} \; x > 0 \] \[ \left| x + j y \right| = \sqrt{x^2+y^2} \] \[ \operatorname{h}(x)=0, \quad \text{if} \; x < 0 \] I joˇsmalo: \[ k \in \left\{1, 2, \ldots n \right\} \] primer h, jednaˇcine sa matricama primer h, jedinice mere, plain font, amsmath package, text \usepackage[greek, serbian]{babel}

\noindent Jedinice mere se piˇsu u plain fontu, \\ Matrice u jednaˇcinama: razmaknute od ,,brojne vrednosti‘‘.

\[ \operatorname{h}(x) = \left\{ \[ E = 10 \mbox{ V} \] \begin{array}{lll} \[ E=10 \text{ V} \] % daje potpuno isti output 0, & \text{if} & x < 0 \\ ispravno je: \frac{1}{2}, & \text{if} & x=0 \\ \[ E = 10 \, \text{V} \] 1, & \text{if} & x>0 \end{array} \right. \] \[ C = 100 \, \mbox{\textgreek{m}}\text{F} \] \[ t_0 = 1\,\text{\textgreek{m}s} \] % Ovde ima problema sa grˇckimslovima, mnogi rade: % \[ C=100 \, \mu\text{F} \] % namerno je oko = ovako \[ t_0= 1 \, \mu\text{s} \] % namerno je oko = ovako primer h, matrice

Matrice: \[ \det \begin{bmatrix} a & b \\ c & d \\ \end{bmatrix} = a d - b c \]

Pogledajte joˇs i okruˇzenja: matrix i pmatrix. priprema slika

I vektorskai rasterska grafika, Wikipedia

I za crteˇze prednost ima vektorska grafika A LTEX I formati od interesa dvi, ps, eps (za latex) i pdf (za pdflatex)  III deo  I od znaˇcaja joˇs i png i jpg, mogu da se importuju u pdflatex

+ XCircuit I konverzija programima dvips, ps2eps, ps2pdf, pstopdf i + some scripting epstopdf, a ima i joˇs I nekih od ovih programa mozda nema instaliranih na sistemu, instalirati I od znaˇcaja:

I epstopdf, konverzija eps slika u pdf I pdfcrop, obrezivanje pdf slika I pdffonts, prikazivanje fontova koji se koriste u dokumentu i njihovog statusa (embedded ili ne) I convert, konverzija formata slike

I pogledajte man za gornje programe

joˇs malo o grafiˇckim formatima . . . sin in pyxplot, po ko zna koji put, ako ve´c nemate sliku . . .

I https: //en.wikipedia.org/wiki/Comparison_of_graphics_file_formats I https://en.wikipedia.org/wiki/Device_independent_file_format I komandna linija I https://en.wikipedia.org/wiki/PostScript I pyxplot

I https://en.wikipedia.org/wiki/Encapsulated_PostScript I plot sin(x) https://en.wikipedia.org/wiki/Portable_Document_Format I I otvori vam se program gv, zato je bio potreban I https://en.wikipedia.org/wiki/JPEG I nije baˇs neki lep program, ali lepo radi I https://en.wikipedia.org/wiki/Portable_Network_Graphics I save sliku kao sin.eps I https://en.wikipedia.org/wiki/GIF I sna´ci ´cete se ve´c . . . I https://en.wikipedia.org/wiki/Scalable_Vector_Graphics I bitno je da imamo sin.eps I sa gubicima (jpg), manji file, jaˇca kompresija! I bez gubitaka (png, gif) I proprietary versus free

slike i konverzije primer, unoˇsenje slika, pdflatex

\documentclass[12pt,a4paper]{article} I napravili sin.eps \usepackage{graphicx} % package za unosenje slika I probajte ps2pdf sin.eps \usepackage[utf8]{inputenc} I pogledate sa evince sin.pdf \usepackage[T1,T2A]{fontenc} \usepackage[serbian]{babel} I baˇs ruˇzno!

I da probamo pdfcrop sin.pdf \begin{document}

I evince sin-crop.pdf Ovde ´cemoubaciti jednu sliku, sliku \ref{slika:sinus}. I neˇsto je uradeno, ali ne valja, nema ticks rm sin.pdf \begin{figure}[h!] I \centering I epstopdf sin.eps \includegraphics{sin.pdf} evince sin.pdf I \caption{Funkcija $\sin \left( x \right)$} I to je to \label{slika:sinus} \end{figure} I pokuˇsaji nisu bili besmisleni, vide´cete smisao kod ˇsema \end{document} komande za procesiranje i formati slika primer, unoˇsenje slika, latex

\documentclass[12pt,a4paper]{article} F6, ⇔ pdflatex I \usepackage{graphicx} % package za unosenje slika I F7, display pdf \usepackage[utf8]{inputenc} prvi prolaz, , joˇs nije pohvatao refs \usepackage[T1,T2A]{fontenc} I ?? \usepackage[serbian]{babel} I drugi prolaz, sada je sve ok, slika ispravno numerisana \begin{document} I F2, tex → dvi, ⇔ latex

I F4, dvi → ps, ⇔ dvips Ovde ´cemoubaciti jednu sliku, sliku \ref{slika:sinus}.

I F8, ps → pdf, ⇔ ps2pdf \begin{figure}[h!] I F7, display pdf \centering \includegraphics{sin.eps} I latex “handle” samo ps i eps slike, konvertorvati

I pdflatex “handle” pdf, png, jpg i gif, ne ps/eps \caption{Funkcija $\sin \left( x \right)$} \label{slika:sinus} I probati \end{figure}

\end{document} primer, unoˇsenje slika, scaling primer, unoˇsenje slika, rotate

\documentclass[12pt,a4paper]{article} \documentclass[12pt,a4paper]{article}

\usepackage{graphicx} % package za unosenje slika \usepackage{graphicx} % package za unosenje slika \usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc} \usepackage[T1,T2A]{fontenc} \usepackage[T1,T2A]{fontenc} \usepackage[serbian]{babel} \usepackage[serbian]{babel}

\begin{document} \begin{document}

Ovde ´cemoubaciti jednu sliku, sliku \ref{slika:sinus}. Ovde ´cemoubaciti jednu sliku, sliku \ref{slika:sinus}.

\begin{figure}[h!] \begin{figure}[h!] \centering \centering \includegraphics[scale=1.5]{sin.pdf} \includegraphics[angle=90, scale=1.5]{sin.pdf}

\caption{Funkcija $\sin \left( x \right)$} \caption{Funkcija $\sin \left( x \right)$} \label{slika:sinus} \label{slika:sinus} \end{figure} \end{figure}

\end{document} \end{document} primer, unoˇsenje slika, position primer, unoˇsenje tabela

\documentclass[12pt,a4paper]{article}

\usepackage{graphicx} % package za unosenje slika Ovde smo ubacili tabelu \ref{tabela:ime}. \usepackage[utf8]{inputenc} \usepackage[T1,T2A]{fontenc} \begin{table}[h!] \usepackage[serbian]{babel} \centering \caption{Primer jedne tabele} % ispod slike, iznad tabele \begin{document} \begin{tabular}{|c|cc|} Ovde ´cemoubaciti jednu sliku, sliku \ref{slika:sinus}. \hline a & b & c \\ \begin{figure} % [h!] % [h] % [t] %[t!] % [b!] % [b] \hline \hline \centering d & e & f \\ \includegraphics[scale=1.5]{sin.pdf} \hline \end{tabular} \caption{Funkcija $\sin \left( x \right)$} \label{tabela:ime} \label{slika:sinus} \end{table} \end{figure}

\end{document} primer, unoˇsenje tabela, centriranje primer, unoˇsenje tabela, phantoms

Ovde smo ubacili tabelu \ref{tabela:ime}. Ovde smo ubacili tabelu \ref{tabela:ime}.

\begin{table}[h!] \begin{table}[h!] \centering \centering \caption{Primer jedne tabele} % ispod slike, iznad tabele \caption{Primer jedne prazne tabele} % caption ide ispod slike, iznad tabele \begin{tabular}{r|c|l} \hline \begin{tabular}{|l|l|l|} a & b & c \\ \hline \hline \phantom{XXXXX} & \phantom{XXXXX} & \phantom{XXXXX}\\ ddddd & eeeee & fffff \\ \hline \hline & \vphantom{\Huge{X}} & \\ \end{tabular} \hline \label{tabela:ime} \end{tabular} \end{table} \label{tabela:ime} \end{table}

table tricks XCircuit

I program za crtanje elektriˇcnih ˇsema

I dominantan gde je od znaˇcaja izgled

I moˇze da crta i lakˇse tehniˇcke crteˇze

I malo neobiˇcan interface I joˇs mnogo toga se moˇze uraditi sa tabelama I malo neobiˇcna instalacija, synaptic potreban I korisno: http://nepsweb.co.uk/docs/tableTricks.pdf I pravi PostScript files i sve radi na tom nivou I nije loˇse imati gornji pdf kod sebe, 16 strana samo I konvrzija u pdf sa epstopdf, I pitanja stila, obratite paˇznju, kod nas sve tabele kao reˇsetke, fajl koji pravi XCircuit je .eps iako je ekstenzija .ps pogledajte ˇsta drugi rade, ˇcesto samo tanke horizontalne linije I postoji i ps2pdf, razlike . . . I mogu´ce je uneti i LATEX lettering I pokre´ce se iz komandne linije sa xcircuit

I manual: http://opencircuitdesign.com/xcircuit/

I mora da se pokaˇze, da probate, nezgodno za opis reˇcima, . . .

I radimo primer zajedno, posle vi sami, ja pomaˇzem! zadatak: nacrtati i importovati u pdflatex LATEX lettering, nacrtati i importovati u pdflatex

+VCC +VCC

R R 2 C R R CC 2 C CC v OUT v CB OUT CB Q Q ROUT + ROUT − vIN + − vIN

R1 RE CE R1 RE CE

ime fajla: ce1.ps, convert to ce1.pdf, epstopdf ce1.ps container file, ce2.tex procesiranje, varijanta 1

\documentclass[a4paper,12pt]{article} latex ce2 \usepackage{graphicx} I I dvips ce2

\usepackage[margin=1cm]{geometry} I ps2eps -l -f ce2.ps -l je za loose format, 1 pt margine, \pagestyle{empty} -f je za force za overwrite

I ovde stajete ako koristite latex; \begin{document} za pdflatex: epstopdf ce2.eps

I evince ce2.pdf ili evince ce2.eps \input{ce2-raw.tex}

\end{document}

procesiranje, varijanta 2 procesiranje, script 1

I latex ce2 napravite mf.sh I dvips ce2 # figure I do sada je isto kao pre, imamo ps file na celoj strani; latex $1 sada pocinju razlike zato da napravimo copy: dvips $1 cp ce2.ps ce2-alt.ps ps2eps -l -f $1.ps I ps2pdf ce2-alt.ps, pogledajte pdf epstopdf $1.eps I pdfcrop ce2-alt

I evince ce2-alt-crop.pdf sh mf.sh ce2

generic container file, genfig.tex procesiranje, script 2

\documentclass[a4paper,12pt]{article} napravite genmf.sh \usepackage{graphicx} # make figure, generic cp genfig.tex $1.tex \usepackage[margin=1cm]{geometry} latex $1 dvips $1 \pagestyle{empty} ps2eps -l -f $1.ps epstopdf $1.eps \begin{document} sh genmf.sh ce2 \input{\jobname-raw.tex} sh genmf.sh proba \end{document} procesiranje, script 3 procesiranje, script 4

napravite gmf.sh, preglednost i estetika, primena \ napravite genmf1.sh, druga linija nema prekid, ima samo dve linije! # make figure, generic # make figure, generic cp genfig.tex $1.tex \ cp genfig.tex $1.tex && latex $1 && dvips $1 && && latex $1 \ ps2eps -l -f $1.ps && epstopdf $1.eps && dvips $1 \ && ps2eps -l -f $1.ps \ sh genmf1.sh ce2 && epstopdf $1.eps sh genmf1.sh proba sh gmf.sh ce2 sh gmf.sh proba

procesiranje, script 5 napravite gmfc.sh, ˇciˇs´cenje za sobom

# make figure, cleanup cp genfig.tex $1.tex \ && latex $1 \ && dvips $1 \ && rm $1.tex \ && rm $1.dvi \ && rm $1.aux \ && rm $1.log \ && ps2eps -l -f $1.ps \ && rm $1.ps \ && epstopdf $1.eps \ && rm $1.eps

sh gmfc.sh ce2 sh gmfc.sh proba Referenciranje?

I pozivanje na prethodne publikacije, vaˇzno! LATEX I praktiˇcno standardizovan format  IV deo  I najˇceˇs´ce se lista referenci ureduje po redosledu pozivanja Referenciranje i Beamer I poziv na referencu je broj u uglastoj zagradi, npr. [1] I u posebnom odeljku (section) „Literatura“ (“References”) mora biti navedeno ˇsta je [1]

I potrebno je navesti sve podatke kako bi citirana referenca mogla biti jednoznaˇcno odredena

I ˇcesto ˇcasopisi specificiraju strog format reference

I poseban format za knjige, radove u ˇcasopisima i radove na konferencijama

Referenciranje u LATEX-u standardna preambula

\documentclass[a4paper,12pt]{article}

\usepackage[T1, T2A]{fontenc} \usepackage[utf8]{inputenc} I LATEX ima sistem za automatsko numerisanje referenci, izuzetno vaˇzno u praksi, omogu´cava lake izmene dokumenta \usepackage[serbian]{babel} baza referenci vaˇzna stvar, LAT X ima nekoliko naˇcina za unos I E \usepackage{graphicx} referenci; ovde samo najjednostavniji \usepackage{amsmath} I za pravljenje baze referenci pogledajte package BibTeX, jako \usepackage{xcolor} korisno ako piˇsete neki ve´ci rad \usepackage[margin=2cm]{geometry}

\title{Referenciranje} \author{Predrag Pejovi´c} \date{\today}

tekst reference

\begin{thebibliography}{[X]}

\begin{document} \bibitem{ND} M.~Depenbrock, C.~Niermann, \maketitle ‘‘A new 12-pulse rectifier with line-side interphase transformer \section{Uvod} and nearly sinusoidal line currents,’’ \emph{Proceedings of the Power Electronics and Motion Control Conference}, Ovde ´cucitirati \cite{ND}. Budapest, 1990, pp.~374--378.

\section{Zakljuˇcak} \bibitem{rr} Ovo je referenca reda radi. Ovde citiram referencu reda radi, \cite{rr}. \end{thebibliography}

\end{document}

detalji, dashes A sada neˇsto vaˇzno . . .

I http://en.wikipedia.org/wiki/Dash

I “hyphen”, -, push-pull

I “en-dash”, --, pp. 17–45 I “em-dash”, ---, IEEE Transactions on Circuits and Beamer SystemsFundamental Theory and Applications

I “minus”, $-$, 3 − 2 = 1

I da ih uporedimo: -, –, , −

I vidite li razlike? beamer, uvod 1 beamer, resursi

I user guide, 249 strana, joˇs jedna klasa dokumenata za LAT X I E http://www.ctan.org/tex-archive/macros/latex/ I popularan za pravljenje prezentacija contrib/beamer/doc/beameruserguide.pdf

I rezultat je pdf file I primeri (jako vaˇzno!) http://www.informatik. I nema niˇsta od proprietary formata uni-freiburg.de/~frank/ENG/latex-course/

I po svemu sude´ci pdf ´ce dugo mo´ci da se ˇcita, recycle stare latex-course-3/latex-course-3_en.html prezentacije, . . . I preporuˇcujem: http:

I Berkeley, EPFL, . . . //www.tug.org/pracjourn/2005-4/mertz/mertz.pdf, 17 strana I na „nemaˇckom“ je projektor beamer I Q: Kako to obiˇcno funkcioniˇse? I nije jedino reˇsenje, ali ubedljivo najzastupljenije I A: Primer koji vam se dopada dovuˇcete i modifikujete.

beamer, ciljevi beamer, header

I osnovna prezentacija, frame (128mm x 96mm)

I dinamika prezentacije (pause, onslide)

I liste (itemized i enumerated)

I jednaˇcine I ne treba graphicx I slike I ne treba xcolor, color, . . . I boje

I dve kolone

I handouts

I „teme“

I nema previˇse alata za sakrivanje nedostatka sadrˇzaja u prezentaciji

beamer, tipiˇcan header beamer, naslov, prvi slajd, doradiva´cemo

\documentclass{beamer}

% poˇcetak:moˇze,ali ne mora \begin{document} \usetheme{default} % {Copenhagen} {Goettingen} \setbeamercovered{transparent} % ovo je vaˇzno za dinamiku \usecolortheme{default} % {seahorse}{rose}{wolverine}{infolines} \begin{frame} % kraj: moˇze,ali ne mora \titlepage \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} \usepackage[serbian]{babel} \end{frame}

\usepackage{datetime} \end{document}

\title[prezentacija]{\huge prezentacija} \date{\today}

dinamika obiˇcnog teksta sloˇzena dinamika

\section{dinamika obiˇcnogteksta}

\begin{frame}{jednostavna dinamika} \begin{frame}{sloˇzenadinamika}

\pause \onslide<2->{prva}\\ prva \\ \onslide<3-3>{druga}\\ \pause \onslide<2-2>{opet prva, kratko}\\ druga \\ \onslide<4->{tre´ca}\\ \pause tre´ca \end{frame}

\end{frame} itemized list hide-unhide

\section{itemized list} % nece se odmah videti \begin{frame}{hide-unhide} \begin{frame}{nabrajanje} \begin{itemize} \begin{itemize} \item <2-2> prva stavka \item <2-> prva stavka \item <3-3> druga stavka \item <3-> druga stavka \item <4-4> tre´castavka \item <4-> tre´castavka \end{itemize} \item <2-> joˇsjedna prva stavka \end{itemize} \end{frame}

\end{frame}

za lenje numerisane liste

\section{enumerated list i jednaˇcine} \begin{frame}{za lenje} \begin{frame}{numerisana lista} \begin{itemize} \item <+-> jedan \begin{enumerate} \item <+-> dva \item <2-> prvi \item <+-> tri \item <3-> drugi \end{itemize} \item <4-> tre´ci \end{enumerate} \end{frame} \end{frame}

progresivno boldovanje jednaˇcine

begin{frame}{malo matematike}

Pitagorina teorema glasi \begin{frame}{progresivno boldovanje} \pause \begin{enumerate} \item \textbf<2->{prvi} \bigskip \item \textbf<3->{drugi} \item \textbf<4->{tre´ci} $c^2 = a^2 + b^2$ \end{enumerate} \bigskip \end{frame} \pause

znate li dokaz?

\end{frame} potpuno sakrivanje detour: da napravimo sliku, ipython

\begin{frame}{malo matematike, Pitagorin stil} komandna linija, terminal:

\setbeamercovered{invisible} Pitagorina teorema glasi ipython --pylab dm = 360 \pause deg = linspace(- dm, dm, 2 * dm + 1) \bigskip x = radians(deg - 45) y = cos(x) $c^2 = a^2 + b^2$ plot(x, y) \bigskip xlim(- 2 * pi, 2 * pi) \pause ylim(- 1.5, 1.5) xlabel(’x’) znate li dokaz? ylabel(’y’) \setbeamercovered{dynamic} % ili {transparent}

\end{frame} save, slika.png ubacivanje slike sakrivanje slike

\section{mogu slike}

\begin{frame}{slika} \begin{frame}{slika}

\pause \setbeamercovered{invisible}

ˇcestoje potrebno ubaciti neku sliku, npr. png sliku \onslide<2->{ˇcestoje potrebno ubaciti neku sliku}

\pause \onslide<3->{\includegraphics[scale=0.3]{slika.png}}

\includegraphics[scale=0.35]{slika.png} \onslide<4->{ˇstoje odavno poznata funkcija}

\pause \setbeamercovered{dynamic}

ˇstoje odavno poznata funkcija \end{frame}

\end{frame}

bojena slova bojena podloga

\section{boje}

\begin{frame}{bojena slova} \beamertemplatesolidbackgroundcolor{teal!20} \begin{Large} \textcolor{red}{crvena} \\ \begin{frame}{\textcolor{teal}{bojena pozadina}} \pause \textcolor{blue}{plava} \\ \begin{Huge} \pause \textcolor{teal}{sa tamnim slovima} \textcolor{cyan}{kako se ova zove?} \\ \pause \end{Huge} \textcolor{magenta}{a ova?} \\ \pause \end{frame} \textcolor{yellow}{ˇzuta} \\ \pause \textcolor{green}{zelena} \\ \beamertemplatesolidbackgroundcolor{white} \end{Large}

\end{frame}

u dve kolone handouts

\section{dve kolone}

\begin{frame}{dve kolone} \documentclass[handout]{beamer}

\begin{columns}[l] reˇsava posao, ali krupno \column{5cm} \onslide <2-> gore levo \\ \usepackage{pgfpages} \pgfpagesuselayout{2 on 1}[a4paper, border shrink=5mm] \onslide <3-> dole levo \\ \pgfpagesuselayout{4 on 1}[a4paper, landscape, border shrink=5mm] \pgfpagesuselayout{8 on 1}[a4paper, border shrink=2mm]} \column{5cm} \onslide <4-> gore desno \\ ima joˇs puno toga, odliˇcni web resursi! \onslide <5-> dole desno \\ \end{columns}

\end{frame}

teme

I „teme“, stilovi, . . .

I tema default na Goettingen

I sections sada dobijaju smisao

I tema na Copenhagen

I zaˇsto li je ovo popularno?

I moˇzete se igrati sa colortheme

I primeri: http://www.informatik.uni-freiburg.de/ ~frank/ENG/latex-course/latex-course-3/ latex-course-3_en.html

I vodite raˇcuna o vremenu!

I ovo ´ce biti deo (20%) drugog kolokvijuma! Numerical Computation

GNU Octave I vrlo često u tehnici I retko stvarni problemi imaju closed-form solution

I čak i kad imaju, pitanje upotrebljivosti

I mnogo detalja — numerički pristup

I u početku tretirano kao numerologija . . .

I kolika je „saznajna vrednost” nekog rešenja i kako se meri?

Numerical Computation, Tools #1: Matlab Numerical Computation, Tools #2: GNU Octave

I diminira(o) Matlab I Wikipedia, http://en.wikipedia.org/wiki/Comparison_ of_numerical_analysis_software, 02.12.2017: I GNU Octave I “Numerical computation and simulation with extended 2D/3D visualization.” I “General numerical computing package with lots of extension modules. Syntax mostly compatible with MATLAB” I “Proprietary” I “GPL” I 2014: “$2150 (commercial) / $99 (student)” I “Free” I 2014: $300 manje nego pre tri godine, isto kao prošle i pretprošle godine I https://www.gnu.org/software/octave/ I 2015: “$2650 (standard) / $625 (education)” I 2017: “$2650 (standard) / $625 (education)”

I osnovni tip podatka: n-dimenziona matrica

I extended 2D/3D visualization . . .

red je da pomenemo (i ulinkujemo) i alternative . . . Odakle se nabavlja GNU Octave?

I GNU/Linux, Ubuntu:

I repository, Ubuntu Software Center I GNU Octave I Scilab, još jedan Matlab-like, French . . . I Synaptic Package Manager I FreeMat (prilično neaktivan poslednjih godina) I search “octave” I Python, PyLab . . . prednosti modernog jezika I toolboxes, dodatna dokumentacija, . . .

I R, statistika I win: I nije bio kao pod GNU/Linux I Julia, jako brzo, budućnost . . . I ima toolboxes I ... I sada jedino MXE builds: https://ftp.gnu.org/gnu/octave/windows/ prvo pokretanje grafike može dugo traje!

I Da li vam je potreban GUI? Ima sada i to, by default!

literatura, dokumentacija pocinjemo, GNU Octave kao kalkulator

I dokumentacija koja ide uz GNU Octave, odlična, tu je sve što 2+2 je realno potrebno 2 + 2 # može space okolo, preporuka I https://www.gnu.org/software/octave/octave.pdf, 2-3 1004 strane! 2*3 I tutorials na www, mnogo 3/4 3.0/4.0 I izbor linkova, http://tnt.etf.rs/~oe4sae/ 10/3 napomena: GNU Octave 4.2.1, 1004 strane!!! I -10/3 I GNU Octave 4.2.1 was released February 24, 2017 2^3 I terminal, octave za ver < 4.0.0 3^2 ili octave-cli za ver >= 4.0.0 3^3

I terminal, octave --force-gui za ver < 4.0.0 10^10 % sve su to floats! ili octave za ver >= 4.0.0 3^64 3^640 # još nije Inf I ver Inf i NaN promenljive, ; i ans

3^6400 # Infinity, Inf a = 3 5 / Inf a = 4; # odziv suppressed 5 * Inf a 0 / 3 disp(a) # uočite razliku, nema a = . . . 3 / 0 b = 5 0 / 0 # Not a Number, NaN a + b 4 * NaN ans # kod Python-a je ovo _ 5 / NaN

strukture podataka stringovi

a = ’Pera’ tacka1.x = 5 b = "Mika" tacka1.y = 7 a + b # čudan string? tacka2.x = 1 strcat(a, b) tacka2.y = -1 a == b tacka1 + tacka2 a(1) tacka1.x + tacka2.x a(3) # slab overloading b(1:3) b(1 : 3) b (1 : 3)

help! relacioni operatori

help(floor) help floor # short description 2 < 3 doc floor # documentation, long description 3 < 2 # izlazak sa q 2 <= 2 help ceil 2 >= 3 doc ceil 2 ~= 2 # izlazak sa q 2 != 2 % malo proširenje u odnosu na Matlab help 2 == 2 % pazite se, često pravi bugs!!! doc

logički operatori logički operatori, nad nizovima

a = [0 1 0 1] 1 & 0 b = [0, 0, 1, 1] 1 & 1 a & b 0 & 0 a | b 0 | 0 !a 1 | 0 ~b 1 | 1 a’ & b’ ~1 a’ | b’ !1 [a’ !a’] ~0 [a’ b’ a’ & b’] !0 [a’ b’ a’ | b’] operatori inkrementiranja matrice

a = [1, 2; 3, 4] a = [1 2; 3 4] # ovo ne može u Python-u a = [1 2 c = 0 3 4] # ni ovo ++c c++ b = inv(a) c a * b c-- b * a c a .* b --c b .* a c a ./ a a / a inv(a) * a a / b a * a

matrice, indeksiranje i transpose, 1 matrice, indeksiranje i transpose, 2

a = 1 : 5 a(1) # razlika u odnosu na Python!!! c = [1 2 3; 4 5 6] a(5) length(c) a(2 : 4) size(c, 1) a(-1) size(c, 2) length(a) c(2, 2) size(a) c(2, :) b = a’ c(:, 2) b(4) c(2 : 4) # pazite se, bugs!!! length(b) c size(b)

neke posebne matrice scripts, Gauss na loš način

gedit gauss.m

View / Highlight Mode / Scientific / Octave

eye(3) # Gauss, na los nacin zeros(4) zeros(4, 1) n = input(’do koliko? ’); zeros(1, 4) ones(5) s = 0; ones(1, 5) for i = 1 : n s += i; end

printf(’sum = %d\n’, s)

scripts, Gauss na loš način, run moglo je i ovako

a = 1 : 100 # ili a = 1 : 100; ls sum(a) ls gauss.m # ili help gauss a = ones(1, 100) gauss b = cumsum(a) 100 sum(b) mean(a) mean(b) save, prvi deo load, prvi deo

a clear all b a = 3 string b = 5 clear all string = ’string’ a x = [1 2; 3 4] b save ws # ceo workspace! string load ws a sada uradite a b gedit ws string

funkcije sa nizovima plot, 2d

plot(deg, s) deg = 0 : 360; plot(deg, c) length(deg) hold on wt = deg * pi / 180; plot(deg, s, ’r’) s = sin(wt); close all s2 = s .* s; plot(deg, s, deg, c) rmss = sqrt(mean(s2)) hold on rmss - 1/sqrt(2) plot(deg, s2, ’m’, deg, c2, ’c’) c = cos(wt); axis([0 360 -1 1]) # mora , in Python c2 = c .^ 2; set(gca, ’XTick’, 0 : 60 : 360) rmsc = sqrt(mean(c2(1 : length(c2) - 1))) xlabel(’wt [deg]’) rmsc - 1/sqrt(2) ylabel(’sin, cos, sin^2, cos^2’) title(’funkcije’)

plot, 2d slika.png

help figure doc figure help print doc print print(’slika.png’, ’-dpng’) print(’slika.pdf’, ’-dpdf’) print(’slika.eps’, ’-deps’)

pogledajte png, pdf, eps sliku, različite u odnosu na ekran! svaki drajver specifičan, kao gnuplot (što i jeste)

slika.pdf, cropped save i load, drugi deo

funkcije 1 data = [deg’ wt’ s’ c’ s2’ c2’]; data size(data) 0.5

2 save data data , cos 2

0 clear all

sin, cos, sin data

-0.5 load data

data -1 0 60 120 180 240 300 360 wt [deg] gedit data linearne jednačine kandidat za ctrl/c

velike petlje čest kandidat za GNU Octave hoću da rešim sistem jednačina: kako da znamo šta se u petlji događa? x + y = 3 kako da prekinemo izvršavanje programa? x − y = 1 gedit loop.m

a = [1, 1; 1, -1] # komentar moze i sa # i sa % b = [3; 1] b = [3 1]’ for i = 1 : 1000 a \ b # linear least squares disp(i) inv(a) * b # fflush(stdout); # ovo uncomment posle cond(a) # condition number rcond(a) # petlja čekalica rref(a) # reduced row echelon form for j = 1 : 100000 end end

i još mnogo toga . . .

I GNU Octave je jako bogat funkcijama

I sjajan reference manual, 1004 strane

I ovo uputstvo će biti dopunjavano, proširivano

I bar je takav bio plan . . . gnuplot . . .

gnuplot I dugoveˇcan program (1986) za vizuelizaciju podataka, stalno dogradivan

I ugraden u GNU Octave, Maxima, R, . . .

I crta podatke (iz fajla) i funkcije (analitiˇcki zadate)

I 2D i 3D, eksplicitno i parametarski

I Dekartov i polarni koordinatni sistem

I komandna linija, danas za ve´cinu korisnika problem

I veoma kvalitetan izlaz

I razvija se: nove verzije, knjige . . .

I mnogima teˇzak, mada je sve to ista stvar . . .

I vole ga statisticari i zainteresovani za advanced data analysis

. . . gnuplot ...... gnuplot

I program stabilan, sa mnogo korisnika, ima smisla uˇciti ga I glavni izvor: http://www.gnuplot.info/ I veoma puno resursa dostupno I sada aktuelna verzija 5.2; kod vas 5.0.3 I sjajna zbirka primera http://gnuplot.sourceforge.net/demo/ I za win sada instalacija, . . . I odaberete sta vam treba, preradite, brzo i efikasno, moj sluˇcaj, I uputstvo Madrid . . . http://www.gnuplot.info/docs_5.2/Gnuplot_5.2.pdf, I alternativa: 269 strana I Origin, US$ 1095(std), US$ 1800(pro), US$ 850(academic I proprietary: pro), US$ 69/yr (student) I Gnuplot in Action I SigmaPlot, sa njihovog sajta, UK and Ireland only: I gnuplot Cookbook Commercial Edition: £ 525.00 I gnuplot 5 Government Edition: £ 474.00 I oˇcigledno se piˇsu knjige na gnuplot temu . . . Academic Edition: £ 424.00 I imate neke primedbe na komandnu liniju?

gnuplot, alternative . . . gnuplot, za ˇsta je dobar?

I jedna od GUI free alternativa SciDAVis (Python)

I jos poznati LabPlot, Grace, Veusz (Python)

I PyXPlot, vrlo sliˇcna sintaksa, radili (Python)

I ...

I treba li vam iˇsta od toga?

gnuplot, za ˇsta je dobar? gnuplot, za ˇsta je dobar? gnuplot, za ˇsta je dobar? gnuplot, terminal -> terminal

I idemo na komandnu liniju, crveno su gnuplot komande koje kucate

I gnuplot

I help

I plot sin(x)/x

I print pi

I print 5*pi

I print 2**3

I ima i promenljive

I a=pi/4

I print sin(a)**2

gnuplot, xrange, yrange gnuplot, samples

I set xrange [-5*pi:5*pi] I show samples

I show xrange I set samples 10

I replot I plot sin(x), cos(x)

I set yrange [-1.1:1.1] I show samples

I show yrange I set samples 360*5

I replot I replot

I reset I show samples

I replot I help set samples

gnuplot, more functions, key gnuplot, tics

I plot sin(x)/x, -sin(x)/x

I unset key I plot [-2*pi:2*pi] sin(x), sin(x)**2 I replot I set xtics (-2*pi, -pi, 0, pi, 2*pi); replot I set key left top I set xtics nomirror; replot I replot I set grid; replot I set key right bottom box I set xtics (-2*pi, -3*pi/2, -pi, -pi/2, 0, pi, 2*pi); replot I replot I unset grid; replot (nomirror ostaje!) I help set key I set xtics ("-pi" -pi, "0" 0, "pi" pi); replot I set key tmargin left (ostaje box!) I reset; replot I replot I set xtics pi I set key rmargin center nobox I set mxtics 2; replot I replot I set grid mxtics; replot I set key above box; replot I set grid xtics mxtics ytics; replot I set key below nobox; replot I ima joˇs opcija, help, books, . . . gnuplot, lines and points gnuplot, steps and bars

I reset; plot sin(x), cos(x) I plot sin(x) with lines linetype 1 linewidth 1, cos(x) with lines linetype 1 linewidth 2 I plot sin(x) with lines linetype 3 linewidth 2, cos(x) with I reset; plot sin(x) with impulses lines linetype 4 linewidth 1 I plot sin(x) with steps I plot sin(x) with points I plot sin(x) with steps, sin(x) with fsteps, sin(x) with I plot sin(x) with linespoints histeps I plot sin(x) with dots I plot sin(x) with boxes I plot sin(x) with points, cos(x) with points I set style fill solid 1; replot I set samples 10 I set boxwidth 0.5 relative; replot I set yrange [0:6] I plot 1 with points pointtype 1, \ 2 with points pointtype 2, \ 3 with points pointtype 3, \ 4 with points pointtype 4 gnuplot, labels gnuplot, terminals and output 1

I show terminal I help terminal I plot sin(x) I help terminal postscript I set xlabel "x" I set terminal postscript eps I set ylabel "y" I show output I set title "y=sin(x)" I set output "slika1.ps" I replot I plot sin(x), cos(x) I set label "neki tekst" at 5,0.5; replot I pogledajte ˇsta ste dobili kao slika1.ps I plot sin(x) title "sin", cos(x) title "cos" I set output "slika2.ps" I set key box; replot I set terminal postscript eps color I plot sin(x), cos(x) I pogledajte ˇsta ste dobili kao slika2.ps

gnuplot, terminals and output 2 gnuplot, da napravimo file

I octave I set output I deg=0:360*4; I show output I wt=deg*pi/180; I show terminal I f=exp(-wt/2/pi*0.5).*sin(wt); I menjate terminal koji imate, qt ili x11, ja piˇsem za x11, vaˇzi i na dalje I plot(deg,f) I set terminal x11 0 persist I fp=exp(-wt/2/pi*0.5); I plot sin(x) I fm=-fp; I set terminal x11 1 persist I dat=[deg’ wt’ f’ fp’ fm’]; I plot cos(x) I save dat dat I set terminal x11 0 I exit ili ctrl-d (^D) I show terminal I gedit dat I reset I # znaˇci komentar I zapamtiti ˇsta je u kojoj koloni, 1, 2, 3, 4 i 5

gnuplot, file data plotting gnuplot, prvi script

I plot "dat" using 1:3 I da napravimo script, gedit slika.gp I plot "dat" using 1:3 with lines I ne mora ekstenzija .gp, moze bilo ˇsta I plot "dat" using 2:3 with lines I kucate: I plot "dat" using 1:3 with lines, "dat" using 1:4 with lines, "dat" using 1:5 with lines set xrange [0:360*4] I plot "dat" using 1:3 with lines linewidth 2, \ set xtics 180 "dat" using 1:4 with lines linetype 2, \ set xlabel "wt [deg]" "dat" using 1:5 with lines linetype 2 set ylabel "Vc" plot "dat" using 1:3 with lines linewidth 2 title "Vc", \ I plot "dat" using 1:3 with lines linewidth 2 title "Vc", \ "dat" using 1:4 with lines linetype 2 title "anv 1", \ "dat" using 1:4 with lines linetype 2 title "anv 1", \ "dat" using 1:5 with lines linetype 2 title "anv 2" "dat" using 1:5 with lines linetype 2 title "anv 2"

I set xrange [0:360*4] I gnuplot I set xtics 180; replot I load "slika.gp" I postaje zamorno; vreme je za scripting

gnuplot, joˇs terminala gnuplot, latex terminal

I set terminal png I napravite script sl4.gp I set output "slika3.png" set terminal latex set output "sl4.tex" I replot set xrange [0:360*4] I set terminal pdfcairo set xtics 180 set xlabel "$\\omega t \\; [^\\circ]$" I set output "slika3.pdf" set ylabel "$v_C$" I replot plot "dat" using 1:3 with lines linewidth 2 title "$v_C$", \ "dat" using 1:4 with lines linetype 2 title "anv$_1$", \ I set terminal jpeg "dat" using 1:5 with lines linetype 2 title "anv$_2$" I set output "slika3.jpg" I mora \\ umesto \ poˇsto je \ gnuplot znak za novi red I replot I moˇze load "sl4.gp" I set terminal x11 I a moˇze i sa komandne linije: gnuplot sl4.gp I set output I dobili ste sl4.tex koji nije standalone I pogledajte slika3.png, slika3.pdf i slika3.jpg; razlike? gnuplot, latex terminal, cover gnuplot, epslatex terminal

I napravite tex cover slika4.tex: \documentclass{minimal} I napravite script set terminal epslatex standalone \begin{document} set output "slika5.tex" set xrange [0:360*4] \input{sl4} set xtics 180 set xlabel "$\\omega t \\; [^\\circ]$" \end{document} set ylabel "$v_C$" I moˇze Texmaker, a moˇze i komandna linija pdflatex slika4, plot "dat" using 1:3 with lines linewidth 2 title "$v_C$", \ direktno u pdf "dat" using 1:4 with lines linetype 2 title "anv$_1$", \ "dat" using 1:5 with lines linetype 2 title "anv$_2$" I moˇze i indirektno, dvi-ps-pdf: latex slika4, dvips slika4, I procesirate kroz gnuplot, dobili ste standalone tex ps2pdf slika4.ps I latex slika5, ne moˇze pdflatex slika5 !!! I moˇze da se „kropuje“, ps2eps -l slika4.ps, epstopdf slika4.eps I put do pdf na viˇse naˇcina

I moˇze i latex slika4, dvipdf slika4, nema kropovanja

gnuplot, epslatex color terminal gnuplot, parametric plot

I napravite script set terminal epslatex standalone color I set parametric set output "slika6.tex" I plot [0:2*pi] cos(t), sin(t), 2*cos(t/2), set xrange [0:360*4] 2*sin(t/2) set xtics 180 set xlabel "$\\omega t \\; [^\\circ]$" I set xrange [-3:3] set ylabel "$v_C$" I set yrange [-3:3] plot "dat" using 1:3 with lines linewidth 2 title "$v_C$", \ "dat" using 1:4 with lines linetype 2 title "anv$_1$", \ I replot "dat" using 1:5 with lines linetype 2 title "anv$_2$" I set size square I procesirate kroz gnuplot, dobili ste standalone tex I replot I procesirate kroz latex, procesirate preko dvi i ps do pdf I set key above box; replot I pogledate i uporedite sve slike od sada

gnuplot, another parametric plot . . . and a script file . . .

create mystery-curve.gp as follows: #! /bin/sh gnuplot $1.gp set terminal epslatex standalone color size 6, 6 latex $1.tex set output "mystery-curve.tex" dvips $1.dvi epstopdf $1.ps set parametric rm $1.tex set samples 10000 rm $1-inc.eps set size square rm $1.aux rm $1.log set key off rm $1.dvi unset xtics rm $1.ps unset ytics rm $1.eps unset border save it as gpmake.sh, just run it, plot cos(t)+cos(6*t)/2+sin(14*t)/3, \ sin(t)+sin(6*t)/2+cos(14*t)/3 linewidth 4 sh gpmake.sh mystery-curve and look for the output

. . . and the result is . . . gnuplot, polar plot

I reset

I set polar

I plot [0:2*pi] t

I plot [0:10*2*pi] t

I set samples 1000

I set size square

I set xrange [-70:70]

I set yrange [-70:70]

I unset key; replot

I plot [0:10*2*pi] t, -t gnuplot, logscale, kompleksni brojevi gnuplot, fazna karakteristika

I resetujte gnuplot settings, restart to sigurno radi ω I smatra´cemo da je x = ωP I j={0,1}

I print j**2 I plot 180/pi*arg(1/(1+(j*x)**2))

I print j*j I set yrange [-270:90]; replot

I set xrange [0.001:1000] I set ytics 90; replot

I set logscale x I plot 180/pi*arg(1/(1+j*x))

I plot 20*log10(abs(1/(1+j*x))) I set yrange [-135:45]; replot

I set yrange [-80:20]; replot I set ytics 45; replot I plot 20*log10(abs(1/(1+(j*x)**2)))

I set yrange [-160:160]; replot

I set ytics 20; replot

I set samples 1000; replot

I set samples 10000; replot gnuplot, amplitudska i fazna karakteristika, script gnuplot, styles and size

napravite skript af.gp:

set terminal x11 0 persist set xrange [-pi:pi] j={0,1} set xtics pi set logscale x set yrange [-1.5:1.5] set xrange [0.001:1000] set ytics 1 set yrange [-120:40] set style line 1 linetype 1 linewidth 4 linecolor rgb "red" set ytics 20 nomirror out set style line 2 linetype 2 linewidth 2 linecolor rgb "blue" set y2range [-270:90] plot sin(x) linestyle 1, cos(x) linestyle 2 set y2tics 90 nomirror out set terminal postscript eps color size 12cm, 8cm set samples 1000 set output "size1.ps" set xlabel "log(w/(1 rad/s))" replot set ylabel "a [dB]" set terminal postscript eps color size 4cm, 4cm set y2label "phi [deg]" set output "size2.ps" plot 20*log10(abs(1/(1+(j*x)**2))) axes x1y1, \ replot 180/pi*arg(1/(1+(j*x)**2)) axes x1y2

gnuplot af.gp

gnuplot, margins gnuplot, axis, border, tics

show margin set terminal postscript eps color size 12cm, 8cm set output "margin1.ps" reset replot set terminal x11 0 set lmargin at screen 0.2 set output set rmargin at screen 0.9 plot sin(x) set bmargin at screen 0.2 unset border; replot set tmargin at screen 0.9 set zeroaxis; replot show margin set xtics axis; replot set output "margin2.ps" set ytics axis; replot replot set zeroaxis linetype -1; replot set lmargin show margin

gnuplot, test, terminal specific parameters gnuplot, test, vaˇzniji terminali

set terminal png set output "test.png" test I vrlo korisna komanda, test set terminal postscript eps I prikazuje “terminal specific” parametre set output "test.eps"

I zakljuˇcak: odaberete nekoliko terminala koji vas interesuju test (epslatex, png, jpeg, postscript, pdfcairo), naviknete se set terminal pdfcairo na znaˇcenje pojedinih parametara set output "test.pdf" test I kroz test se odliˇcno vidi razlika izmedu vektorske i rasterske set terminal jpeg grafike set output "test.jpg" test set terminal x11 0 set output test gnuplot, size, ratio gnuplot, x11, interactive commands

reset set terminal x11 0 set output set parametric reset plot [0:2*pi] cos(t), sin(t) plot exp(x) set xrange [-2:2] l set yrange [-1:1] l replot m set size square m replot set size ratio 1 replot set size ratio 0.5 replot

gnuplot, 3D plot, sampling gnuplot, 3D plot, hidden3d

reset set xrange [-2*pi:2*pi] set yrange [-2*pi:2*pi] show hidden3d splot cos(x)*sin(y) set hidden3d show isosamples show hidden3d set isosamples 2; replot replot show samples set isosamples 50 set samples 10; replot replot set samples 100; replot set isosamples 3; replot set isosamples 5; replot set isosamples 7; replot

gnuplot, 3D plot, contours gnuplot, 3D plot, surface

show contour set contour set contour surface show contour replot replot unset surface help contour replot set contour both replot

gnuplot, 3D plot, more contours gnuplot, 3D plot, cubic spline

set isosamples 10 replot set cntrparam cubicspline splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2) title "sombrero" help cntrparam replot set cntrparam levels discrete 0,0.25,0.5,0.75 show view replot set view map set surface replot replot set contour both unset surface replot replot set size ratio 1 replot set isosamples 50 replot gnuplot, 3D plot, views gnuplot, 3D plot, bojenje

set pm3d replot unset contour show view replot set view set view map show view replot replot set view replot set pm3d at b replot set pm3d at t replot

gnuplot, 3D plot, 3D parametarski plot octave, data files

octave

reset set parametric z = rand(21); splot [0:20*pi] cos(u), sin(u), u save z z x = linspace(0, 4 * pi, 361); x0 = cos(x); set samples 1000 y0 = sin(x); replot z0 = exp(x / pi); xx = [x0’ y0’ z0’]; save xx xx ctrl-d

gnuplot, data matrix plot gnuplot, contours

set contour; replot unset surface; replot splot "z" matrix set view map; replot splot "z" matrix with lines set size ratio 1; replot set hidden3d; replot unset key; replot unset tics; replot set cntrparam cubicspline; replot

gnuplot, palette gnuplot, 3D data line

set pm3d; replot reset unset colorbox; replot splot "xx" using 1:2:3 unset contour; replot set palette gray; replot splot "xx" using 1:2:3 with lines title "spirala" gnuplot, 3D plot, frekvencijski primer gnuplot, 3D plot, frekvencijski primer, contours

set contour; replot set contour surface; replot j={0,1} set contour both; replot set xlabel "sigma" set cntrparam levels discrete 1,2,3; replot set ylabel "j omega" unset surface; replot set xrange [-3:3] set view map; replot set yrange [-3:3] set xrange [-2:2] set zrange [0:5] set yrange [-2:2] splot abs(1/(1+(x+j*y)**2)) replot set cntrparam cubicspline; replot set size square; replot

gnuplot, frekvencijski primer, colorplot gnuplot, set view equal

set xrange [0: pi] set yrange [0:1]

set contour both unset surface set view; replot set cntrparam levels discrete 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4 set pm3d; replot set pm3d set pm3d at t; replot set isosamples 41 set pm3d at st; replot set pm3d at b; replot set xlabel "x" set pm3d map; replot set xtics ("0" 0, "pi" pi) set ylabel "y" set ytics ("0" 0, "1" 1)

set label at pi/2, 0.5, 2 "|sin(z)| = |sin(x + i y)|" center

set view equal

splot sqrt(sin(x)**2*cosh(y)**2+cos(x)**2*sinh(y)**2) notitle gnuplot, set view equal, fig.gp, extended gnuplot, zakljuˇcak

| sin(z)| = | sin(x + iy)| 2 5 1.6 1.6 4.5 1.4 1.4 4 1.2 1.2 1 3.5 1 1 0.8 0.8 3 0.6 0.6 0 2.5 0.4 jω 2 0.2 0.4 0.2 1.5 0 -1 0 1 0.5 -2 0 0 -2 -1 0 1 2 x 1 σ π0 y preporuka: http://gnuplot.sourceforge.net/demo/ Maxima, uvod 1

I computer algebra systems (CAS)? http://en.wikipedia. org/wiki/Comparison_of_computer_algebra_systems

I Mathematica, $2,495 (Professional), $1095 (Education), Maxima, wxMaxima $140 (Student), $69.95 (Student annual license), $295 (Personal), free on Raspberry Pi hardware

I Maple, $2,275 (Commercial), $2,155 (Government), $1245(Academic), $239 (Personal Edition), $99 (Student), $79 (Student, 12-Month term)

I navijaˇcke strasti, Maple vs. Mathematica

I Symbolic Math Toolbox (MATLAB), $3150 including required Simulink

I bio popularan Derive, http://en.wikipedia.org/wiki/ Derive_(computer_algebra_system), discontinued 2007

Maxima, uvod 2 Maxima, uvod 3

I Maxima, a computer algebra system, GPL I Maxima je program komandne linije, startuje se sa maxima I http://en.wikipedia.org/wiki/Maxima_(software) I nekada ga pratio GUI xmaxima, joˇs postoji I http://maxima.sourceforge.net/ (sudo apt-get install xmaxima) I zasnovana na MIT , http://en.wikipedia.org/wiki/Macsyma I danas dominira GUI wxMaxima, Andrej Vodopivec I http://andrejv.github.com/wxmaxima/ I William Frederick Schelter, GPL, DOE Macsyma 1982 http://en.wikipedia.org/wiki/Bill_Schelter I wxMaxima moˇze sve ˇsto moˇze Maxima, neˇsto (ne sve) uneto u GUI I star program, ali aktivno se razvija I odliˇcno radi i pod win I ukljuˇcen u Scilab i Euler Math Toolbox I treba predavati u prvoj godini (jeretiˇcka misao) I ukljuˇcen u SageMath, http://en.wikipedia.org/wiki/ Sage_(mathematics_software)

Maxima, literatura Maxima, komandna linija

I da poˇcnemo sa komandnom linijom I http://maxima.sourceforge.net/documentation.html I zaˇsto? I Maxima Reference Manual, ver. 5.41.0, 1172 strana I 1. programiranje mogu´ce; nalik Octave, Python, interpreter I na istoj stranici niz linkova na tutorials I 2. GUI nema sve komande, mnogo ih je I lepi primeri http://math.hawaii.edu/wxmaxima/ I 3. kada se naviknete, ponekad lakˇse je kucati komande I film od 2h 9’ 9"(sedam delova), poˇcinje sa http://www.youtube.com/watch?v=iqVWZcxAsrs I maxima I izlazi se sa quit();

Maxima, komandna linija Maxima, komandna linija . . .

I %pi; I ˇcudna i ˇcesta upotreba znaka % I float(%pi); I π je %pi I ev(%pi, numer); I e je %e I %e; I j ili i je %i I float(%e); I ∞ je inf, nema %, ima i infinity i infm I float(%i); I ; je kraj komande, nema veze sa Octave, ˇcak suprotno! I %iˆ2; I $ je kraj komande to supress output I sqrt(-1); I float(); daje numeriˇcki izlaz I sin(%pi/4); simboli, brojevi, razlomci . . . problemi sa =, osnovna prepreka primeni

I 3/4; I = je = iz jednaˇcine I 3.0/4; I solve(2*x-8=2,x); I 3/4.; I solve(xˆ2 - 5 * x = -6, x); I 3/4.0; I solve(xˆ2 - 2, x); I float(3/4); I : je = iz dodele vrednosti I ev(3/4, numer); I a; I a: 4; I 1/2 - 1/3; I a; I float(%); I a$ I sin(2); I aˆ3; I sqrt(a); I sin(2.0); I := je = iz definicije funkcije I 63ˆ3; I f(x):=xˆ2; I 3ˆ63; I f(3); I 10!; I f(a); I 100!; I f(b); I 1000!;

=, % i solve undefinisanje

I fundef(f);

I joˇs jedna ˇcudna primena %, prethodni izraz I remfunction(f);

I %ok, k-ti output, k je integer, k ∈ N I fundef(f);

I %ik, k-ti input I moˇze i remfunction(all); values; I %; I I remvalue(a); I %i2; I a; I %o2; I a: 2; I kod wxMaxima % moˇze da vas prevari, vrati´cemo se na ovo, pazite! I b: 3; I = je = iz jednaˇcine, ne zaboravite, ponavljam! I values;

I 3*x+2=8; I remvalue(all); I solve(%, x); I values; I solve(yˆ3 = 27, y); I ovde posle ? mora blanko: I solve(f(t)=64,t); I ? values; I ? remvalue; kill joˇs o funkcijama i ev

I describe(kill); I ? kill; I a: 4; I f(x) := xˆ2; I b: 5; I a: xˆ2; I f(x):=xˆ2; I values; I f(y); I kill(b); I ev(a, x=y); I values; I f(4); I fundef(f); I ev(a, x=4); I kill(f); I describe(ev);

I fundef(f); I opet neobiˇcna primena simbola = I b: 7; I values; I kill(all); I values; fpprec i bfloat fpprintprec

I fpprintprec;

I fpprec; I float(%pi);

I float(%pi); I float(%e);

I bfloat(%pi); I fpprintprec: 3;

I fpprec: 50; I float(%pi);

I bfloat(%pi); I float(%e);

I float(%pi); I fpprintprec: 5;

I fpprec: 3; I float(%pi);

I bfloat(%pi); I float(%e);

I float(%pi); I fpprintprec: 0;

I describe(fpprec); I float(%pi);

I describe(bfloat); I float(%e);

I describe(fpprintprec); expand i factor parcijalni razlomci, partfrac(expression, variable);

I expand((x+1)ˆ2);

I expand((x+1)*(x-1));

I expand((x-3)ˆ7); I ex: (sˆ3+4*sˆ2+6*s+4)/(sˆ3+3*sˆ2+3*s+1); I factor(%); I factor(ex); I eq: expand((x-4)*(x-5)*(x-6)); I partfrac(ex, s); I solve(eq, x); I dobar TEK! I factor(eq); I expand(%); I factor(4*xˆ5-4*xˆ4-13*xˆ3+xˆ2-17*x+5); I ratsimp(%); I factor(1001);

I factor(123412341234);

I describe(factor);

I describe(expand);

ratsimp i fullratsimp trigonometrija

I kill(all); I cos(%pi/3);

I eq: sin(x/(xˆ2+x)) = exp((log(x)+1)ˆ2-log(x)ˆ2); I sin(%pi/3);

I ratsimp(eq); I ev(sin(%pi/3), numer);

I ((x-1)ˆ(3/2)-(x+1)*sqrt(x-1))/sqrt((x-1)*(x+1)); I float(sin(%pi/3));

I ratsimp(%); I csc(45*%pi/180);

I expr: (xˆ(a/2)+1)ˆ2*(xˆ(a/2)-1)ˆ2/(xˆa-1); I tan(%pi/4);

I ratsimp(%); I tan(%pi/8);

I fullratsimp(%); I acos(1/2);

I ? ratsimp; I 180/%pi*asin(sqrt(3)/2);

I ? fullratsimp; I acsc(1);

trigonometrija, izrazi linearni sistemi jednaˇcina 1

I ex: sin(x)ˆ2+cos(x)ˆ2; I 3*x+2*y=7; I trigsimp(ex); I lhs(%); I ? trigsimp; I rhs(%); I kill(all); I rhs(%ok); k je broj jednaˇcine iz prvog reda I ex: sin(a+b); I e1: 3*x+2*y=7; I trigexpand(ex); I lhs(e1); I trigrat(%); I rhs(e1); I ? trigexpand; I e2: 5*x-y=3; I ? trigrat; I linsolve([e1,e2], [x,y]); I ex: sin(x)ˆ2; I r: %; I trigsimp(ex); I r[1]; I trigreduce(ex); I r[2]; I ? trigreduce; I rhs(r[1]); I trigrat(ex); linearni sistemi jednaˇcina 2 eliminacija

I e1;

I e1: 10*x-2*y=6; I remvalue(all);

I e2; I a1: x+y+2*t=7;

I linsolve([e1,e2], [x,y]); I a2: x-y-t=2;

I e1: 10*x-2*y=5; I eliminate([a1,a2],[t]);

I linsolve([e1,e2], [x,y]); matrice Kronecker-Capelli

I A: matrix([1,2],[2,1]);

I B: invert(A);

I A*B;

I ovo je element-wise operation!!! I A: matrix([5,-1,3],[10,-2,6]);

I A.B; I echelon(A);

I ovo je matriˇcno mnoˇzenje! I A[2][3]: 5;

I determinant(A); I A;

I determinant(B); I echelon(A); I b: matrix([3], [3]);

I x: B.b;

I A.x;

I A.x-b;

I kill(all);

nelinearni sistemi plotovanje

I remvalue(all); I pazite, wxMaxima ima i wxplot2d koji embed graphs! I a1: xˆ2+yˆ2=41; I plot2d([y1,y2,y3],[x,-10,10],[y,-15,15]); I a2: y=x+1; I stari poznanik, gnuplot I algsys([a1,a2],[x,y]); I Octave radi isto, gnuplot I t: solve(a1,y); I describe(plot2d); I y1: rhs(t[1]); I ima i example(linsolve); I y2: rhs(t[2]); I %th(3); I solve(a2,y); I probajte %th(4); I y3: rhs(solve(a2,y)[1]);

limesi 0, 0− i 0+

I limit((1+1/x)ˆ(2*x),x,inf);

I float(%);

I (x-2)/(xˆ2-4);

I limit(%,x,2); I limit(1/x,x,0);

I limit(xˆ3, x, inf); I limit(1/x,x,0,plus);

I limit(xˆ3, x, minf); I limit(1/x,x,0,minus);

I f(x) := atan(x);

I limit(f(x), x, inf);

I limit(f(x), x, minf);

I limit(sin(3*x)/x, x, 0);

kombinacije . . . izvodi

I remvalue(all);

I (xˆ2, x); I f(x):=xˆ3*tan(x); I diff(sin(x), x); I rd: (f(x+h)-f(x))/h; I diff(sin(x), x, 2); I limit(rd, h, 0); I diff(sin(x), x, 3); I trigsimp(%); I diff(sin(x), x, 4); I trigrat(%); I parcijalni izvodi

I diff(sin(x*y), x);

I diff(sin(w*t), t); razvoj u red integrali

I neodredeni integral I taylor(sin(x), x, 0, 5); I integrate(xˆ2, x); I taylor(cos(x), x, 0, 7); I integrate(sin(x), x); I f(x) := %eˆx-cos(x); I odredeni integral I taylor(f(x), x, 0, 7); I integrate(xˆ2, x, 1, 2); I veˇzba: nacrtajte sin(x) i razvoje reda 1, 3, 5 i 7 na istom grafiku I integrate(sin(x), x, 0, %pi); I integrate(1/(1+xˆ2), x, 0, 1);

operator ’ uvod u diferencijalne jednaˇcine

I kill(all); I eq1: ’diff(y, t, 2) + 4 * y = 0;

I a: 4; I ode2(eq1, y, t);

I a; I eq2: ’diff(y, t, 2) - 4 * y = 0;

I ’a; I ode2(eq2, y, t);

I ovo ´ce biti potrebno kod diferencijalnih jednaˇcina I eq3: ’diff(y, t, 2) - 2 * ’diff(y, t) + y = 0;

I ’diff(xˆ2,x); I ode2(eq3, y, t);

I ’integrate(xˆ2,x); I eq4: ’diff(y,t,2)+2*’diff(y,t)+4*y=8*sin(4*t);

I ’integrate(xˆ2,x,0,1); I ode2(eq4, y, t);

provera reˇsenja, substitute scripting

I pun programski jezik, input, output, if, for, . . .

I samo naznake ovde, ako vas zanima dalje sami . . .

I komandna linija, gedit dj.mac

I eq: ’diff(y, t, 2) + y = 0;

I s: ode2(eq, y, t); eq1: ’diff(y, t, 2) + 4 * y = 0; ode2(eq1, y, t); I s: rhs(s); eq2: ’diff(y, t, 2) - 4 * y = 0; p: subst(s, y, eq); I ode2(eq2, y, t); I ev(p, diff); eq3: ’diff(y, t, 2) - 2 * ’diff(y, t) + y = 0; I is(%); ode2(eq3, y, t); eq4: ’diff(y, t, 2) + 2 * ’diff(y, t) + 4 * y = 8 * sin(4*t); ode2(eq4, y, t);

I Maxima prozor, batch("dj.mac");

Laplasova transformacija inverzna Laplasova transformacija

I kill(all);

I laplace(1, t, s);

I laplace(sin(w*t), t, s); I ilt(1/(s+2), s, t);

I laplace(cos(w*t), t, s); I ilt(2/(sˆ2+4), s, t);

I laplace(exp(a*t), t, s); I ilt((sˆ2+3*s+3)/(sˆ3+3*sˆ2+3*s+1), s, t);

I laplace(exp(a*t)*sin(w*t), t, s);

I laplace(exp(a*t)*cos(w*t), t, s);

I laplace(exp(t-T), t, s); wxMaxima wxMaxima

I realno, ovo se koristi

I odliˇcan GUI, ali jedan od, ima ih viˇse I pogledate Cell meni

I razlike na komandnoj liniji skoro da nema I ´celije sa tekstom Ctrl+1 do Ctrl+4, valja komentarisati!

I komandu ˇsaljete sa ctrl/Enter ili sa desnim Enter I pod win je ovo malo drugaˇcije (Fsomething)

I postoji i wxplot2d i wxplot3d koji embed I pogledajte Save As ...

I plot3d(xˆ2-yˆ2, [x,-1,1], [y,-1,1]); I pogledajte Export ...

I wxplot3d(xˆ2-yˆ2, [x,-1,1], [y,-1,1]); I cilj#1: save mac file (manje vaˇzno, lako)

I a:2; I cilj#2: print to pdf file

I b:3; I cilj#3: export to LaTeX, posle pdf, ponekad bug!

I c:4; I na ispitu/kolokvijumu output je pdf, iz wxMaxima!

I obriˇsete ´celije sa c i b I dalje veˇzbate sami, ja pomaˇzem, lista zadataka . . . I %;

I pogledate okreˇceni output, right click, Copy i Copy LaTeX

wxMaxima, zadaci 1 wxMaxima, zadaci 2

x 1. lim 1. reˇsiti jednaˇcinu x2 − 2x = 0 x→∞ x2 − 1 x 2. reˇsiti jednaˇcinu ax2 + 5bx − 2 = 0 2. lim x→1 x2 − 1 3. reˇsiti sistem jednaˇcina 2x − y − 1 = 0 i x + 2y + 4 = 0 3. na´ci prvi izvod y = xex x 4. nacrtati funkciju y = e + 1 4. na´ci tre´ci izvod y = xnex 2 2 5. imaju li preseke krug x + y = 1 i prave (algebra + grafici) x2 5.1 x + y − 4 = 0 5. odrediti ekstreme i prevojne taˇcke funkcije y = x − 2 5.2 x + y − 1 = 0 √ x2 5.3 x + y − 24 = 0 6. nacrtati grafik funkcije y = x − 2

wxMaxima, zadaci 3 wxMaxima, zadaci 4

Z 3x + 5 I dx x2 + x + 1 Z x I xe dx 1. Maklorenov red 2. i 4. stepena + slika za f (x) = ln(1 + x + x2) Z 5 dx √ 2. Maklorenov red 6. stepena + slika za f (x) = ln(1 + sin(x)) I 5 √ 4 x 3. Tejlorov red po (x+3) 5. stepena za f (x) = x2 + 1 Z π/2 dx 4. Tejlorov red po (x-1) 5. stepena za f (x) = ln(x) I 2 0 5 + 3 cos x Z ∞ 1 I 2 dx 1 1 + x Z ∞ ln2 x I 2 dx 1 x

wxMaxima, zadaci 5 wxMaxima, zadaci 6

Z cos 2x I dx sin2 x cos2 x dy I + y = cos(t) Z  x x 2 dt I sin − cos dx 1 2 2 I odrediti konstantu reˇsenja tako da y(0) = 2 e 2 Z x + 1 I napomene: koristiti subst i proveriti reˇsenje I dx 1 2x dy 2 I − 2y = −t Z 9 dt I x sin x dx 1 I odrediti konstantu reˇsenja tako da y(0) = 3 4 Z ∞ dy −x2 I xe dx I + 2y = 2t 0 dt Z ∞ 2x I odrediti konstantu reˇsenja tako da y(0) = −1 I 2 dx 1 (1 + x2) Python?

I programski jezik I Wikipedia: Python, I deo I “Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive. Its use of indentation for block delimiters is unique among popular programming languages.” I “The reference implementation of Python (CPython) is free and open source software and has a community-based development model, as do all or nearly all of its alternative implementations. CPython is managed by the non-profit Python Software Foundation.”

Python?? Python???

I interpreter, scripting language

I po tome nalik na BASIC (nekada), Octave, . . .

I nema kompilacije i linkovanja, vrlo brze probe I Guido van Rossum, December 1989

I sporije od C-a I masovno se uči kao prvi programski jezik: MIT, CU Boulder, I ali se dobro povezuje sa C-om ...

I jako moćne i raznovrsne biblioteke (pySerial, numpy, I radi pod raznovrsnim platformama, sve koje se kod nas sreću matplotlib, sympy, . . . ) obuhvaćene

I jednostavna sintaksa I vrlo objektno orijentisan, mada ne mora da se koristi

I opšta namena I vrlo moćni tipovi podataka

I free!!! I lako se prave novi tipovi podataka

I jako dobro podržan, razvija se, rasprostranjen

I Google, Youtube, . . .

I svaka distribucija GNU/Linux-a ga ima

Python, kako nabaviti? GNU/Lin Python, kako nabaviti? win GNU/Linux: već ima interpreter, sigurno I Windows: I provera: komandna linija, python ili python3 Python 2.7.12 (default, Nov 20 2017, 18:23:56)) I http://python.org/ [GCC 5.4.0 20160609] on linux2 I odaberete platformu, dovucete, instalirate

Type "help", "copyright", "credits" or "license" for I za win je IDLE included more information. I ostalo?

I nešto valja dovući iz repository: I http://www.enthought.com/ I IDLE I ipython+numpy+scipy+matplotlib+. . . I IPython I Canopy, zapravo PyLab I numpy I pySerial, SourceForge, I scipy https://pypi.python.org/pypi/pyserial I matplotlib I Sympy, http://sympy.org/en/index.html I pylab (sve prethodno) I Spyder, https://pypi.python.org/pypi/spyder I python-serial I ... I Sympy I Spyder I ...

Python, 2 ili 3? Python, dokumentacija

I forking, 3 je „nov“ jezik

I 3 nema backward compatibility

I nisu prevelike razlike (print, za početak) I http://www.python.org/doc/, sve što treba

I problem sa već napisanim programima I http://ocw.mit.edu/, kurs 6.00 i 6.189

I problem ako se oslanjate na već postojeće programe I isto, edX

I koristim numpy, matplotlib, . . . pylab I http: //openbookproject.net/thinkcs/python/english2e/ I predajem verziju 2 I http: I verziju 3 učite lako //greenteapress.com/thinkpython/thinkpython.html I python3 I još mnogo free resursa, realno je samo #1 potrebno izbor izlistan na sajtu predmeta Python 3.5.2 (default, Nov 23 2017, 16:37:01) I [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. Python, dokumentacija, realno valja pomenuti i . . .

Ako ne učite programiranje, već programski jezik: I PyCharm

I http://www.python.org/doc/ I https://www.jetbrains.com/pycharm/

I A4, pdf, zip, 9.5 MB I popularno . . .

I Python 2.7.14, 16.12.2017. I Edtitions: tutorial.pdf, Python Tutorial, 143 strane 1. Professional (proprietary!) I 2. Community (“Open Source”) I reference.pdf, The Python Language Reference, 134 strane I ne koristim ga, nekompetentan za komentare I library.pdf, The Python Library Reference, 1578 strana I vidim da ga ljudi koje cenim vole i koriste . . . I ↑ ovde je suština uspeha I ima tutorial i educational tools, PyCharm Edu

Python, počinjemo, kalkulator Python, da raščistimo celobrojno deljenje

Pokrenete IDLE, kako god znate (kom. lin., dash, . . . ) help(type) osnovne operacije: type type() 2+2 type(3) 2-3 type(3.0) 2*3 type(3.) type(10/3) a sada iznenađenje: type(10.0/3) type(10/3.) 3/4*100 type(10./3.) 3.0/4.0*100.0 3.0/4*100 ovde se Python 3.x.x razlikuje!!! 3./4*100

Python, mislili ste da je sa deljenjem gotovo? Python, stepenovanje i long

2ˆ3 3ˆ2 3ˆ3 10.0/3.0 10ˆ10 10.0//3.0 2**3 -10.0//3.0 2 ** 3 -10/3 3 ** 2 10 ** 10 type(10**10) 3**64 type(3**3) type(3**64)

Python, ostatak pri celobrojnom deljenju Python, uvod u „da raščistimo ˆ“, operatori poređenja

2 == 2 10%3 2==2 11%3 3 == 2 12%3 2 != 3 t=54+12 2 != 2 print t 2 <> 2 type(t) 2 <> 3 s=t/60 2 > 3 m=t%60 2 < 3 print s 2 >= 1 print m 2 >= 2 print s, m 2 >= 3 print ’proteklo je’, s, ’sat i’, m, ’minuta’ 2 <= 1 2 <= 2 2 <= 3 Python, logičke operacije, ;, \ i # Python, zapisi brojeva

type(True); type(False) a = True b = False 012 type(a) 0o12 a and b # logicko i 0O12 not a # logicko ne 0x35 a and a 0X35 a or not a 0b11 a or (not a) 0B11 a or \ not b # ovako se nastavlja red

Python, konverzija zapisa brojeva Python, da konačno raščistimo ˆ, operacije nad bitima

a = 0b0101 a b = 0b0011 b a & b bin(a & b) oct(10) bin(a | b) hex(53) bin(a ^ b) bin(3) bin(0) bin(~0) bin(2) bin(~2) ~2 2 << 1 2 << 4 32 >> 2 3 >> 1

Python, a sada nesto sasvim drugačije: kompleksni brojevi Python, malo ozbiljnija matematika, moduli

j*j 1j*1j sin(1) 2J * 2J import math type(1J) type(math) abs(3+4j) dir(math) complex(1,2) help(math) a = 2 + 3j help(math.sin) type(a) math.sin(1) a.real math.e a.imag math.pi a.conjugate() math.sin(math.pi/2) a * a.conjugate() math.exp(math.pi*1j)+1 del a math.cos(math.pi) + 1j * math.sin(math.pi) + 1 type(a)

Python, namespaces Python, assignment operators

a = 1 del math a += 1 import math as m print a m.sin(m.pi / 4) ** 2 a *= 2 m.exp(1) - m.e print a del m a /= 2 from math import * print a sin(pi / 4) ** 2 a -= 4 exp(1) - e print a e a **= 3 e = 32 a %= 3 e print a pi -8 / 3 pi = 14 a = 11.0 pi a //= 3 print a Python, funkcije Python, funkcije, help

def pdv(x): def pdv(x): return x * 1.20 ’ovo je funkcija koja racuna pdv’ return x * 1.20 type(pdv) pdv(100) pdv(100) pdv(150) help(pdv)

Python, funkcije, help u više redova Python, funkcije, opcioni argumenti

def pdv(x, stopa = 20): return x*(1 + stopa/100)

pdv(100) def pdv(x): pdv(150) ’’’ovo je funkcija koja racuna pdv def pdv(x, stopa = 20): a pdv je porez na dodatu vrednost’’’ return x * (1 + stopa/100.) return x * 1.20 pdv(100) pdv(100) pdv(150) help(pdv) pdv(100, stopa=23) pdv(100, 23)

del pdv pdv(10)

Python, kontrola toka Python, ispitivanje tipa

def parnost(n): if type(n) != "": print ’argument nije ceo broj’ def parnost(n): return if n/2*2 == n: if n/2*2 == n: print ’paran’ print ’paran’ else: else: print ’neparan’ print ’neparan’ parnost(4) parnost(4.2) parnost(5) parnost(4) parnost(4.2) parnost(3) parnost(5.1) type(4) type(type(4)) type("")

Python, ispitivanje tipa, sada radi Python, ispitivanje tipa, može i ovako

def parnost(n): def parnost(n): if str(type(n)) != "": if type(n) != type(1): print ’argument nije ceo broj’ print ’argument nije ceo broj’ return return if n/2*2 == n: if n/2*2 == n: print ’paran’ print ’paran’ else: else: print ’neparan’ print ’neparan’

parnost(4.2) parnost(4.2) parnost(4) parnost(4) parnost(3) parnost(3) parnost(4.) Python, konverzije tipova i još ponešto Python, liste

a = [1, 2, 5, 6] del parnost type(a) int(-4.2) a[0] int(4.2) a[1] long(_) a[2] float(_) a[3] float(5) a[4] divmod(10, 3) a[-1] divmod(12, 3) a[-2] pow(2, 8) a[-3] 2 ** 8 a[-4] str(float(2**8)) a[-5] print a len(a)

Python, liste, slicing and mutability Python, liste, dodavanje i brisanje elemenata

a[1:3] a + 9 a[1 : 2] a + [9] a[1 : - 2] a = a + [9] a[2 : ] len(a) a[:2] del a[(len(a) - 1)] a[:-2] print a a[3] = 7 del a[1] print a print a len(a)

Python, liste, metodi append i extend Python, liste, range

a = [1, 2, 3, 4] a.append(5) a = range(5) print a len(a) b = [6, 7] print a a.append(b) a = range(4, 10) print a len(a) len(a) print a del a[5] a = range(3, 10, 2) a.extend(b) print a print a a = range(10, 0, -2) len(a) print a del a[5:] print a

Python, stack Python, liste, insert

a = [] type(a) a.append(1) a = range(10) a.append(2) a.insert(3, 4) a.append(3) print a a.pop() a.insert(0, 1) a.pop() print a print a a.insert(len(a), ’kraj’) a = range(10) print a a.pop(3) print a Python, liste, reverse, Python, liste, brojanje i brisanje

a = [3, 2, 3, 1, 4, 3, 2, 2, 5, 2] a = range(10) a.count(2) a.reverse() a.count(3) print a a.remove(3) a.reverse() a.count(3) print a print a a = [3, 4, 2, 1] a.remove(3) a.sort() print a print a a.remove(3) print a a.remove(3)

Python, in operator Python, liste, index metod

3 in a print a 4 in a a.index(2) a.remove(4) a.index(5) 4 in a a.index(1) a.index(3)

Python, aliases Python, aliases with lists

a = [1, 2, 3] a = 3 b = a b = a a is b a is b a == b a == b b[1] = 0 id(a) a == b id(b) print a help(id) a is b b += 1 c = a[:] a == b c == a a is b c is a id(a) c[1] = 2 id(b) c == a print c print a

Python, matrice Python, inicijalizacija nizova

a = [[1, 2], [3, 4]] a = [] len(a) print a len(a[1]) a = [0] * 10 print a[1][1] print a print a[0][0] a = [[1] * 3] * 3 a[0, 0] print a Python, for petlja Python, for petlja, over string

a = range(10) a = ’neobicno bas’ for i in a: for znak in a: print i + 1, ’/’, len(a) print znak

Python, if-else Python, if-elif-else

a = ’abrakadabra’ a = ’abrakadabra’ b = ’’ b = ’’ for znak in a: for znak in a: if znak == ’a’: if znak != ’a’: b += ’_’ b += znak elif znak == ’k’: else: b += ’*’ b += ’_’ else: print b b += znak print b jedna knjiga . . .

Python, II deo How to Think Like a Computer Scientist Learning with Python

Allen Downey, Jeffrey Elkner, Chris Meyers

Green Tea Press, Wellesley, Massachusetts

. . . i jedan citat: Python, dosta kalkulatora: programiranje!

strana 90:

. . . One of the characteristics of algorithms is that they do not pokrenete IDLE require any intelligence to carry out. They are mechanical processes I in which each step follows from the last according to a simple set of I File, New File (Ctrl + N) rules. I kucate program

In our opinion, it is embarrassing that humans spend so I sintaksna provera: Run, Check Module (Alt + X) much time in school learning to execute algorithms that, start programa: Run Module (F5) quite literally, require no intelligence. I On the other hand, the process of designing algorithms is interesting, intellectually challenging, and a central part of what we call programming.

Python, for petlja, continue Python, for petlja, da dodamo i break

a = [] a = [] for i in range(100): for i in range(100): if i % 4 != 0: if i % 4 != 0: a.append(i) a.append(i) continue continue print ’izbacen’, i print ’izbacen’, i if (i+1) % 77 == 0: print break print a print print a

Python, input Python, raw_input

x = input(’unesi neki podatak: ’) x = raw_input(’unesi neki podatak: ’) print type(x) print type(x) print x print x

probati: 1, 3.0, ’podatak’ probati: 1, 3.0, ’podatak’ Python, formatted print Python, formatted print, brojevi

print ’p = {}, q = {}’.format(3, 4) print ’p = {}, q = {}’.format(3.0, 4) calculator mode, again print ’p = {1}, q = {0}’.format(3, 4) import math print ’{’ print ’pi = {:.2f}’.format(math.pi) print ’{}’ print ’pi = {:.5f}’.format(math.pi) print ’{}’.format(’Pera’) print ’pi = {:10.5f}’.format(math.pi) print ’{}, {}’.format(’Mika’, ’Laza’) print ’n = {:10d}’.format(100) print ’{0}, {1}’.format(’Mika’, ’Laza’) print ’n = {:4d}’.format(100) print ’{1}, {0}’.format(’Mika’, ’Laza’) print ’n = {:3d}’.format(100) print ’{1}, {1}’.format(’Mika’, ’Laza’) print ’n = {:1d}’.format(100)

ima joˇs mogu´cnosti, pogledajte Tutorial postoji i formatiranje sa %, staro (next slide) koristiti str.format() metod za nove programe!

Python, formatted print, stari sistem Python, stringovi, joˇs poneˇsto

a = ’Petar’ b = ’Marko’ len(a); len(b) print ’pi = %5.3f’ % math.pi a + b print ’pi = %7.4f’ % math.pi a * 3 n = 9 3 * a print ’polagalo je %d studenata’ % n (a + 2 * b) * 3 print ’polagalo je %10d studenata’ % n a - b a == a vuˇce se po starim programima a == b izbegavati! a < b b < a ’1’ < ’2’ ’1’ < 2

Python, nije sve u matematici (?) Python, string methods

del s

import string as s ’Pera’.upper() dir(s) ’Pera’.lower() help(s) ’Pera’.center(20) s.ascii_letters ’Pera’.isalpha() s.printable ’Pera6’.isalpha() s.uppercase s.digits ’kako da ne’.capitalize() s.octdigits ’kako da ne’.title() ’kako da ne’.split()

i tako dalje, manual for string methods, pogledajte pre nego ˇsto reinvent

Python, OS,ˇ 1 Python, files, pisanje

f = open(’proba.txt’, ’w’) print f type(f) Vreme je za zadatak: f I ulazni podatak je broj, n < 20 (npr.) f.write(’prvi red\n’)

I treba odˇstampati LEPU (formatiranu) tablicu mnoˇzenja f.write(’drugi red\n’) f.write(’treci red\n’) Polako, sada imamo preˇca posla . . . f.close # metod, obavezne() f.close() type(f) f

pogledajte fajl proba.txt Python, files, ˇcitanje Python, files, ˇcitanje po 10 bajtova

f = open(’proba.txt’, ’r’) print f f = open(’proba.txt’, ’r’) f f.read(10) type(f) f.read(10) a = f.read() f.read(10) a f.read(10) print a f.close() f.close() f

Python, files, ˇcitanje po redovima Python, OS,ˇ 2

f = open(’proba.txt’, ’r’) Vreme je za zadatak: f.readline() I ulazni podatak je broj, n < 20 (npr.) f.readline() I treba formirati LEPU (formatiranu) tablicu mnoˇzenja f.readline() i zapisati je u .txt file f.readline() I f.close() Polako, joˇs uvek imamo preˇca posla . . .

Python, OOP Python, OOP, konvencije za dalje . . .

OOP, Python’s middle name I pokrenete IDLE, tu je interpreter I korisnik definiˇse svoje tipove podataka, klase I otvorite editor: File, New Window, . . . nad definisanim podacima definiˇse funkcije, tzv. metode, ve´c ih I ono ˇsto kucate u interpreteru je crveno videli na delu I I ono ˇsto kucate u editoru je plavo I ˇcisto i pregledno I kucate “as is”, kreativnost za sada nije na ceni I moˇze, a ne mora I file neka se zove vector.py I ˇsteta propustiti

Python, class Python, class

type(Vector) a = Vector() type(a) kucate u editoru, kada zavrˇsite proverite sintaksu i izvrˇsite, print a to su Alt+X i F5 a.x = 1 a.y = 2.0 class Vector: a.z = 3j pass type(a.x) type(a.y) type(a.z) print a.x, a.y, a.z del a type(a.x) Python, class help Python, inicijalizacija, dodajemo na class, help string ostaje

help(Vector) class Vector: class Vector: ... """Vector(x, y, z) def __init__(self, x, y, z): self.x = x klasa koja definise vektore self.y = y i operacije nad njima""" self.z = z

note: nema viˇse pass! i = Vector(1, 0, 0)

help(Vector)

Python, inicijalizacija, dodajemo na class, help string ostaje Python, inicijalizacija, default

class Vector: ... inicijalizacija i se dodaje u class file, vector.py pazite na indent, def __init__(self, x = 0, y = 0, z = 0): inicijalizacija i class isto! self.x = x 4 argumenta? self.y = y self.z = z type(i) print i i = Vector(1, 0, 0) print i.x, i.y, i.z j = Vector(0, 1, 0) k = Vector(0, 0, 1) x = Vector()

x = Vector() print x.x, x.y, x.z print i.x, i.y, i.z help(Vector)

Python, string method, lepo prikazivanje instance Python, operator overloading, sabiranje vektora

dodajete samo funkciju: class Vector: class Vector: ...... def __add__(self, other): def __str__(self): return Vector(self.x + other.x, self.y + \ return ’Vector(’ + str(self.x) + ’, ’ \ other.y, self.z + other.z) + str(self.y) + ’, ’ + str(self.z) + ’)’ help(Vector) help(Vector) print i + j print i print i + j + k print j a = Vector(2, 2, 0) print Vector.__add__(i, j) print a print i.__add__(j)

Python, operator overloading, oduzimanje vektora Python, da zakomplikujemo malo . . . u interpreteru: def sv(a, b): class Vector: return a + b ... def __sub__(self, other): print sv(i, j) return Vector(self.x - other.x, \ print sv(3, 4) self.y - other.y, self.z - other.z) sv type(sv) help(Vector) del sv print i - j print i - j - k sv = Vector.__add__ sv print Vector.__sub__(k, j) type(sv) print k.__sub__(j) print sv(i, j) print sv(3, 4) Python, opet operator overloading, negativni vektor Python, ˇstampanje kao metod

class Vector: class Vector: ...... def __neg__(self): def pr(self): return Vector(-self.x, -self.y, -self.z) print self

help(Vector) help(Vector) print -i help(Vector.pr) print -(-i) i.pr i.pr() print Vector.__neg__(k) Vector.pr(i) print k.__neg__() k.__neg__().pr()

Python, apsolutna vrednost Python, vektorski proizvod

class Vector: ... class Vector: def absval(self): ... return math.sqrt(self.x ** 2 + \ def vecprod(self, other): self.y ** 2 + self.z ** 2) x = self.y * other.z - self.z * other.y y = self.x * other.z - self.z * other.x z = self.x * other.y - self.y * other.x help(Vector) return Vector(x, y, z) help(Vector.absval) i.absval i.absval() print Vector.vecprod(i, j) import math print Vector.vecprod(j, i) i.absval() print i.vecprod(j) Vector.absval(i) print j.vecprod(i) a = Vector(2, 2, 0) i.vecprod(j).pr() a.absval(); Vector.absval(a); a.absval() ** 2 j.vecprod(i).pr() a.x

Python, skalarni (dot) proizvod Python, proizvod mnoˇzenja skalarom

class Vector: class Vector: ...... def scalprod(self, other): def dotprod(a, b): return Vector(self.x * other, \ dp = a.x * b.x + a.y * b.y + a.z * b.z self.y * other, self.z * other) return dp

print Vector.scalprod(i, 3) print Vector.dotprod(i, j) print Vector.scalprod(3, i) print Vector.dotprod(j, i) print k.scalprod(3) a = Vector(2, 2, 0) print 3.scalprod(k) print a.dotprod(j) j.scalprod(3).pr() print a.dotprod(k) 3.scalprod(i).pr() a.dotprod(k).pr() a = 3 k.dotprod(i).pr() # zaˇstone radi? a.scalprod(i).pr()

Python, overloaded * Python, overoverloaded *

class Vector: ... class Vector: def __mul__(self, other): ... return Vector.dotprod(self, other) def __rmul__(self, other): return Vector.scalprod(self, other)

print i * 3 print i * i print 3 * i print i * j print i * 3 print i * k print i * j print i.__mul__(i) print i * i (i * i).pr() print i.__rmul__(3) i * i i.__rmul__(3).pr() i * j Python, a sada poredenje, 1 Python, a sada poredenje, 2

class Vector: a = Vector(2, 2, 2) ... a > i def __cmp__(self, other): a == i a = self.absval() a < i b = other.absval() i > i if a > b: i == i return 1 i != i elif a < b: i < i return -1 i == j else: i == k return 0 I ovo je kraj priˇce o vektorima, nema vise red i blue!

Python, class and object variables Python, class and object variables, primena

class Brojac: a = Brojac() broj = 0 b = Brojac() def __init__(self): c = Brojac() Brojac.broj += 1 d = Brojac() print ’sada ih ima’, Brojac.broj del c def __del__(self): a = Brojac() # pise, pa brise Brojac.broj -= 1 del a print ’sada ih ima’, Brojac.broj del d del b

Python, a sada neˇsto sasvim razliˇcito, map Python, a sada neˇsto neoˇcekivano

x = range(11) help([]) print x help(()) def sq(a): help({}) return a ** 2 a = (1, 2, 3, 4, 5) a[0] y = map(sq, x) a[3] print y a[2] = 5

Python, dictionary Python, sets

t = {’peja’: 313, ’laza’: 312, ’dule’: 311} a = ’abracadabra’ print t b = ’alacazam’ print t[’peja’] x = set(a) t[’peja’] = 314 print x print t y = set(b) del t[’peja’] print y print t x - y ’dule’ in t y - x ’peja’ in t x | y t.keys() x & y t[’peja’] = 313 x ^ y print t Python, exceptions, 0 Python, exceptions, 1

def reciproc(x): try: def reciproc(x): return 1 / x try: except ZeroDivisionError: return 1 / float(x) print ’delis nulom!’ except: print ’Houston, we have a problem!’ reciproc(3) reciproc(3.) reciproc(0) reciproc(0.) reciproc(’a ovo?’)

Python, exceptions, 2 Python, exceptions, 3

def reciproc(x): def reciproc(x): try: try: return 1 / float(x) return 1 / float(x) except ZeroDivisionError: except ZeroDivisionError: print ’delis nulom!’ print ’delis nulom!’ except ValueError: except (ValueError, TypeError): print ’nije dobar broj’ print ’nije dobar broj’

reciproc(3) reciproc(3) reciproc(3.) reciproc(3.) reciproc(0) reciproc(0) reciproc(0.) reciproc(0.) reciproc(’a ovo?’) reciproc(’a ovo?’) reciproc(1+0j) reciproc(1+0j)

Python, exceptions, 4 Python, start programa

python ime_programa.py

I “built-in” exceptions? ili

I http://docs.python.org/2/library/exceptions.html ./ime_programa.py I ovo je samo poˇcetak . . .

I moˇzete sami da definiˇsete exception . . . akko je PRVA linija programa:

I ili da raise exception . . . #! /usr/bin/python I ako vas zanima http://docs.python.org/2/tutorial/errors.html i ako je uradeno

chmod +x ime_programa.py

ˇcega se se´cate, naravno; da izbegnete ./ dopunite PATH

Python, encoding, 1 Python, encoding, 2, mora drugi red!

#! /usr/bin/python #! /usr/bin/python # -*- coding: utf-8 -*- print ’ja se ne zovem Cedomirˇ S.ˇ Petrovi´c’ ˇ ˇ print ’jа се зовем Предраг Пеjовић’ print ’ja se ne zovem Cedomir S. Petrovi´c’ print ’jа се зовем Предраг Пеjовић’ Python, rendering Python, budu´cnost

from __future__ import division print ’\n\n\n’

print r’\n\n\n’ i

print ’\\n\\n\\n’ from __future__ import unicode_literals

Python, nije kraj, ovo je poˇcetak!

I ima joˇs mnogo toga, ovo je samo osnova

I pre svega biblioteke

I jezik raste, bi´ce joˇs tipova podataka

I razlika 2 i 3

I ostaju numpy, matplotlib, ipython, pylab, sympy

I a sada: tablica mnoˇzenja Šta je PyLab?

I environment koji cine

Python, III deo: I NumPy PyLab i SymPy I SciPy I Matplotlib I IPython

I kako se instalira pylab?

I Ubuntu: Software Center ili Synaptic

I win: http://www.enthought.com/

I . . . Canopy

IDE? Spyder! NumPy

I http://numpy.scipy.org/ I osnovna biblioteka za numerički zahtevne Python primene, sadrži: I potrebno? 1. N-dimensional array object I kako kome, kako za šta . . . 2. array slicing methods I IPython meni sasvim dobar . . . 3. array reshaping methods i module za: I . . . ima i Qt verziju, IPython Qt console 1. basic linear algebra functions I . . . mada postoji i Spyder 2. basic Fourier transforms I https://pypi.python.org/pypi/spyder 3. advanced random number capabilities

I ako nema dovucite iz repository . . . I pokrenete IDLE

I ima i pod win, ali . . . I import numpy

I dir(numpy)

I help(numpy)

I del numpy

NumPy SciPy

I obradićemo, sve, naravno, imamo vremena, . . . I http://www.scipy.org/

I evolutivno nastao, „haotično“ iz Numeric i NumArray I scientific lib za Python, zavisi od NumPy

I znanje koje raste I nekoliko modula in a single package, kao i NumPy I moduli za: I Travis E. Oliphant & Enthought, biće još kontakata sa njima 1. statistics I http://www.enthought.com/ 2. optimization I nema načina da se zapamti i nije „zauvek“ 3. numerical integration 4. linear algebra I potreban nov način učenja i snalaženja 5. Fourier transforms I izbeći reinventing 6. processing I masovno korišćenje help-a i primera 7. image processing 8. ODE solvers Matlab-Python-R I 9. special functions

SciPy matplotlib

I i dalje u IDLE I http://matplotlib.sourceforge.net/, sjajan sajt

I import scipy I package sa dugim nizom modula

I dir(scipy) I jako dobro se vidi struktuiran namespace, package.modul

I help(scipy) I Python 2D plotting library (samo 2D?)

I del scipy I ono što ima sjajno je, a sada ima skoro sve

I dobro razmislite pre nego što krenete u reinvent! I galerija i primeri

I ja ovo ne mogu da zapamtim, sto zapamtim zaboravim I uputstvo, 2.1.0, pdf, 1827 strana, 07.10.2017.

I pomenuh li nov način učenja? I John D. Hunter, video lectures

I kako organizovati informacije, previše ih je (i kratko traju) I sintaksa vrlo liči na Matlab i Octave

I “Numerical Recipes” I skoro kao gnuplot, ali direktno, bez izlaženja u gnuplot IPython PyLab

I http://ipython.org/

I https://jupyter.org/ I sve prethodno zgodno spakovano interaktivni Python envirinment, vrlo nalik na Octave, I sređen namespace da ne mora puno dot notation wxMaxima, . . . I I sintaksa jako liči na Octave/Matlab I autocompletion by tab I počinjemo, komandna linija, terminal I doteruje komande da budu shvaćene I ipython --pylab I od mnogo mogućnosti: store, history, logging, . . .

I pogledajte IPython video lectures, mogućnosti http://showmedo.com/videotutorials/series?name=CnluURUTV

PyLab, IPython, osnovno PyLab, IPython, store

store a store b help() store lista ? del a %quickref del b a = 3 a b = ’string’ b lista = [1, 2, 3] store -r li a whos b store -z store

Pylab, matematika, konstante Pylab, matrice 1

pi a = array([[1, 2], [3, 4]]) e a j a.size 1j a.shape exp(1j * pi) a.ndim math.exp(1j * pi) a.dtype help(exp) a.dtype.name help(math.exp) a.itemsize exp? a.transpose() math.exp? transpose(a) e**(1j * pi) + 1

Pylab, matrice 2 Pylab, matrice 3, inverzija i množenje

det(a) aa = inv(a) eig(a) aa b = eig(a) aa.dtype.name type(b) aa * a len(b) a * aa type(b[0]) dot(a, aa) type(b[1]) dot(aa, a) c, d = b x = arange(10) c.size x c.shape print x c.ndim dot(x, x) c.dtype.name c.itemsize Sve operacije su elementwise!!! Velika razlika u odnosu na Octave!!! Pylab, gde je dot, tu je cross Pylab, rang!!!

i = array([1, 0, 0]) j = array([0, 1, 0]) print dot(i, j), dot(j, i) a = array([[1, 1], [1, 1]]) print cross(i, j) rank(a) # ??? print cross(j, i) help(rank) # sad jasno? cross? linalg.matrix_rank(a) source(cross) Pazite!!! Nažalost, lično iskustvo, ne tuđe! Poznato od nekud? Rekoh da već ima, . . . Teško je naći potpuno nov primer . . . Reinventing problem! Google pomaže puno!

Pylab, inicijalizacija, neke posebne matrice Pylab, još elementwise operacija

I = eye(3) print I nule = zeros(4) a + 1 print nule a * a zeros? a**3 zeros((4, 2)) a / 2 zeros(4, 2) # pazite! a / 2. zeros((4, 2), dtype = int) zeros((4, 2), dtype = complex) Pazite na /, velika razlika u odnosu na Octave!!! ones([3, 4]) empty([6, 4]) empty?

Pylab, reshape Pylab, in place array operations

help(reshape) xx = arange(20) print a print xx a.reshape(1, 4) xx += 1 a.reshape(4, 1) print xx reshape(a, (1, 4)) xx = xx.reshape(4, 5) reshape(a, (4, 1)) print xx a.reshape(2, 3) xx -= 1 a.reshape(4) print xx a.reshape((4, )) xx *= 2 reshape(a, 4) print xx reshape(a, (4, ))

Pylab, transpose, revisited Pylab, eig, revisited

help(transpose) a = eye(2) xx = arange(5) + 1 print a print xx b = eig(a) xx.shape type(b) xx.ndim len(b) xx = xx.transpose() c, d = b xx.shape print c print xx print d xx = xx.reshape(1, 5) a[0, 1] = 1 xx.ndim print a print xx b = eig(a) xx.shape c, d = b xx = xx.transpose() print c xx.shape print d print xx Pylab, plot 1 Pylab, plot 2

x = arange(10) + 0.5 # nikako 1/2 close(’all’) y = x**2 phi = linspace(0, 2 * pi, 1000) plot(x, y) x = 2 * cos(phi) plot(x, y, ’r+’) y = 2 * sin(phi) xlabel(’x’) plot(x, y) ylabel(’y’) axis([-3, 3, -3, 3]) title(’y = x**2’) axis(’equal’) axis([-3, 3, -3, 3]) pretty matlabeće, ali nema hold on axis([-4, 4, -3, 3]) save kako hocete, odaberete format title(’kruznica’) u IDLE za ovo je bilo potrebno ion() (zaglavljivanje!) pogledati show() i ion() help axis?

close() ili close(’all’)

Pylab, plot 3 Pylab, plot 4, histograms

close(’all’) x = rand(10000) plot(x) help(figure) close() rand? figure(figsize = (6, 6)) plot(x, y) hist(x, 100) axis(’equal’) close() axis([-3, 3, -3, 3]) title(’kruznica’) hist?

Pazite na redosled ’equal’ i [-3, 3, -3, 3]!!!

Pylab, plot 5, normal distribution Pylab, plot 6, gustina verovatnoće

x = randn(10000) yh = t[0] / float(n) # pazite kod /! plot(x) xx = t[1] yh /= (xx[1] - xx[0]) close() len(yh) len(xx) randn? xh = (xx[0 : len(xx) - 1] + xx[1 : len(xx)]) / 2 len(xh) hist(x, 100) close() close() plot(xh, yh) xlabel(’x’) t = hist(x, 50) ylabel(’pdf(x)’) xlim(-5, 5) type(t) xticks(linspace(-5, 5, 11)) len(t) title(’gustina verovatnoce’) len(t[0]) savefig(’pdf’) len(t[1]) savefig(’pdf.pdf’)

pdf.pdf Pylab, normalizovan histogram

gustina verovatnoce 0.40

0.35

0.30 close() 0.25 hist(x, 50, normed = True) title(’normalizovani histogram’) 0.20

pdf(x) savefig(’nh.pdf’)

0.15

0.10

0.05

0.00 5 4 3 2 1 0 1 2 3 4 5 x uočite razliku, predavanja iz EM . . . Pylab, jedan script, dat.py

from pylab import * normalizovani histogram 0.40 deg = linspace(0, 4*360, 4*360 + 1) 0.35 wt = radians(deg)

0.30 f = exp(- wt / 2 / pi * 0.5) * sin(wt) 0.25 fp = exp(- wt / 2 / pi * 0.5) fm = -fp 0.20

0.15 dat = array([deg, wt, f, fp, fm]).transpose()

0.10 np.save(’deg.npy’, deg)

0.05 np.save(’f.npy’, f) np.save(’fp.npy’, fp) 0.00 6 4 2 0 2 4 6 np.savetxt(’dat.txt’, dat, fmt=’%.4f’)

Pylab, run, #1 Pylab, run, #2 i #3

na komandnoj liniji: inside IPython: python dat.py more dat.txt run dat.py less dat.txt execfile(’dat.py’) ls *.npy ipython --pylab execfile radi i kod IDLE

Pylab, after the run datslik.pdf

np.save? np.savetxt? 1.0 np.load? deg = np.load(’deg.npy’) f = np.load(’f.npy’) 0.5 fp = np.load(’fp.npy’) fm = -fp

plot(deg, f, ’r’) 0.0 plot(deg, fp, ’b’) f(wt) plot(deg, fm, ’b’) xlim(0, 360 * 4) 0.5 xticks(arange(0, 360 * 4 + 1, 180)) xlabel(’wt [deg]’) ylabel(’f(wt)’) 1.0 savefig(’datslik’) 0 180 360 540 720 900 1080 1260 1440 wt [deg] close()

Pylab, LATEX, estetika kvadrat.pdf

1.0 help(rc)

0.8 close(’all’) x = linspace(0, 1, 101) y = x**2 0.6 rc(’text’, usetex = True) y rc(’font’, family = ’serif’) y = x2 figure(0, figsize = (6, 4)) 0.4 plot(x, y)

xlabel(r’$x$’) 0.2 ylabel(r’$y$’) text(0.5, 0.4, r’$y = x^2$’) savefig(’kvadrat.pdf’, bbox_inches = ’tight’) 0.0 0.0 0.2 0.4 0.6 0.8 1.0 x Pylab, LATEX, „standardna“ „preambula“ Pylab, linear algebra, 0th part

hoću da rešim sistem jednačina:

x + y = 3 x − y = 1

rc(’text’, usetex = True) a = array([[1, 1], [1, -1]]) rc(’font’, family = ’serif’) print a rc(’font’, size = 12) b = array([[3], [1]]) rcParams[’text.latex.preamble’]=[r’\usepackage{amsmath}’] print b x = solve(a, b) print x b = array([3, 1]) print b x = solve(a, b) print x

Pylab, linear algebra, 1st part Pylab, linear algebra, 2nd part

randn? linalg.lstsq? close(’all’)

x = linspace(0, 2, 201) rc(’text’, usetex=True) y = x / 2 rc(’font’, family=’serif’, size=’16’)

xe = linspace(0, 2, 21) plot(x, y, ’b’) ye = xe / 2 + randn(21) * 0.1 plot(xe, ye, ’r.’)

A = array([xe, ones(len(xe))]).transpose() yfit = a * x + b t = linalg.lstsq(A, ye) plot(x, yfit, ’m’) print t xlabel(r’$x$’) type(t) ylabel(r’$y$’) len(t) savefig(’fitovanje.pdf’) a = t[0][0] b = t[0][1]

fitovanje.pdf Šta je SymPy?

1.2 I paket za simboličko računanje koristeći Python I cilj: isto što i wxMaxima

1.0 I ideja: Python sintaksa, poznata

I moduli, funkcije za simboličko računanje 0.8 I http://sympy.org/en/index.html

I https://github.com/sympy/sympy/releases

y 0.6 I http://live.sympy.org/

0.4 I uputstvo 1.1.1, 1878 strana, 27.07.2017. I Ubuntu: Software Center ili Synaptic

0.2 I volite Mathematica sintaksu?

I odličan pregled i tutorial 0.0 0.0 0.5 1.0 1.5 2.0 I za one koji vole matematiku http://www.sagemath.org/ x

SymPy, počinjemo SymPy, polinomi

p1 = x**2 + 2 * x + 1 p1 print p1 komandna linija, isympy I pprint(p1) I stari poznanik, IPython, customized again p2 = x + 1 I pogledajte šta radi na početku, dekleracije symbols ... p2 p3 = x**2 - 4 p3 p1 * p2 * p3 _.expand() SymPy, expand i apart SymPy, opet problemi sa deljenjem

p1 / p2 _.expand() p1 / p2 _.apart() 1 / 3 apart(p1 / p2, x) Rational(1, 3) help(expand) S(’1/3’) help(apart) S(’1 / 2’) f = 1 / (x**2 * (x + 1)) S(’1/2’) - S(’1/3’) apart(f, x) together(_, x) _.expand() _.factor() _.subs(x, 3)

SymPy, konstante i izračunavanje SymPy, Ramanujan

p2 = pi**2 p2 r = E**(pi * sqrt(163)) p2.evalf() r p2.evalf(100) r.n(20) p2.n() r.n(21) p2.n(200) r.n(22) N(p2) r.n(23) N(p2, 300) r.n(24) exp(1) r.n(25) e r.n(28) E r.n(30) E.evalf() r.n(35) I**2 r.n(500) exp(I * pi) + 1 E**(I * pi) + 1

SymPy, realni brojevi SymPy, linearna algebra

e1 = 2 * x + y - 4 e2 = x - y + 1 e1 e2 solve((e1, e2), (x, y)) exp(I * x).expand(complex = True) xr = Symbol(’xr’, real = True) e3 = x - y + 4 exp(I * xr).expand(complex = True) e2 e3 solve((e2, e3), (x, y))

e4 = 3 * x - 3 * y + 12 e3 e4 solve((e3, e4), (x, y))

SymPy, linearna algebra, opet isto . . . SymPy, matrice, samo osnovno

e1 = Eq(2 * x + y, 4) e1 e2 = Eq(x - y, -1) A = Matrix([[x, 1], [1, y]]) e1 A e2 print A solve((e1, e2), (x, y)) pprint(A) A**2 e3 = Eq(x - y, -4) A**(-1) e2 B = A.inv() e3 B solve((e2, e3), (x, y)) A**(-1) - B A*B e4 = Eq(3 * x - 3 * y, -12) simplify(A * B) e3 e4 solve((e3, e4), (x, y)) SymPy, ne baš linearna algebra SymPy, limesi

f = sin(14 * x) / x solve(p1, x) g = 1 / x solve(p2, x) limit(f, x, 0) solve(p3, x) limit(g, x, 0) solve(x**4 - 1, x) limit(g, x, 0, dir = ’+’) solve(Eq(x**4, 1), x) limit(g, x, 0, dir = ’-’) limit?

SymPy, izvodi SymPy, integrali

print p1 pprint(p1) diff(p1, x) integrate(p1, x) diff(p1, x, 2) integrate(p1, (x, 1, 2)) diff(p1 * p2 * p3, x) integrate(cos(x), x) _.expand() integrate(sin(x), (x, 0, pi)) diff(p1 * p2 * p3, x, 14) diff(p1*exp(3*x), x) _.expand()

SymPy, Taylor SymPy, da obrišemo funkciju

sin(x).series(x, 0, 10) series(sin(x), x, 0, 10) f series? del f series(sin(x), x, 1, 10) f = Function(’f’) series(exp(x), x, 0, 5) f series(exp(x), x, 5, 5) source(series)

SymPy, diferencijalne jednačine SymPy, diferencijalne jednačine, provera deq = Eq(f(t).diff(t, 2) - 4 * f(t), - 4 * exp(-2*t)) trigonometrijske funkcije kao rešenje deq deq.lhs f(t).diff(t, 2) + 4 * f(t) deq.rhs dsolve(_, f(t)) sol = dsolve(deq, f(t)) f(t).diff(t, 2) + 4 * f(t) - 24 * cos(4*t) sol dsolve(_, f(t)) sol.lhs sol.rhs i eksponencijalne . . . s = sol.rhs s f(x).diff(x, 2) - 4 * f(x) ver = deq.subs(f(t), s) dsolve(_, f(x)) ver Eq(f(x).diff(x, 2) - 4 * f(x), - 4 * exp(- 2 * x)) ver = ver.doit() dsolve(_, f(x)) ver ver.lhs.expand() ver.rhs ver.expand() SymPy: :, =, is() PSAE, šta nismo uradili, a trebalo je, t  (potrebnog)

I komandna linija, http://linuxcommand.org/tlcl.php I na kraju, a moglo je i na početku . . . I regular expressions, Charles Severance, video

Maxima vs. SymPy objašnjenje I detaljnije Code::Blocks ili neki drugi IDE : je = dodela vrednosti I Eclipse http://www.eclipse.org/ is() je == logički operator ukratko LibreOffice, više pravila pisanja = je Eq(*, *) deklarisanje jednakosti I I malo više vremena za Octave, ipak je jako dobar program makar malo vremena za SciLab, Xcos pre svega I očigledno postoji potreba za različitim = I malo vremena za GIMP, mada nije problem in SymPy: I I malo vremena za Inkscape, ovo je veći problem

x**4 = 1 # error I Qucs http://qucs.sourceforge.net/ x**4 == 1 # poređenje Ngspice http://ngspice.sourceforge.net/ Eq(x**4, 1) # jednakost, jednačina I solve(_, x) # koja može da se reši I moj izbor: julia i sage I ovo je samo početak, mada je za sada . . .

—KRAJ—