0% found this document useful (0 votes)
119 views78 pages

Psae 2018 Book

psae

Uploaded by

miroljub
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
119 views78 pages

Psae 2018 Book

psae

Uploaded by

miroljub
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 78

PRAKTIKUM IZ SOFTVERSKIH

ALATA U ELEKTRONICI
2018/2019

Predrag Pejović

12.01.2019, 13:26


c 2019 Predrag Pejović,
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Linkovi na primere:
OS: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-3-2018.zip

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

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

LATEX 3: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-6-2018.zip

GNU Octave: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-8-2018.zip

gnuplot: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-10-2018.zip

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

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

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

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

SymPy: http://tnt.etf.bg.ac.rs/~oe4sae/prim-sympy.py

SymPy-DEq: http://tnt.etf.bg.ac.rs/~oe4sae/prim-sympy-dj.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
2018 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 su slobodan softver (free
software), 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/Linux, 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 C program . . . (≈ 1 w)
I srpski, kraća verzija 4. LATEX 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
I troškovi (i ne samo to! ↓) I mnogo manje komunikacije između korisnika
I navike i zavisnost I okruženje bilo uglavnom naučno ili visoko poslovno
I problemi sa proprietary formatima (primer: bas bih voleo opet
I poslovne primene uz razvoj sopstvenih programa,
da procitam svoj doktorat u elektronskoj formi)
I bezbednost podataka! custom design
I način naplate . . . I dominantna zaštita poslovna tajna
I opravdanost naplate . . .
I free (slobodni) software?
I ogromne mogućnosti, pps, strahovito brz razvoj
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)
I PC revolucija (prošla; prošla?) proizvoda 1
I jeftino, dostupno, (modularno (?)) I značajni troškovi razvoja
I sklopivo, prilagodljivo korisniku (?) I proizvod se upotrebom ne troši, traje
I izaberete komponente (?), sklopite računar (?), šta dalje? I potražnja se spontano ne obnavlja
I softver postao zasebna komponenta računara, posebno se I za zaradu neophodan novi razvoj ili vremenski ograničena
kupuje (upravo ovde priča počinje . . . )
licenca
I operativni sistem, početak I misaoni eksperiment: softver koji se kvari
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 I kako organizovati proizvodnju da bi se ostvario profit?
rezultat: monopoli i „verski ratovi“
I ideologizacija i manipulacija . . . I karakteristike veoma slične stvaralaštvu u nauci, oblast slična
I http://en.wikipedia.org/wiki/Samizdat: matematici . . .
_And_Other_Issues_Regarding_the_%27Source%27_of_ I postoje programeri koji vole da programiraju . . .
Open_Source_Code I . . . dok ne dodje GUI!

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


proizvoda 2
(navedene osobine se uglavnom odnose na softver, manje na ostale pokušaj da ideje dobiju tretman materijalnih objekata, a time i svog
intelektualne proizvode) vlasnika
I ogroman komercijalni potencijal
I potencijal za stvaranje zavisnosti (izuzetno opasno!)
forme “intelektualne svojine”:
I potencijal za uslovljavanje
I problemi vezani za privatnost
1. copyright
I primeri:
I Phil Zimmerman, Boulder, CO, 1991, PGP
2. patent
I Mark Shuttleworth (1973), Thawte, digital certificates and 3. trade secret
Internet security
I Mark Shuttleworth, Canonical, 2004, biće još reči . . .
bitno se razlikuju!!!
I sjajna osnova za izgradnju “social machinery” ni oko čega . . .
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 traje dok traje tajna I Free Software
I nikog ne sprečava da otkrije isto I Open Source Software
I zaštita kroz NDA I Freeware
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 free as in free speech, not free beer (slobodan / besplatan) I neprijatelji? brojni!
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 source code I poslovni modeli?
I Freedom 2: da se distribuiraju kopije programa
I Freedom 3: da se distribuiraju modifikovane verzije
I „pustite nas da radimo!“
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,
I FSFE, http://fsfe.org/ jako malo free software
I osim praktičnih, pokreću i etička pitanja

Podela softvera Open Source Software

I Bruce Perens i Eric Steven Raymond (ESR)


I free software (slobodni softver) I “The Cathedral and the Bazaar”
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 I ideja: popraviti marketing (ne zamerati se)
primeri licenci: GNU GPL (GNU/Linux) i
BSD (BSD, Python, Spice) I podržao Linus Torvalds
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
I software!!!
izvorni kod obično nije dostupan, poslovna tajna
I korisnik baš i ne zna šta program radi na njegovom računaru Primer: FFTW
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
I obično služi za promociju programa
ž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, UNIX (i C)

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


I recursive acronym, GNU’s Not Unix I 1969, AT&T, Ken Thompson, Dennis Ritchie, Brian
I da bude i ostane free Kernighan, Douglas McIlroy, and Joe Ossanna
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 Unix philosophy
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 operating system, 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
I Understanding Open Source and Free Software Licensing 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.
All rights reserved.
I BSD License, permissive free software license
Permission is hereby granted, without written agreement and without license or royalty fees, to use,
I MIT License copy, modify, and distribute this software and its documentation for any purpose, provided that the
above copyright notice and the following two paragraphs appear in all copies of this software.
I dvojno licenciranje moguće, FFTW
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
I CeCILL DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
I http://www.gnu.org/licenses/license-list.html 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) <year> <copyright holders> I Copyleft: “all rights reversed” ili “all wrongs reversed” ili “some
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
wrongs reversed”
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
A šta je sa hardverom? Cloud?

I „otvoreni hardver“
I Arduino: Creative Commons Attribution Share-Alike License
I There is no cloud: it’s just someone else’s computer!
I Who does that server really serve?
I . . . kao i niz GPL licenci . . .
I baš dobar koncept: ni softver ni vaši podaci nisu kod vas
I Interaction Design Institute Ivrea, 2001-2005
I stvara se zavisnost
I ozbiljna igra: RISC-V, UC Berkeley, Krste Asanović
I nekome se isplati: isplati li se vama?
I BSD licenca
I Service as a Software Substitute (SaaSS)
I SiFive
I svakako aktuelna tema . . .
I . . . upravo se događa, biće o ovome priče 13.10.2018, Vlada
Milovanović, radio sa Borom Nikolićem . . .
I reakcija ARM-a

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 LATEX
I Q: koliko ljudi za računarom?
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)
I GIMP, ImageMagick 3. programiranje 1/3 (ispit)

I LibreCAD I ne traži se memorisanje, već snalaženje


I Asymptote I na kolokvijumu/ispitu jedino nije dozvoljena saradnja među
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)
I KiCad 3. Python (50) + PyLab (50) + SymPy (30, bonus)

I R I otvoreno za primedbe i sugestije (do određene granice) . . .


I Julia
I SageMath . . .

Linkovi . . .

HONOR CODE
sajt predmeta: CERTIFICATE
Jerry Cooperstein, Ph. D.
Training Program Director
The Linux Foundation

http://tnt.etf.bg.ac.rs/~oe4sae/
Clyde Seepersad
General Manager, Training

Predrag Pejovic
The Linux Foundation

successfully completed and received a passing grade in


edX Linux kurs (bez programa koje obrađuje PSAE):
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.

H O NO R CO D E C E RTI F ICATE 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:
I Ubuntu
— part 1 — 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 desktop, server, Kubuntu, Xubuntu, Lubuntu, Edubuntu, I kod windows samo win
Ubuntu GNOME, Ubuntu MATE . . . menja se . . . I duga istorija pre toga, Xerox, Apple, . . .
(Gnubuntu, Ubuntu-libre, Gobuntu)
I kod GNU/Linux mnoštvo desktop environment mogućnosti
I dnload, narezati DVD ili napraviti USB startup disk
I popularni GNOME, KDE, Xfce, LXDE, MATE, Cinnamon, do
I narezati? InfraRecorder, http://infrarecorder.org/,
skoro Unity . . .
GPLv3
I svaki od desktop environments ima svoje motive, istoriju,
I pre instalacije PROBATI, live DVD, live USB disk, “live
izgled, . . . HIG
medium”
I na kraju sve skoro isto, ali treba vremena da se to shvati . . .
I može da se napravi USB startup disk, uputstvo . . .
I možete da instalirate i štošta drugo: GNOME, MATE,
I Ubuntu, instalacije
Cinnamon, Cairo, . . .
I samo Ubuntu
I dual boot (dva diska? pazite!) I sjajna zabava kada imate višak vremena
I wubi, inside windows, prošlost?
I VirtualBox, iso file, + some proprietary drivers . . .

setting up the system . . . desktop environment . . . DEFAULT!

I instalira se operativni sistem . . . I zašto default?


I . . . proprietary drivers (uglavnom graphichs i wlan) . . . I insistiramo na defaults
I . . . proprietary codecs . . . ogg? http://xiph.org/ I customize sami . . . na SVOM nalogu i/ili računaru
I ubuntu-restricted-extras
I pitanje pristojnosti . . .
I programi se instaliraju iz repository . . .
I do sada nije bilo problema . . .
I za instalaciju potreban jedan disk ili USB flash drive i Internet
I svoje podatke ponesite na USB flash drive . . . ako su vam
I za probu sjajno ako imate stari racunar/laptop
važni
I moje iskustvo sa instalacijama . . .
I ne ostavljajte podatke na racunaru, počistite . . .
I a sada pretpostavimo da je sistem instaliran . . .
I rekoh, pitanje pristojnosti . . .

desktop environment . . . launcher . . .

I sistem boot-ovan I levi bar


I let’s log in . . . I pokreće (lansira) aplikacije
I launcher (application switcher) (jedina customization koju sam I ostale aplikacije se dodaju (Add to Favorites) ili uklanjaju
radio u odnosu na default, amazon out!) (Remove from Favorites), desno dugme miša
I top menu bar I ostalim aplikacijama se lako menja redosled
I indicators . . . I aplikacija se pokrece sa single click
I activities . . . I pokrenuta aplikacija: tačka (puna)
I applications . . . I vežba: Octave, 2 + 2
I vežba: wxMaxima x 2 dx
R
I Desktop
Show Applications vežba . . .
I start Software Updater
I update
I start Ubuntu Software Center
I install GeoGebra
I pretražuje računar, i applications i files
I run GeoGebra
I pokreće se sa single click dole levo
I ne radi? uninstall!
I Frequent / All
I sajt, download, classic 6, install, radi!
I name search
I nacrtajte elipsu i još ponešto
I Add to Favorites
I Remove from Favorites
I pokrenete wxMaxima
I primer na wxMaxima . . .
I Alt-Tab menja aplikacije

top menu bar . . . system settings . . .

I levo, Activities
I sredina, time/date, notifications
I desno, system status and parameters I System Settings
I sound I pogledati Details
I Internet connection I u 18 ne menjati System Settings!
I keyboard switcher I rekoh, pitanje pristojnosti!
I settings
I lock, probati lock
I ...

razlike . . . Files . . .

I različiti desktop environments imaju različite nazive i različit I obično prva ikona, mada ne mora
raspored komandi
I ime sve kaže
I primer: Linux Mint na Električnim merenjima
I dva prozora (taba), ctrl-t, može i više
I ipak, ista funkcionalnost se ostvaruje
I gase se klikom (desno je x, levo je ime)
I potrebno kratko navikavanje i povremena potraga da se nešto
I full path ctrl-l, izlaz sa esc
pronađe
I ovo je otprilike sve za početak . . .
I pitanje ukusa o kojima nema smisla raspravljati . . .

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

I Home Folder (Home Directory), ima svaki korisnik


I Ctrl/l, full path, Location, wheel-button
I updated?
I subfolders, create your folder
I Octave, plot x 2 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, b=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, tty1 do tty6, neki je vaš prozor sada je I cal -help
to F2 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 544 strane!
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, cp, 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 . . .

cat, 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 rm 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 . . .

I update
operativni sistem 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;
I dopunite octave, modul octave-control ovo pravi probleme kod kopiranja na USB flash,
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, redirekcija, cat, tac, head, tail, more, less . . .
cd . . .
I pwd (koristite često da bi znali gde ste!) I ls -lht /usr/bin >usrbin1.lst
I mkdir <ime> I ls /usr/bin >usrbin2.lst
I ls I ls -lht >ls.lst
I cd <ime> I ls
I pwd I cat usrbin1.lst
I ls 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 ~/<ime>
I more usrbin3.lst
I cd
I less usrbin3.lst
I cd <ime>
I pwd

pipe, grep . . . 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
I View, Highlight Mode, sh ls -lh >ls.lst
↑ podešava context highlighting mkdir lst
mv usrbin1.lst lst
I scripts su obično sa ekstenzijom 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 <code> <file_name>
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 tripleti rwx rwx rwx I chmod {u|g|o}{+|-}{r|w|x} <file_name>
|{z} |{z} |{z}
user group other
I chmod u-w radi
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 #!
I promenite u argumenti0.sh prvi red u
#! /bin/bash
#! /bin/sh
echo $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
I file argumenti0a.sh
sh argumenti0.sh d e
bash argumenti0.sh I file argumenti0b.sh
./argumenti0.sh I file argumenti0c.sh
shell? malo istorije (za zainteresovane) . . . script file 4

gedit argumenti1.sh

I https://en.wikipedia.org/wiki/Unix_shell #! /bin/bash
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
I https: echo 2
//en.wikipedia.org/wiki/Bash_%28Unix_shell%29 echo $2
echo 3
I i jedna knjiga:
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 python, imate li instaliran python koji nije python3?


I cd lst I ako nemate, instalirajte, snađite se!
I ls I za ovaj primer razlika je samo u ()
I ls -1
I rm -i * #! /usr/bin/python
I ls print
I cd .. print ’Hello World!’
I rmdir lst print
print ’MPFC’
print
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
I ls -lhtr for i in range(n):
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)
I izračuna faktorijel i javi rezultat u formi m! = n
i = 2
print repr(i).rjust(3) + ’ ’ + repr(b).rjust(10) I gedit faktorijel.c
I pišete program . . .
for i in range(2,n):
a, b = b, a + b
print repr(i+1).rjust(3) + ’ ’ + repr(b).rjust(10)

print 16 * ’-’

jedan C program . . . GCC, prevođenje

#include <stdio.h>

int main()
{
int i, n, f; I gcc -o faktorijel faktorijel.c
I ls -lh
printf("\nargument = "); I zeleni faktorijel?
scanf("%d", &n);
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 <stdio.h> 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
LATEX I Donald Knuth,
— I deo — http://en.wikipedia.org/wiki/Donald_Knuth,
70’s, 1978 tačno
I Free/Open-Source Software (FOSS)
I standard za slaganje teksta, posebno naučnog, knjige, formule,
import slika, čak i crtanje . . .
I Computer Modern family of fonts,
http://en.wikipedia.org/wiki/Computer_Modern
I može sve da se uradi, ali ponekad previše slobode škodi, . . .

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štinski, lako se uči
system for the TeX typesetting program“ I zaista daje kvalitetan izgled dokumenata
I Markup? Lako ćete naučiti html ako znate LATEX! I platforme na kojima je implementiran uglavnom free software
I Leslie Lamport, I sve što je potrebno postoji kao free software
http://en.wikipedia.org/wiki/Leslie_Lamport, 80’s I a potrebno je:
I LATEX je ono što se svakodnevno koristi I editor teksta
I ima još „nadogradnji“, LyX I LATEX 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

I “How LATEX changed the face of Mathematics”, an E-interview


Even if there were some point to teaching kids such an esoteric
with Leslie Lamport, the author of LATEX
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 use—if 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
Q: Three LATEX mistakes that people should stop making? I neki free, neki ne
I koncentrišemo se na free, samo njih ćemo obraditi
A:
I može bilo kakav editor, čak i gedit ima context highlighting za
1. Worrying too much about formatting and not enough about
TEX, počećemo sa njim
content.
I komforniji za rad su specijalizovani editori, nalik na IDE za
2. Worrying too much about formatting and not enough about
programanje
content.
I od specijalizovanih, Texmaker, moj izbor, jako napredovao,
3. Worrying too much about formatting and not enough about
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š . . .


I dvi može da se gleda i štampa, 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že da se konvertuje u razne druge formate korišćenjem free
latex <fname> software
ili I dvips konvertuje dvi u ps
latex <fname>.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
I ...
pdflatex <fname>
ili I pravilo: što manje konverzija — to bolje
pdflatex <fname>.tex

LATEX osobine LATEX resursi

I obeležen tekst (markup language)


I obeležavanjem se označava šta sa pojedinim delovima teksta I puno resursa na www, Google your problem
treba raditi, šta je naslov, šta je naslov poglavlja, šta je I http://www.tug.org/
numerisana lista, šta je nenumerisana lista, šta je jednačina . . . I http://www.tug.org/ctan.html
I potrebno poznavati „komande“ I http://www.andy-roberts.net/misc/latex/
I LATEX „težak“ za „prosečnog“ 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žen) tekst

LATEX resursi LATEX resursi

I pod lin sve već imate u repository, dovučete Texmaker i to je


I pod win: to?
I http://miktex.org/ I ne bas, ponekad mora još nesto da se dodovuče, Synaptic
I http://www.ghostscript.com/ ili
I bitno je da vam je mreža pri ruci ako nemate sredenu mašinu
http://pages.cs.wisc.edu/~ghost/
I možda 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še voli: http://projects.gnome.org/evince/ I po mom ukusu: http://www.ctan.org/tex-archive/
I http://www.texniccenter.org/
I ili (po mom ukusu): http://www.xm1math.net/texmaker/
info/lshort/english/lshort.pdf, 171 strana
I čitati uputstvo?
I ako baš mora; bolji hands-on approach!

„A sada, svi na svoje radne zadatke!“ primer 1, da počnemo

gedit, View, Highlight Mode, LaTeX


Ako hoćete da imate ikakve koristi od ovog časa:
1. unosite primere svojeručno gedit p1.tex
2. radite i koncentrišite se na to što 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će problema sa ’ i još \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škama)
I pogledate pdf file sa evince p1.pdf Prva proba za \LaTeX.
I ovaj prozor možete da ostavite, automatski refresh (pod lin,
doduše) Šta će biti kada se pojave naši znaci?
I ovako ćemo 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. Šta će biti kada se pojave naši znaci?

Šta će biti kada se pojave naši znaci? Mo\v{z}e ovako: \v{S}ta \’{c}e biti kada
se pojave na\v{s}i znaci?
\end{document}
\end{document}

značenje Tab i Enter primer 5, sreden input encoding

\documentclass{minimal}

I Tab služi 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šte
I jedan Enter je separator kao space Prva proba za \LaTeX.
I služi da se pregledno formatira “source”
I nov paragraf je prazan red, dva Enter Šta će biti kada se pojave naši znaci?
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}
\begin{document} \usepackage[T1]{fontenc}

\begin{document}
Prva proba za \LaTeX.
Prva proba za \LaTeX.
Šta će biti kada se pojave naši znaci?
Šta će biti kada se pojave naši znaci?
A ostaje i: \v{S}ta \’{c}e biti kada se pojave
na\v{s}i znaci? A ostaje i: \v{S}ta \’{c}e biti kada se pojave
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že 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že 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ženje, Texmaker \usepackage[utf8]{inputenc}
I pogledati Tools \usepackage[T1]{fontenc}

I PDFLaTeX je F6 \begin{document}

I View PDF je F7 Prva proba za \LaTeX.


I LaTeX je F2 Šta će biti kada se pojave naši znaci?
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, spell 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}

Šta će biti kada se pojave naši znaci? 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će se videti u dokumentu

\begin{document} ako treba u tekstu \% on se piše kao \textbackslash\%.

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

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

Данас jе \today. ima toga još: \$ \_ \& \pounds{} \copyright{}


\textless{} \textbar{} \textgreater{}
\end{document}
\end{document}
primer 13, okruženje verbatim primer 14, noindent

\documentclass{minimal}
\begin{document}
\usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc} Jош мало форматирања. Обрадили смо \verb+\bigskip+.
\usepackage[serbian]{babel}
Da vidimo šta radi \verb|\noindent|.
\begin{document}
\bigskip
Дођосмо до окружења. Прво радим окружење \verb-verbatim-
\noindent Ima \verb|\noindent|.
\begin{verbatim}
Nema \verb|\noindent|.
Ovde možete kucati šta god hoćete.
И како год хоћете. \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čka \item prva tačka
\item druga tačka \item druga tačka
\item treća tačka \item treća tačka
\end{itemize} \end{itemize}

Ovo baš i neće valjati. Ovo će valjati.

\end{document} \end{document}

primer 17, enumerate primer 18, veličina 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će! \\


Нумерисане листе су следећа тема. \huge Ali ovo hoće! \\
\LARGE Ali ovo hoće! \\
\begin{enumerate} \Large Ali ovo hoće! \\
\item prva tačka \large Ali ovo hoće! \\
\item druga tačka \normalsize Ali ovo hoće! \\
\item treća tačka \small Ali ovo hoće! \\
\end{enumerate} \footnotesize Ali ovo hoće! \\
\scriptsize Ali ovo hoće! \\
\end{document} \tiny Ali ovo hoće!

\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će! \\ \small \verb|\small| \\
\normalsize Ali ovo hoće! \\ \footnotesize \verb|\footnotesize| \\
\tiny Ali ovo hoće! \scriptsize \verb|\scriptsize| \\
\tiny \verb|\tiny| \\
\end{document}
\end{document}
primer 21: još malo o fontovima i pravim primer 22: gore, dole, levo, desno
tabelama
\begin{document} \documentclass[a4paper,12pt]{article}

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

\end{document}
početak, zagrevanje
I update
I da napravimo jednu sliku . . .
I gnuplot sa komandne linije
LATEX I set terminal pdfcairo
— II deo — I set output "slika.pdf"
I set output
I plot sin(x)
I set terminal epscairo
I set output "slika.ps"
I plot sin(x)
I set output
I Ctrl/d
I pogledajte slika.pdf i slika.ps

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ć}
\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 što rekoh, prvi pododeljak.
* znači da se ne numeriše.
\subsection{Drugi pododeljak}
\section{Uvod} Kao što rekoh, drugi pododeljak.

U uvodu se piše šta se radi i zašto. \section{Centralni deo 2}


Važan deo uvoda je i pregled postojećih rezultata,
to pomaže da se objasni zašto se nešto radi. Nastavljamo sa izlaganjem \ldots

primer a, struktura dokumenta, 4 šta je cilj primera?

I kako se automatski pravi naslov


\section{Zaključak}
I boldujte naslov, \textbf{...}, radi
U zaključku se rezimira šta je uradeno i kako. I obrisite datum, \date{}
Poneko voli i da kaže šta bi još moglo da se uradi.
I struktura dokumenta, numerisanje odeljaka
\section*{Literatura} I preglednost dokumenta, bilo gde nov red
Ovaj odeljak se obično ne numeriše,
I prazan red znači nov paragraf
ali referenciranje je baš duga priča. 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že (prva strana ili bilo koja specifična strana)

\thispagestyle{empty}
\title{\LARGE
\textbf{Primer jednog struktuiranog dokumenta}} što je važno kada automatski generiše naslov
\author{\textsl{Predrag Pejović}}
\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š malo environments, 1 primer d, još malo environments, 2

\begin{document}
\begin{document}
\begin{Huge}
\begin{center} \begin{flushleft}
Ovde su centrirana velika slova. Ovaj environment (okruženje) 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 čitljiviji
\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š malo environments, 3 primer f, malo o razmacima

\documentclass[12pt, a4paper]{article}

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

\begin{document}
\begin{description}
\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ći] je u ovom slučaju poslednji Mi smo na ETF\@. Nismo na ETH. % dodaje razmak
\end{description}
\bigskip

\end{document} Ono je Prof. Davić.

Ono je Prof.\ Davić. % smanjuje razmak

\end{document}
primer g, još malo o razmacima primer h, jednačine, stilovi i subscript

\documentclass[12pt, a4paper]{article}
\usepackage[utf8]{inputenc} \begin{document}
\usepackage[T1, T2A]{fontenc}
Numerisana jednačina:
\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že biti i u tekstu $i_{123} = i_1 + i_{2} + i_3$

Ono je Prof. Davić. može i ovako $$ i_{123} = i_1 + i_{2} + i_3 $$


mada nije po standardu!
Ono je Prof.\ Davić.
\end{document}
\end{document}

primer h, jednačine, superscript i grčka slova primer h, označavanje objekata

Neka je
\begin{equation}\label{prva}
Leonard Ojler je mnogo voleo jednačinu 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čka slova su: $\alpha, \beta, \gamma, \delta, \end{equation}
\ldots \omega$. Sada se treba pozivati na jednаčinu (\ref{prva}) i
Velika grčka slova su: $\Gamma, \Delta, \ldots \Omega$. jednačinu (\ref{druga}).
Svaki pristojan quick reference ima tabelu.
Većina editora, takode. Dobra praksa je da se u \label piše i tip objekta, da se ne pojave slika, tabela
i/ili jednačina 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će: $\int_{-\infty}^{\infty}{p(x) \, dx} = 1$.


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

Razmaci:
\bigskip
$ab$
Razlomci: $\frac{1}{2}$, $\displaystyle \frac{1}{2}$,
$\frac{a}{b}$, $\frac{a+c}{b}$, može i $1/2$, a može i $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šu u plain fontu (ima i priča oko razmaka), dosta ih je
Malo o zagradama: uneto i počinju 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š malo: \[ \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š malo:
\[ k \in \left\{1, 2, \ldots n \right\} \]
primer h, jednačine sa matricama primer h, jedinice mere, plain font, amsmath, text
\usepackage[greek, serbian]{babel}

\noindent Jedinice mere se pišu u plain fontu, \\


Matrice u jednačinama: 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čkim slovima, mnogi rade:
%
\[ C=100 \, \mu\text{F} \] % namerno je oko = ovako
\[ t_0= 1 \, \mu\text{s} \] % namerno je oko = ovako

primer h, jedinice mere, upgreek primer h, matrice

\usepackage{upgreek}
Matrice:
\[ \det
\[ C = 100 \, \mu\text{F} \] \begin{bmatrix}
\[ t_0=1 \, \mu\text{s} \] a & b \\
c & d \\
\[ C=100 \, \mbox{\textgreek{m}}\text{F} \] \end{bmatrix}
\[ t_0 = 1\,\text{\textgreek{m}s} \] = a d - b c \]

Pogledajte još i okruženja: matrix i pmatrix.


\[ C = 100 \, \upmu \text{F} \]
\[ t_0 = 1 \, \upmu \text{s} \]
priprema slika
I vektorska i rasterska grafika, Wikipedia
I za crteže prednost ima vektorska grafika
LATEX I formati od interesa dvi, ps, eps (za latex) i pdf (za pdflatex)
— III deo — I od značaja još 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š
I nekih od ovih programa mozda nema instaliranih na sistemu,
instalirati
I od značaja:
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š malo o grafičkim formatima . . . sin in gnuplot, po ko zna koji put, ako već nemate
sliku . . .
I https:
//en.wikipedia.org/wiki/Comparison_of_graphics_file_formats I komandna linija
I https://en.wikipedia.org/wiki/Device_independent_file_format
I gnuplot
I https://en.wikipedia.org/wiki/PostScript
I set terminal pdfcairo
I https://en.wikipedia.org/wiki/Encapsulated_PostScript
I https://en.wikipedia.org/wiki/Portable_Document_Format
I set output "slika.pdf"
I https://en.wikipedia.org/wiki/JPEG I plot sin(x)
I https://en.wikipedia.org/wiki/Portable_Network_Graphics I set output
I https://en.wikipedia.org/wiki/GIF I set terminal epscairo
I https://en.wikipedia.org/wiki/Scalable_Vector_Graphics I set output "sin.eps"
I sa gubicima (jpg), manji file, jača kompresija! I replot
I bez gubitaka (png, gif)
I set output
I proprietary versus free
I Ctrl/d

slike i konverzije primer, unošenje slika, pdflatex


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

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


I evince sin-crop.pdf
Ovde ćemo ubaciti jednu sliku, sliku \ref{slika:sinus}.
I nešto je uradeno, ali ne valja, nema ticks
I rm sin.pdf \begin{figure}[h!]
\centering
I epstopdf sin.eps \includegraphics{sin.pdf}
I evince sin.pdf
\caption{Funkcija $\sin \left( x \right)$}
I to je to \label{slika:sinus}
\end{figure}
I pokušaji nisu bili besmisleni, videćete smisao kod šema
\end{document}

komande za procesiranje i formati slika primer, unošenje slika, latex


\documentclass[12pt,a4paper]{article}
I F6, ⇔ pdflatex
\usepackage{graphicx} % package za unosenje slika
I F7, display pdf \usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
I prvi prolaz, ??, još nije pohvatao refs
\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 ćemo ubaciti 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šenje slika, scaling primer, unošenje 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 ćemo ubaciti jednu sliku, sliku \ref{slika:sinus}. Ovde ćemo ubaciti 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šenje slika, position primer, unošenje 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 ćemo ubaciti 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šenje tabela, centriranje primer, unošenje 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čnih šema
I dominantan gde je od značaja izgled
I može da crta i lakše tehničke crteže
I još mnogo toga se može uraditi sa tabelama I malo neobičan interface
I korisno: I malo neobična instalacija, synaptic potreban
http://www.tex.uniyar.ac.ru/doc/tableTricks.pdf I pravi PostScript files i sve radi na tom nivou
I nije loše imati gornji pdf kod sebe, 14 strana samo I konvrzija u pdf sa epstopdf,
I pitanja stila, obratite pažnju, kod nas sve tabele kao rešetke, fajl koji pravi XCircuit je .eps iako je ekstenzija .ps
pogledajte šta drugi rade, često samo tanke horizontalne linije I postoji i ps2pdf, razlike . . .
I moguće je uneti i LATEX lettering
I pokreće se iz komandne linije sa xcircuit
I manual: http://opencircuitdesign.com/xcircuit/
I mora da se pokaže, da probate, nezgodno za opis rečima, . . .
I radimo primer zajedno, posle vi sami, ja pomažem!
zadatak: nacrtati i importovati u pdflatex LATEX lettering, nacrtati i importovati u pdflatex

+VCC +VCC

R2 RC R2 RC
CC CC
vOUT vOUT
CB CB
Q Q
ROUT ROUT
+ v +
− IN − 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}
I latex ce2
\usepackage{graphicx}
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
I do sada je isto kao pre, imamo ps file na celoj strani; # make figure
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, čišćenje 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žno!


LAT I praktično standardizovan format
EX
I najčešće se lista referenci ureduje po redosledu pozivanja
— IV deo —
I poziv na referencu je broj u uglastoj zagradi, npr. [1]
Referenciranje i Beamer
I u posebnom odeljku (section) „Literatura“ (“References”) mora
biti navedeno šta je [1]
I potrebno je navesti sve podatke kako bi citirana referenca
mogla biti jednoznačno odredena
I često časopisi specificiraju strog format reference
I poseban format za knjige, radove u časopisima i radove na
konferencijama

Referenciranje u LATEX-u standardna preambula

\documentclass[a4paper,12pt]{article}

\usepackage[T1, T2A]{fontenc}
I LATEX ima sistem za automatsko numerisanje referenci, \usepackage[utf8]{inputenc}
izuzetno važno u praksi, omogućava lake izmene dokumenta \usepackage[serbian]{babel}
I baza referenci važna stvar, LATEX ima nekoliko načina za unos
\usepackage{graphicx}
referenci; ovde samo najjednostavniji
\usepackage{amsmath}
I za pravljenje baze referenci pogledajte package BibTeX, jako \usepackage{xcolor}
korisno ako pišete neki veći rad
\usepackage[margin=2cm]{geometry}

\title{Referenciranje}
\author{Predrag Pejović}
\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
and nearly sinusoidal line currents,’’
\section{Uvod}
\emph{Proceedings of the Power Electronics
and Motion Control Conference},
Ovde ću citirati \cite{ND}. Budapest, 1990, pp.~374--378.

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

\end{document}

detalji, dashes A sada nešto važno . . .

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
Systems—Fundamental Theory and Applications
I “minus”, $-$, 3 − 2 = 1
I da ih uporedimo: -, –, —, −
I vidite li razlike?
beamer, uvod 1 beamer, resursi

I user guide, 247 strana,


I još jedna klasa dokumenata za LATEX
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žno!) http://www.informatik.
I nema ništa od proprietary formata uni-freiburg.de/~frank/ENG/latex-course/
I po svemu sudeći pdf će dugo moći da se čita, recycle stare latex-course-3/latex-course-3_en.html
prezentacije, . . . I preporučujem: http:
I Berkeley, EPFL, . . . //www.tug.org/pracjourn/2005-4/mertz/mertz.pdf,
I na „nemačkom“ je projektor beamer 17 strana
I Q: Kako to obično funkcioniše?
I nije jedino rešenje, ali ubedljivo najzastupljenije
I A: Primer koji vam se dopada dovučete 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čine
I ne treba graphicx
I slike
I ne treba xcolor, color, . . .
I boje
I dve kolone
I handouts
I „teme“
I nema previše alata za sakrivanje nedostatka sadržaja u
prezentaciji

napomena beamer, tipičan header

\documentclass{beamer}

% početak: može, ali ne mora


%\end{frame} \usetheme{default} % {Copenhagen} {Goettingen}
\setbeamercovered{transparent} % ovo je važno za dinamiku
\usecolortheme{default} % {seahorse}{rose}{wolverine}{infolines}
znаči:
% kraj: može, ali ne mora

\end{frame} \usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc}
dok se ne reši bug! \usepackage[serbian]{babel}

\usepackage{datetime}

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

beamer, naslov, prvi slajd, doradivaćemo dinamika običnog teksta

\section{dinamika običnog teksta}


\begin{document}
\begin{frame}{jednostavna dinamika}
\begin{frame}
\pause
\titlepage prva \\
\pause
%\end{frame} druga \\
\pause
\end{document} treća

%\end{frame}
složena dinamika itemized list

\section{itemized list} % nece se odmah videti


\begin{frame}{složena dinamika} \begin{frame}{nabrajanje}
\onslide<2->{prva}\\ \begin{itemize}
\onslide<3-3>{druga}\\ \item <2-> prva stavka
\onslide<2-2>{opet prva, kratko}\\ \item <3-> druga stavka
\onslide<4->{treća}\\ \item <4-> treća stavka
\item <2-> još jedna prva stavka
%\end{frame} \end{itemize}

%\end{frame}

hide-unhide za lenje

\begin{frame}{hide-unhide} \begin{frame}{za lenje}

\begin{itemize} \begin{itemize}
\item <2-2> prva stavka \item <+-> jedan
\item <3-3> druga stavka \item <+-> dva
\item <4-4> treća stavka \item <+-> tri
\end{itemize} \end{itemize}

%\end{frame} %\end{frame}

numerisane liste progresivno boldovanje

\section{enumerated list i jednačine}


\begin{frame}{progresivno boldovanje}
\begin{frame}{numerisana lista}
\begin{enumerate}
\begin{enumerate} \item \textbf<2->{prvi}
\item <2-> prvi \item \textbf<3->{drugi}
\item <3-> drugi \item \textbf<4->{treći}
\item <4-> treći \end{enumerate}
\end{enumerate}
%\end{frame}
%\end{frame}

jednačine potpuno sakrivanje


begin{frame}{malo matematike}
\begin{frame}{malo matematike, Pitagorin stil}
Pitagorina teorema glasi
\setbeamercovered{invisible}
Pitagorina teorema glasi
\pause
\pause
\bigskip \bigskip

$c^2 = a^2 + b^2$ $c^2 = a^2 + b^2$

\bigskip
\bigskip
\pause

\pause znate li dokaz?


\setbeamercovered{dynamic} % ili {transparent}
znate li dokaz?
%\end{frame}
%\end{frame}
detour: da napravimo sliku, ipython ubacivanje slike
komandna linija, terminal: \section{mogu slike}

\begin{frame}{slika}
ipython --pylab
dm = 360 \pause
deg = linspace(- dm, dm, 2 * dm + 1)
x = radians(deg - 45) često je potrebno ubaciti neku sliku, npr. png sliku
y = cos(x)
\pause
plot(x, y)
xlim(- 2 * pi, 2 * pi) \includegraphics[scale=0.35]{slika.png}
ylim(- 1.5, 1.5)
xlabel(’x’) \pause
ylabel(’y’)
što je odavno poznata funkcija

save, slika.png %\end{frame}

sakrivanje slike bojena slova

\section{boje}

\begin{frame}{slika} \begin{frame}{bojena slova}

\setbeamercovered{invisible} \begin{Large}
\textcolor{red}{crvena} \\
\onslide<2->{često je potrebno ubaciti neku sliku} \pause
\textcolor{blue}{plava} \\
\pause
\onslide<3->{\includegraphics[scale=0.3]{slika.png}} \textcolor{cyan}{kako se ova zove?} \\
\pause
\onslide<4->{što je odavno poznata funkcija} \textcolor{magenta}{a ova?} \\
\pause
\setbeamercovered{dynamic} \textcolor{yellow}{žuta} \\
\pause
%\end{frame} \textcolor{green}{zelena} \\
\end{Large}

%\end{frame}

bojena podloga u dve kolone

\section{dve kolone}
\beamertemplatesolidbackgroundcolor{teal!20}
\begin{frame}{dve kolone}
\begin{frame}{\textcolor{teal}{bojena pozadina}}
\begin{columns}[l]
\column{5cm}
\begin{Huge}
\onslide <2-> gore levo \\
\textcolor{teal}{sa tamnim slovima}
\onslide <3-> dole levo \\
\end{Huge}
\column{5cm}
%\end{frame}
\onslide <4-> gore desno \\
\onslide <5-> dole desno \\
\beamertemplatesolidbackgroundcolor{white}
\end{columns}

%\end{frame}

handouts teme

I „teme“, stilovi, . . .
I tema default na Goettingen
\documentclass[handout]{beamer}
I sections sada dobijaju smisao
rešava posao, ali krupno I tema na Copenhagen
\usepackage{pgfpages}
I zašto li je ovo popularno?
\pgfpagesuselayout{2 on 1}[a4paper, border shrink=5mm] I možete se igrati sa colortheme
\pgfpagesuselayout{4 on 1}[a4paper, landscape, border shrink=5mm]
\pgfpagesuselayout{8 on 1}[a4paper, border shrink=2mm]} I primeri: http://www.informatik.uni-freiburg.de/
~frank/ENG/latex-course/latex-course-3/
ima još puno toga, odlični web resursi! latex-course-3_en.html
I vodite računa o vremenu!
I ovo će biti deo (20%) drugog kolokvijuma!
Numerical Computation

I vrlo često u tehnici


GNU Octave
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, 16.12.2018:
I “Numerical computation and simulation with extended 2D/3D I GNU Octave
visualization.” I “General numerical computing package with lots of extension
I “Proprietary”
I 2014: “$2150 (commercial) / $99 (student)” modules. Syntax mostly compatible with MATLAB”
I “GPL”
I 2014: $300 manje nego pre tri godine, isto kao prošle i
I “Free”
pretprošle godine
I 2015: “$2650 (standard) / $625 (education)” I https://www.gnu.org/software/octave/
I 2017: “$2650 (standard) / $625 (education)”
I 2018: “$2150 (standard) / $500 (education) /
$149 (home) / $49 (student)
I osnovni tip podatka: n-dimenziona matrica
I extended 2D/3D visualization . . .

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


alternative . . .
I GNU/Linux, Ubuntu:
I repository, Ubuntu Software Center
I GNU Octave
I Scilab, još jedan Matlab-like, French . . . I Synaptic Package Manager
I search “octave”
I FreeMat (prilično neaktivan poslednjih godina) I toolboxes, dodatna dokumentacija, . . .
I Python, PyLab . . . prednosti modernog jezika I win:
I R, statistika I nije bio kao pod GNU/Linux
I ima toolboxes
I Julia, jako brzo, vrlo budućnost . . .
I sada jedino MXE builds:
I ... https://ftp.gnu.org/gnu/octave/windows/
prvo pokretanje grafike može dugo da traje, posle ok!
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
3/4
I tutorials na www, mnogo
3.0/4.0
I izbor linkova, http://tnt.etf.rs/~oe4sae/ 10/3
I napomena: GNU Octave 4.4.1, 1060 strane!!! -10/3
I GNU Octave 4.4.1, August 2018 2^3
I terminal, octave-cli, default je sada GUI! 3^2
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
I ver 3^640 # još nije Inf
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

save data data


sin, cos, sin2, cos2

0 clear all

data
-0.5
load data

data
-1
0 60 120 180 240 300 360
wt [deg] gedit data
linearne jednačine i još mnogo toga . . .

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

x +y =3 I GNU Octave je jako bogat funkcijama!


x −y =1 I Sjajan reference manual, 1060 strana!
I Ovo uputstvo će biti dopunjavano, proširivano . . .
a = [1, 1; 1, -1]
I Bar je takav bio plan . . .
b = [3; 1]
b = [3 1]’ I A sada? Koristi se, ali Python, Julia, . . .
a \ b # linear least squares I Mora da se predaje, Matlab je uzrok.
inv(a) * b I Mnogo toga ima, prioritet?
cond(a) # condition number I Od kada je ovaj predmet započet, 2010. godine, mnogo toga
rcond(a)
je nastalo!
rref(a) # reduced row echelon form
gnuplot gnuplot . . .

I dugovečan program (1986) za vizuelizaciju podataka, stalno


dogradivan
I ugraden u GNU Octave, Maxima, R, . . .
I crta podatke (iz fajla) i funkcije (analitički zadate)
I 2D i 3D, eksplicitno i parametarski
I Dekartov i polarni koordinatni sistem
I komandna linija, danas za većinu korisnika problem
I veoma kvalitetan izlaz
I razvija se: nove verzije, knjige . . .
I mnogima težak, mada je sve to ista stvar . . .
I vole ga statisticari i zainteresovani za advanced data analysis

. . . gnuplot . . . . . . gnuplot

I glavni izvor: http://www.gnuplot.info/


I program stabilan, sa mnogo korisnika, ima smisla učiti ga
I sada aktuelna verzija 5.2.2
I veoma puno resursa dostupno
I za win sada instalacija, . . .
I sjajna zbirka primera http://gnuplot.sourceforge.net/demo/
I uputstvo
I odaberete sta vam treba, preradite, brzo i efikasno, moj slučaj,
http://www.gnuplot.info/docs_5.2/Gnuplot_5.2.pdf,
Madrid . . .
271 strana
I alternative:
I pomoćni izvor: http://www.gnuplotting.org/
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: Academic: $599, Commercial:
I gnuplot Cookbook $899, Government: $799
I gnuplot 5
I imate neke primedbe na komandnu liniju?
I očigledno se pišu knjige na gnuplot temu . . .

gnuplot, alternative . . . gnuplot, za šta je dobar?

I jedna od GUI free alternativa SciDAVis (Python)


I jos poznati LabPlot, Grace, Veusz (Python)
I PyXPlot, vrlo slična sintaksa (Python)
I ...
I treba li vam išta od toga?
I ja mislim: ne
I lično iskustvo: što standardnije, to bolje
I lično iskustvo: što veća baza korisnika, to bolje
I slike se recikliraju . . .

gnuplot, za šta je dobar? gnuplot, za šta je dobar?


gnuplot, za šta je dobar? gnuplot, za šta je dobar?

gnuplot, za šta 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š 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 šta 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 šta 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 wxt, ja pišem za wxt, važi i na dalje I plot(deg,f)
I set terminal wxt 0 persist I fp=exp(-wt/2/pi*0.5);
I plot sin(x) I fm=-fp;
I set terminal wxt 1 persist I dat=[deg’ wt’ f’ fp’ fm’];
I plot cos(x) I save dat dat
I set terminal wxt 0 I exit ili ctrl-d (^D)
I show terminal I gedit dat
I reset I # znači komentar
I zapamtiti šta 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 šta
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"
I plot "dat" using 1:3 with lines linewidth 2 title "Vc", \ 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š terminala gnuplot, latex terminal

I set terminal png I napravite script sl4.gp


I set output "slika3.png" set terminal latex
I replot set output "sl4.tex"
set xrange [0:360*4]
I set terminal pdfcairo set xtics 180
I set output "slika3.pdf" set xlabel "$\\omega t \\; [^\\circ]$"
set ylabel "$v_C$"
I replot plot "dat" using 1:3 with lines linewidth 2 title "$v_C$", \
I set terminal jpeg "dat" using 1:4 with lines linetype 2 title "anv$_1$", \
"dat" using 1:5 with lines linetype 2 title "anv$_2$"
I set output "slika3.jpg"
I mora \\ umesto \ pošto je \ gnuplot znak za novi red
I replot
I može load "sl4.gp"
I set terminal wxt
I a može 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že Texmaker, a može i komandna linija pdflatex slika4, plot "dat" using 1:3 with lines linewidth 2 title "$v_C$", \
"dat" using 1:4 with lines linetype 2 title "anv$_1$", \
direktno u pdf
"dat" using 1:5 with lines linetype 2 title "anv$_2$"
I može 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že pdflatex slika5 !!!
I može da se „kropuje“, ps2eps -l slika4.ps,
I put do pdf na više načina
epstopdf slika4.eps
I može 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:

set terminal epslatex standalone color size 6, 6 #! /bin/sh


set output "mystery-curve.tex" gnuplot $1.gp
pdflatex $1.tex
set parametric rm -f $1.tex
set samples 10000 rm -f $1-inc*
set size square rm -f $1.aux
rm -f $1.log
set key off
unset xtics
unset ytics save it as gpmake.sh, just run it,
unset border
sh gpmake.sh mystery-curve
plot cos(t)+cos(6*t)/2+sin(14*t)/3, \
and look for the output
sin(t)+sin(6*t)/2+cos(14*t)/3 linewidth 4
. . . 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ćemo 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 wxt 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 wxt 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žniji 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čak: odaberete nekoliko terminala koji vas interesuju test
(epslatex, png, jpeg, postscript, pdfcairo), naviknete se set terminal pdfcairo
na značenje pojedinih parametara set output "test.pdf"
I kroz test se odlično vidi razlika izmedu vektorske i rasterske test
set terminal jpeg
grafike
set output "test.jpg"
test
set terminal wxt 0
set output
test

gnuplot, size, ratio gnuplot, wxt interactive commands

reset
set terminal wxt 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
set pm3d; replot
set pm3d at t; replot set isosamples 41
set pm3d at st; replot
set pm3d at b; replot set xlabel "x"
set xtics ("0" 0, "pi" pi)
set pm3d map; replot
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, planeta, 3D


| sin(z)| = | sin(x + iy)| set terminal wxt size 600,600 persist
1.6 1.6
unset key; unset border; unset tics
1.4 1.4
1.2 1.2 set lmargin screen 0.05; set bmargin screen 0.05
1 1 set rmargin screen 0.95; set tmargin screen 0.95
0.8 0.8
0.6 set mapping spherical
0.6
0.4 set angles degrees
0.2 0.4 set hidden3d
0 0.2 set xyplane at -1
0 set view 60, 120

set parametric
set isosamples 37
0 set urange[0:360]; set vrange[-90:90]
set size square
x 1
splot cos(v)*cos(u), cos(v)*sin(u), sin(v) w l lc rgb "cyan", \
π0 y "world_110m.txt" with lines lc rgb "blue" lw 2
gnuplot, planeta, 3D gnuplot, planeta, 2D
set terminal pdfcairo size 360 * 0.01, 180 * 0.01
set output "map.pdf"

unset key
unset border
unset tics

set style line 1 lc rgb "gray" lt 1 lw 1


set style line 2 lc rgb "black" lt 1 lw 1

set lmargin 0
set rmargin 1
set tmargin 1
set bmargin 0

set xrange [-180:180]


set yrange [-90:90]

plot "world_110m.txt" w filledcu ls 1, \


"world_110m.txt" w l ls 2

gnuplot, planeta, 2D gnuplot, zaključak


2 5
4.5
4
1
3.5
3


0 2.5
2
1.5
-1
1
0.5
-2 0
-2 -1 0 1 2
σ

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čke strasti, Maple vs. Mathematica
I Symbolic Math Toolbox (MATLAB), $3150 including required
Matlab
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š postoji
I http://maxima.sourceforge.net/ (sudo apt-get install xmaxima)
I zasnovana na MIT Macsyma, I sticajem okolnosti, koristićemo xmaxima i mi ove godine . . .
http://en.wikipedia.org/wiki/Macsyma I danas dominira GUI wxMaxima, Andrej Vodopivec
I William Frederick Schelter, GPL, DOE Macsyma 1982 I https://wxmaxima-developers.github.io/wxmaxima/
http://en.wikipedia.org/wiki/Bill_Schelter I wxMaxima može sve što može Maxima, nešto (ne sve) uneto
I star program, ali aktivno se razvija u GUI
I uključen u Scilab i Euler Math Toolbox I odlično radi i pod win
I uključen u SageMath, http://en.wikipedia.org/wiki/ I treba predavati u prvoj godini (jeretička misao)
Sage_(mathematics_software) I napomena: problemi pod nekim verzijama GNU/Linux!
I napredno: SageMath, http://www.sagemath.org/ I zato ćemo izbegavati veliku primenu i koristiti i xmaxima

Maxima, literatura Maxima, komandna linija

I da počnemo sa komandnom linijom


I http://maxima.sourceforge.net/documentation.html
I zašto?
I Maxima Reference Manual, ver. 5.42.0, 1196 strana
I 1. programiranje moguće; 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še je kucati komande
I film od 2h 9’ 9"(sedam delova), počinje sa
I maxima
http://www.youtube.com/watch?v=iqVWZcxAsrs
I izlazi se sa quit();

Maxima, komandna linija Maxima, komandna linija . . .

I %pi;
I čudna i česta 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, čak suprotno!
I %iˆ2;
I $ je kraj komande to supress output
I sqrt(-1);
I float(<izraz>); daje numerički izlaz
I sin(%pi/4);
simboli, brojevi, razlomci . . . problemi sa =, osnovna prepreka primeni
I 3/4;
I I = je = iz jednačine
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 I sqrt(a);
sin(2.0);
I I := je = iz definicije funkcije
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š jedna čudna 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že i remfunction(all);
I %; I values;
I %i2; I remvalue(a);
I a;
I %o2;
I a: 2;
I kod wxMaxima % može da vas prevari, vratićemo se na ovo,
I b: 3;
pazite!
I = je = iz jednačine, 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š o funkcijama i ev


I describe(kill);
I ? kill;
I a: 4;
I f(x) := xˆ2;
I b: 5;
I I a: xˆ2;
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čna 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 factor(%); I ex: (sˆ3+4*sˆ2+6*s+4)/(sˆ3+3*sˆ2+3*s+1);
I eq: expand((x-4)*(x-5)*(x-6)); I factor(ex);
I solve(eq, x); I partfrac(ex, s);
I factor(eq); I dobar TEK!
I factor(4*xˆ5-4*xˆ4-13*xˆ3+xˆ2-17*x+5); I expand(%);
I factor(1001); I ratsimp(%);
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čina 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čine 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čina 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čno množenje! 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 diff(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žba: nacrtajte sin(x) i razvoje reda 1, 3, 5 i 7 na istom
I integrate(sin(x), x, 0, %pi);
grafiku
I integrate(1/(1+xˆ2), x, 0, 1);

operator ’ uvod u diferencijalne jednačine

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 će biti potrebno kod diferencijalnih jednačina 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šenja, 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;
I s: rhs(s); ode2(eq1, y, t);
eq2: ’diff(y, t, 2) - 4 * y = 0;
I p: subst(s, y, eq);
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, mada ima problema ove godine
I odličan GUI, ali jedan od, ima ih više, npr. xmaxima I pogledate Cell meni
I razlike na komandnoj liniji skoro da nema I ćelije sa tekstom Ctrl+1 do Ctrl+4, valja komentarisati!
I komandu šaljete sa ctrl/Enter ili sa desnim Enter I pod win je ovo malo drugačije (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žno, 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šete ćelije sa c i b I dalje vežbate sami, ja pomažem, lista zadataka . . .
I %;
I pogledate okrečeni output, right click, Copy i Copy LaTeX

wxMaxima, zadaci 1 wxMaxima, zadaci 2

x
1. lim
1. rešiti jednačinu x 2 − 2x = 0 x→∞ x2 − 1
x
2. rešiti jednačinu ax 2 + 5bx − 2 = 0 2. lim 2
x→1 x − 1
3. rešiti sistem jednačina 2x − y − 1 = 0 i x + 2y + 4 = 0 3. naći prvi izvod y = xe x
4. nacrtati funkciju y = e x + 1 4. naći treći izvod y = x n e x
5. imaju li preseke krug x 2 + y 2 = 1 i prave (algebra + grafici) x2
5.1 x + y − 4 = 0 5. odrediti ekstreme i prevojne tačke funkcije y =
x −2
5.2 x + y − 1√= 0
5.3 x + y − 24 = 0 x2
6. nacrtati grafik funkcije y =
x −2

wxMaxima, zadaci 3 wxMaxima, zadaci 4

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

1
Z
I dx
1 1 + x2

ln2 x
Z
I dx
1 x2

wxMaxima, zadaci 5 wxMaxima, zadaci 6

cos 2x
Z
I 2
dx
2 dy
Z  x cos x 
sin I + y = cos(t)
x x 2 dt
I sin − cos dx
2 2 I odrediti konstantu rešenja tako da y (0) = 12
Z e 2
x +1 I napomene: koristiti subst i proveriti rešenje
I dx
2x dy
1
Z 9 I − 2y = −t 2
dt
I x sin x dx I odrediti konstantu rešenja tako da y (0) = 14
Z3 ∞
2 dy
I xe −x dx I + 2y = 2t
dt
Z0 ∞ I odrediti konstantu rešenja tako da y (0) = −1
2x
I dx
1 (1 + x 2 )2
Python?

I programski jezik
I Wikipedia:
I “Python is a general-purpose, high-level programming language
Python, I deo
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/Linux Python, kako nabaviti? win


GNU/Linux:
I već ima interpreter, sigurno
Windows:
I provera: komandna linija, python ili python3
I http://python.org/
Python 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
[GCC 7.3.0] 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://greenteapress.com/thinkpython/thinkpython.html
I verziju 3 učite lako I još mnogo free resursa, realno je samo #1 potrebno
I python3 I izbor izlistan na sajtu predmeta

Python 3.6.7 (default, Oct 22 2018, 11:32:17)


[GCC 8.2.0] 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, 11 MB I popularno . . .
I Python 2.7.15, January 02, 2019 I Edtitions:
I tutorial.pdf, Python Tutorial, 149 strana 1. Professional (proprietary!)
2. Community (“Open Source”)
I reference.pdf, The Python Language Reference, 136 strana
I ne koristim ga, nekompetentan za komentare
I library.pdf, The Python Library Reference, 1584 strane
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 ili ipython, 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, 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 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: Python, malo ozbiljnija matematika, moduli
kompleksni brojevi

j*j sin(1)
1j*1j import math
2J * 2J type(math)
type(1J) dir(math)
abs(3+4j) help(math)
complex(1,2) help(math.sin)
a = 2 + 3j math.sin(1)
type(a) math.e
a.real math.pi
a.imag math.sin(math.pi/2)
a.conjugate() math.exp(math.pi*1j)+1
a * a.conjugate() math.cos(math.pi) + 1j * math.sin(math.pi) + 1
del a
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) != "<type ’int’>":
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("<type ’int’>")

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

def parnost(n): def parnost(n):


if str(type(n)) != "<type ’int’>": 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, sort 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, “iterable”

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


I pokrenete IDLE
require any intelligence to carry out. They are mechanical processes
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, I start programa: Run Module (F5)
quite literally, require no intelligence.
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š mogućnosti, pogledajte Tutorial


postoji i formatiranje sa %, staro (next slide)
koristiti str.format() metod za nove programe!

Python, formatted print, stari sistem Python, stringovi, još ponešto

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če 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 što
reinvent

Python, OŠ, 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štampati LEPU (formatiranu) tablicu množenja f.write(’drugi red\n’)
f.write(’treci red\n’)
Polako, sada imamo preča posla . . . f.close # metod, obavezne()
f.close()
type(f)
f

pogledajte fajl proba.txt


Python, files, čitanje Python, files, čitanje 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, čitanje po redovima Python, OŠ, 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ženja
f.readline()
I i zapisati je u .txt file
f.readline()
f.close() Polako, još uvek imamo preča posla . . .

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

OOP, Python’s middle name


I pokrenete IDLE, tu je interpreter
I korisnik definiše svoje tipove podataka, klase
I otvorite editor: File, New Window, . . .
I nad definisanim podacima definiše funkcije, tzv. metode, već ih
I ono što kucate u interpreteru je crveno
videli na delu
I ono što kucate u editoru je plavo
I čisto i pregledno
I kucate “as is”, kreativnost za sada nije na ceni
I može, a ne mora
I file neka se zove vector.py
I šteta propustiti

Python, class Python, class

type(Vector)
a = Vector()
type(a)
kucate u editoru, kada završite proverite sintaksu i izvršite, 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še pass!
i = Vector(1, 0, 0)
help(Vector)

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


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

type(i) i = Vector(1, 0, 0)
print i j = Vector(0, 1, 0)
print i.x, i.y, i.z 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 Python, štampanje kao metod
vektor

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

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

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ženja 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što ne 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če 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što sasvim različito, map Python, a sada nešto neočekivano

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četak . . .
I možete sami da definišete 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

čega se sećate, 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 Čedomir Š. Petrović’
print ’jа се зовем Предраг Пеjовић’ print ’ja se ne zovem Čedomir Š. Petrović’
print ’jа се зовем Предраг Пеjовић’
Python, rendering Python, budućnost

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četak!

I ima još mnogo toga, ovo je samo osnova


I pre svega biblioteke, moduli . . .
I mnogo toga je gotovo, vaša je primena!
I razlika 2 i 3
I od sledeće godine 3?
I ostaju numpy, matplotlib, ipython, pylab, sympy
I a sada: tablica množenja
Šta je PyLab?

I environment koji cine


Python, III deo: I NumPy
I SciPy
PyLab i SymPy 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://www.numpy.org/
I osnovna biblioteka za numerički zahtevne Python primene,
I potrebno? sadrži:
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 . . . ima i Qt verziju, IPython Qt console i module za:
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 Travis E. Oliphant & Enthought, biće još kontakata sa njima I moduli za:
1. statistics
I http://www.enthought.com/
2. optimization
I nema načina da se zapamti i nije „zauvek“ 3. numerical integration
I potreban nov način učenja i snalaženja 4. linear algebra
5. Fourier transforms
I izbeći reinventing 6. signal processing
I masovno korišćenje help-a i primera 7. image processing
8. ODE solvers
I Matlab-Python-R
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, 3.0.0, pdf, 2288 strana, 21.09.2018.
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
I interaktivni Python envirinment, vrlo nalik na Octave, I sređen namespace da ne mora puno dot notation
wxMaxima, . . . 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, . . .

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<tab> 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 a.T

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


y = t[0] / 10000.0 # pazite kod /!
x = randn(10000) x = t[1]
plot(x) len(y)
close() len(x)
xx = (x[0 : len(x)-1] + x[1 : len(x)]) / 2
randn? len(xx)
close()
hist(x, 100) plot(xx, y)
close() xlabel(’x’)
ylabel(’w(x)’)
t = hist(x, 50) xlim(-5, 5)
type(t) xticks(linspace(-5, 5, 11))
len(t) sum(y)
len(t[0]) help(savefig)
len(t[1]) savefig(’slika’) # potrazite slika.png
savefig(’slika.pdf’) # potrazite slika.pdf

slika.pdf Pylab, jedan script, dat.py


from pylab import *
0.06
deg = linspace(0, 4*360, 4*360 + 1)
0.05 wt = radians(deg)

0.04 f = exp(- wt / 2 / pi * 0.5) * sin(wt)


fp = exp(- wt / 2 / pi * 0.5)
fm = -fp
w(x)

0.03

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


0.02
np.save(’deg.npy’, deg)
0.01 np.save(’f.npy’, f)
np.save(’fp.npy’, fp)
0.00 5 4 3 2 1 0 1 2 3 4 5
x 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?
1.0
np.savetxt?
np.load?
deg = np.load(’deg.npy’)
f = np.load(’f.npy’) 0.5
fp = np.load(’fp.npy’)
fm = -fp

f(wt)
plot(deg, f, ’r’) 0.0
plot(deg, fp, ’b’)
plot(deg, fm, ’b’)
xlim(0, 360 * 4) 0.5
xticks(arange(0, 360 * 4 + 1, 180))
xlabel(’wt [deg]’)
ylabel(’f(wt)’)
1.00 180 360 540 720 900 1080 1260 1440
savefig(’datslik’)
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’)


0.4 y = x2
figure(0, figsize = (6, 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
0.6
y

I http://live.sympy.org/
0.4
I uputstvo 0.7.6.1, 1995 strana, 03.09.2015.
I Ubuntu: Software Center ili Synaptic
0.2 I volite Mathematica sintaksu?
I odličan pregled i tutorial
0.0 I za one koji vole matematiku http://www.sagemath.org/
0.0 0.5 1.0 1.5 2.0
x

SymPy, počinjemo SymPy, polinomi

p1 = x**2 + 2 * x + 1
p1
print p1
I komandna linija, isympy
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, diferencijalne jednačine, script, problem SymPy, diferencijalne jednačine, script


from __future__ import division
from sympy import *

# cast
Rešiti diferencijalnu jednačinu y, t = symbols(’y t’)
f = symbols(’f’, cls=Function)

# equation
d 2 f (t) d f (t) deq = Eq(f(t).diff(t, 2) + 2 * f(t).diff(t, 1) + 4 * f(t), 2 * sin(t))
+2 + 4 f (t) = 2 sin(t) print
dt 2 dt pprint(deq)

# solution
i proveriti rešenje. sol = dsolve(deq, f(t))
print
Napisati Python script koji rešava problem, prikazati jednačinu, pprint(sol)
rešenje i rezultat provere. # verification
s = sol.rhs
ver = deq.subs(f(t), s)
ver = ver.doit()
ver = ver.expand()
print
pprint(ver)
SymPy, diferencijalne jednačine, script, rešenje SymPy: :, =, is()

I na kraju, a moglo je i na početku . . .

Maxima vs. SymPy objašnjenje


2 : je = dodela vrednosti
d d
4*f(t) + 2*--(f(t)) + ---(f(t)) = 2*sin(t) is() je == logički operator
dt 2 = je Eq(*, *) deklarisanje jednakosti
dt

/ / ___ \ / ___ \\ -t 6*sin(t) 4*cos(t)


f(t) = \C1*sin\\/ 3 *t/ + C2*cos\\/ 3 *t//*e + -------- - --------
I očigledno postoji potreba za različitim =
13 13
in SymPy:
True
x**4 = 1 # error
x**4 == 1 # poređenje
Eq(x**4, 1) # jednakost, jednačina
solve(_, x) # koja može da se reši

PSAE, šta nismo uradili, a trebalo je,


t  (potrebnog)
I komandna linija, http://linuxcommand.org/tlcl.php
I regular expressions, Charles Severance, video, 35’, 23”
I detaljnije Code::Blocks ili neki drugi IDE
I Eclipse http://www.eclipse.org/
I ukratko LibreOffice, više pravila pisanja
I malo više vremena za Octave, ipak je jako dobar program —KRAJ—
I makar malo vremena za SciLab, Xcos pre svega
I malo vremena za GIMP, mada nije problem
I malo vremena za Inkscape, ovo je veći problem
I Qucs http://qucs.sourceforge.net/
I Ngspice http://ngspice.sourceforge.net/
I moj izbor: julia i sage
I ovo je samo početak, mada je za sada . . .

You might also like