PRAKTIKUM IZ SOFTVERSKIH ALATA U ELEKTRONICI 2020/2021

Predrag Pejović

16.01.2021, 10:00

© 2021 Predrag Pejović, This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Linkovi na primere:

OS 1: http://tnt.etf.bg.ac.rs/~oe4sae/softwareinstall.sh

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

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

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

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

LATEX 4: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-7-2020.zip Python 1: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-9-2020.py

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

Python 3: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-11-2020.zip

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

SageMath: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-13-2020.zip

Alternativni linkovi na primere:

OS 1: http://peja.freedombox.rocks/PSAE/softwareinstall.sh

OS 2: http://peja.freedombox.rocks/PSAE/primeri-3-2020.zip

LATEX 1: http://peja.freedombox.rocks/PSAE/primeri-4-2020.zip

LATEX 2: http://peja.freedombox.rocks/PSAE/primeri-5-2020.zip

LATEX 3: http://peja.freedombox.rocks/PSAE/primeri-6-2020.zip

LATEX 4: http://peja.freedombox.rocks/PSAE/primeri-7-2020.zip Python 1: http://peja.freedombox.rocks/PSAE/primeri-9-2020.py

Python 2: http://peja.freedombox.rocks/PSAE/primeri-10-2020.zip

Python 3: http://peja.freedombox.rocks/PSAE/primeri-11-2020.zip

GNU Octave: http://peja.freedombox.rocks/PSAE/primeri-12-2020.zip

SageMath: http://peja.freedombox.rocks/PSAE/primeri-13-2020.zip PRAKTIKUM IZ SOFTVERSKIH ALATA U ELEKTRONICI 2020 PRAKTIKUM IZ SOFTVERSKIH ALATA U ELEKTRONICI 2020

c Predrag Pejović,

Lica (i ostali podaci o predmetu): Lica, dopuna, odakle ja u ovome?

I dr Predrag Pejović, red. prof, [email protected], 102 levo, http://tnt.etf.rs/~peja I nekada davno, drugom polovinom prošloga veka . . . http://peja.freedombox.rocks/peja/ I . . . postojalo je usmereno obrazovanje I Strahinja Janković, viši laboratorijski inženjer, [email protected] I i OVROMTS „Veljko Vlahović“ . . . I sajtovi predmeta (mirror): I koja se sada zove „Matematička gimnazija“ I http://tnt.etf.rs/~oe4sae I postojala su zanimanja, ja sam bio programer I http://peja.freedombox.rocks/PSAE/index.html I . . . neki od učenika su bili veoma entuzijastični u korišćenju cilj: savladti primenu niza programa koji se koriste za I računara . . . oni koji to ne razumeju bi rekli „zavisnici“ svakodnevne poslove u elektronici (i ne samo elektronici . . . ) I ulazio sam u programiranje i izlazio, iz raznih razloga . . . I svi programi koji će biti obrađivani su slobodan softver (), legalno možete da ih koristite (i ne samo to) gde I dok nisam „definitivno“ izašao 1995 sa win 95 . . . hoćete, kako hoćete, za šta hoćete, koliko hoćete, na kom I . . . da bih se vratio 2008. sa Ubuntu 8.04 Hardy Heron računaru hoćete . . . i nikome ne podnosite račune za to! I i to još traje! I literatura . . . sve sa www, legalno, besplatno! I korišćenje računara je uživanje! ako nije — ne koristim!!! I zašto svake godine updated slajdovi?

Prezentacije predmeta, (linkovi ljubičasti) Šta se radiLO 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 (!), I engleski shell scripts, IDE, poneki program . . . (≈ 2 w) I srpski, kraća verzija 3. tekst, LATEX(≈ 3 w) I engleski, prezentacija i animacije 4. crtanje šema, XCircuit (≈ 1 w) I srpski, prezentacija i animacije 5. probni kolokvijum . . . (= 1 w) 6. prvi kolokvijum . . . Izazvalo dosta galame, kao i dosta marginalizacije, ignorisanja . . . 7. numerika, GNU Octave (≈ 1 w) 8. vizualizacija, gnuplot (≈ (1 + ε) w) Biće još reči o ovome . . . 9. simboličko računanje, wxMaxima (≈ 1 w) 10. drugi kolokvijum . . . 11. Python, IPython, PyLab, SymPy (≈ 3 w) 12. treći kolokvijum = ispit . . .

Šta se sada radi u predmetu, koji programi? Evolucija računarstva i društvene nauke

1. uvod (upravo slušate): organizacija nastave + (FS: tehnička, I teorijski, počinje 1940s ekonomska i pravna pitanja, kako to uopšte postoji?) (≈ 1 w) I praktično, kod nas možda 1970s 2. operativni sistem (GNU/Linux, Ubuntu), komandna linija (!), shell scripts, IDE, poneki program . . . (≈ 2 w) I 1980s koristimo računar I 1990s koristimo računar u svakodnevnom radu 3. tekst,LATEX( ≈ 3 w) 4. crtanje šema, XCircuit( ≈ 1 w) I 2000s sve radimo pomoću računara 5. probni kolokvijum . . . (= 1 w) I 2010s potpuno zavisimo od računara 6. prvi kolokvijum . . . I 2020s? pogledajte oko sebe, tokom online predavanja . . . 7. Python, verzija 3, PyLab( ≈ 3 w) I PC, mobile, cloud, phone, tablet, . . . 8. drugi kolokvijum . . . I nema više PC? za koga nema? vi niste prosečni korisnici! 9. numerika, GNU Octave( ≈ 1 w) I ubrzava se . . . 10. numerika, Julia( ≈ 1 w) I nove opasnosti: security i privacy! 11. simboličko računanje, SageMath( ≈ 1 w) I ako neko ima mogućnost da vas iskoristi, iskoristiće vas; budite sposobni! 12. treći kolokvijum = ispit . . . Problemi u radu sa računarima . . . Pravni i ekonomski problemi

I svaki program zahteva obuku . . . I čitati uputstvo? dostupna literatura? rano odustajanje . . . I Pravni problemi I najbrže i najbolje se uči ako neko pokaže (“hands-on I licenciranje (program koji ste kupili je vaš?) approach”) I MORAMO biti 100% legalni!!! I pomoćnik-savetodavac dostupan? I Ekonomski problemi I troškovi (i ne samo to! ↓) I Google pomoćnik? Youtube pomoćnik? I navike i zavisnost I koji program odabrati? stvaranje zavisnosti (navike + old I problemi sa proprietary formatima (primer: bas bih voleo opet files)? ozbiljna odluka! “vendor lock-in”! da procitam svoj doktorat u elektronskoj formi) I bezbednost podataka! I da li računar pomaže ili odmaže? kada se vraća naučeno? I privatnost!!! I strahovito brze promene, novi programi . . . I način naplate . . . I opravdanost naplate . . . I prilagođavanje: psihologija, ergonomija, namere autora I “vendor lock-in”... programa (vagon primer, pričali mi učesnici, prvo Rade Nikolić, I free (slobodni) software? potom Dušan Vuksan, primedbu dao Helmut Krauch)... I besplatno (ako tako hoćete) i jos mnogo više! I ekstremne posledice: tehnofobija illi zavisnost I cilj: računar treba da služi nama, ne mi njemu

Kako je nekada bilo . . . (“učiteljica života”) Kako je danas? (posle ≈ 1985)

I PC revolucija (prošla; prošla?) mainframe računari I I jeftino, dostupno, (modularno (?)) software i hardware se prodavali zajedno I I sklopivo, prilagodljivo korisniku (?) računari bili ekskluzivan proizvod, skup I I izaberete komponente (?), sklopite računar (?), šta dalje? mnogo manje korisnika I I softver postao zasebna komponenta računara, posebno se I mnogo manje komunikacije između korisnika nabavlja (kupuje?) (upravo ovde naša priča počinje . . . ) I okruženje bilo uglavnom naučno ili visoko poslovno I operativni sistem, početak I poslovne primene uz razvoj sopstvenih programa, I korisnički softver, zavisno od primene računara custom design I softver je intelektualni, nematerijalni proizvod . . . I dominantna zaštita poslovna tajna I nematerijalni proizvodi su veoma specifični, I ogromne mogućnosti, pps, strahovito brz razvoj upotrebom se ne troše! I društvene implikacije, nestanak i nastanak velikog broja I rezultat: monopoli i „verski ratovi“ poslova, promena sistema vrednosti, pojava mladih ljudi na I ideologizacija i manipulacija . . . uticajnim pozicijama . . . I Samizdat: And Other Issues Regarding the ’Source’ of Open Source Code

Specifičnosti „intelektualnih“ (nematerijalnih) Specifičnosti „intelektualnih“ (nematerijalnih) proizvoda 1 proizvoda 2 I značajni troškovi razvoja, skoro svi troškovi su razvoj! (navedene osobine se uglavnom odnose na softver, manje na ostale I proizvod se upotrebom ne troši, traje intelektualne proizvode) I potražnja se spontano ne obnavlja I ogroman komercijalni potencijal I za zaradu neophodan novi razvoj ili vremenski ograničena I potencijal za stvaranje zavisnosti (izuzetno opasno!) licenca ili naplata po korišćenju, mesečni račun (cloud!) I potencijal za ucenjivanje, posledica zavisnosti, “vendor lock-in” I misaoni eksperiment: softver koji se kvari I problemi vezani za privatnost: kontrola, pa izvor zarade! I prestaje „podrška“ I primeri: I troškovi umnožavanja zanemarljivi I Phil Zimmerman, Boulder, CO, 1991, PGP I troškovi distribucije zanemarljivi I Mark Shuttleworth (1973), Thawte, digital certificates and I kako organizovati proizvodnju da bi se ostvario profit? Internet security Mark Shuttleworth, Canonical, 2004, biće još reči . . . I karakteristike veoma slične stvaralaštvu u nauci, oblast slična I matematici . . . I sjajna osnova za izgradnju “social machinery” ni oko čega . . . I postoje programeri koji vole da programiraju . . . I u čemu ima mnogo interesa . . . koji se odlučno brane! I . . . dok ne dođu GUI i dokumentacija!

„Intelektualna svojina“ i njena „zaštita“ Copyright

pokušaj da ideje dobiju tretman materijalnih objekata, a time i svog I štiti konkretan proizvod, ne ideju vlasnika; za sada delimično uspešan, uprkos paradoksima I dugo traje, i preko 100 godina, zavisno od pravnog sistema forme „intelektualne svojine”: (jurisdikcije) produžava se 1. copyright I širi se domen 2. patent I sve copyrightable automatski je copyrighted (Bern . . . ) 3. trade secret I copyright notice, “all rights reserved” (ne košta!) 4. trademark, za nas manje važan I dominantna zaštita za software u nizu pravnih sistema . . . 5. ima još sličnih ↑ pojmova koji nisu u našoj zoni . . . I I pošto se software kopiranjem umnožava, „proizvodi“, što je još bitno se razlikuju!!! jedna besmislena generalizacija; proizveo je programer! suština: svojina nad objektima koji nisu materijalni, I ne sprečava da neko napiše nov program iste parcelisanje Platonovog sveta ideja funkcionalnosti! Patent Trade Secret (poslovna tajna)

I štiti ideju I “kratko” traje (10-20 godina) I kratko? za sotver kratko? I ne košta I širi se domen (predmet, metod, nova primena, organizam, . . . ) I traje dok traje tajna I zahteva prijavu i odobrenje patenta, košta! I nikog ne sprečava da otkrije isto I David Pressman, “Patent it Yourself,” Nolo Press I zaštita kroz NDA I offensive rights I negde se može primeniti, negde ne I samo 10% patenata isplati troškove (???) 1. primer: program u interpretativnom jeziku I kritike, 19. vek i ranije, “Patent Absurdity” 2. primer: proizvodnja hrane, recepti http://patentabsurdity.com/ I funkcioniše gde se nešto može sakriti . . . I nečitki patenti, promenjen smisao I pojam „očigledno“ I kako to funkcioniše u praksi: patent portfolio, trolovi i pravi korisnici patentnog sistema . . .

Softver, terminološke zabune Free Software, definicija; free = slobodan

I Richard Mathew Stallman 1. Free Software I free as in free speech, not free beer (slobodan / besplatan) 2. Open Source Software I uvek je neko „platio“ razvoj programa 3. Freeware I korektan prevod „slobodan softver“ 4. Shareware I definicija (po RMS): I Freedom 0: da se izvršava program, bez ograničenja Napomena: slobodan softver 6= besplatan softver, to su dva I Freedom 1: da se proučava i menja program: potreban source code potpuno različita pojma! biće još reči o ovome!!! I Freedom 2: da se dele kopije programa I Freedom 3: da se dele modifikovane verzije programa Napomena: “A license (American English) or licence (British kad licenca ovo dopušta software je free English) is an official permission or permit to do, use, or own I something (as well as the document of that permission or I FSF, http://www.fsf.org permit).” I FSFE, http://fsfe.org/ I osim praktičnih, pokreću i etička pitanja

Novo i neobično, . . . Podela softvera

I neprijatelji? brojni! I free software (slobodni softver) 1. interesni, racionalni I licenca dopušta četiri slobode iz definicije 2. ideološki, iracionalni (teško ih je razumeti i predvideti) I izvorni kod (source code) uvek dostupan I korisnici? pitaju li se oni šta? znaju li oni šta? I ima više licenci koje to omogućuju, dve grupe: motivi contributors? 1. restriktivne, copyleft: GNU GPL (koriste: GNU/Linux) I 2. liberalne, dopustive: BSD, MIT (koriste: BSD, Python, Spice) I treba li programeri da budu plaćeni? I biće još reči o licencama, a i rad na PSSOH... I poslovni modeli? baš ozbiljno pitanje! indirektni! I proprietary software (vlasnički softver) I „pustite nas da radimo!“ I licenca ne dopušta bar jednu od navedene četiri slobode I izvorni kod može biti dostupan I “social machinery” I izvorni kod obično nije dostupan, poslovna tajna I konkurencija (lojalna, nelojalna?) I korisnik baš i ne zna šta program radi na njegovom računaru I potencijal: jedna donacija uništi tržište! I maksimiranje profita utiče na software design, primeri . . . I “vendor lock-in”, budite oprezni! I prošlost kod nas (do ≈ 2003.): sve je bilo freeware, jako malo free software; srećom, promenilo se! I postoji i dvojno licenciranje, ali to je “advanced topic” . . .

Free Software Open Source Software

I Bruce Perensi Eric Steven Raymond (ESR) I “The Cathedral and the Bazaar” Open Source Initiative, www.opensource.org Da ponovimo, dopušta: I I u osnovi, to je free software, iste licence, gde je razlika? I Freedom 0: da se izvršava program, bez ograničenja I ideja: popraviti marketing (ne zamerati se) I Freedom 1: da se proučava i menja program: I podržao Linus Torvalds potreban source code I u početku uspeh (sistemu je bilo šta prihvatljivije od slobode) I Freedom 2: da se dele kopije programa I softver kome se zna izvorni kod MOŽE biti i proprietary!!! I Freedom 3: da se dele modifikovane verzije programa Primer: FFTW, dvojno licenciranje, i slobodan i neslobodan I gotovo uvek je (open source = free) software I F(L)OSS (Free, (Libre), and/or Open Source Software) I ozbiljan sukob sa FSF, ali koristili i dalje GPL I danas je sukob prošlost, mada je ostalo FOSS i FLOSS Freeware Shareware

I proprietary, ali besplatan softver I besplatan iz nekog razloga I reklame prikupljanje informacija I I problem kod reči “sharing” I stvaranje navike kod korisnika I testiranje programa (besplatno) I softver koji se slobodno distribuira I testiranje tržišta I još manje slobodan nego freeware želja za sakrivanjem dela koda ili podataka, nečim motivisana; I obično služi za promociju programa čime? 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, da ima za GNU/Linux možda bih i koristio! I shvatite i zapamtite: slobodan softver 6= besplatan softver!

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 RMS očekivao Hurd I Richard Mathew Stallman (RMS) I Hurd ne baš sjajno napredovao I I Andy Tanenbaum, Minix 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 . . . Važno: Copyleft

I Understanding Open Source and Free Software Licensing I Copyright: “all rights reserved”, Tiny BASIC I GPL, General Public License, FSF, copyleft, detaljno na I Copyleft: “all rights reversed” ili “all wrongs reversed” ili “some sledećem slajdu . . . wrongs reversed” 1. GNU General Public License 2. GNU Lesser General Public License I cilj da se free software zaštiti, da ostane slobodan 3. GNU Affero General Public License I restriktivne licence 4. GNU Free Documentation License I „virusna licenca“ I liberalne, “permissive”, licence: I Copyleft and the GNU General Public License: 1. BSD License, A Comprehensive Tutorial and Guide 2. MIT License 3.... Značajne copyleft licence: I dvojno licenciranje moguće kod copyleft, FFTW 1. The GNU General Public License I CeCILL 2. The GNU Lesser General Public License I http://www.gnu.org/licenses/license-list.html 3. The GNU Affero General Public License I PSSOH rad . . . 4. The GNU Free Documentation License

Spice, BSD licenca, original MIT license

http://en.wikipedia.org/wiki/BSD_licenses http://en.wikipedia.org/wiki/MIT_License 7/17/2007 Spice is covered now covered by the BSD Copyright: Copyright (C)

Copyright (c) 1985-1991 The Regents of the University of California. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and All rights reserved. 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 copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the Permission is hereby granted, without written agreement and without license or royalty fees, to use, following conditions: 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. The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS THE SOFTWARE. IS"BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

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 baš ništa novo, superkompjuteri, Boulder 199x, 3 ≤ x ≤ 5 I I Who does that server really serve? . . . kao i niz GPL licenci . . . I I baš dobar koncept: ni softver ni vaši podaci nisu kod vas! Interaction Design Institute Ivrea, 2001-2005 I I stvara se zavisnost, “vendor lock-in” “design files” su javno dostupni i slobodni za primenu; I I nekome se isplati: isplati li se vama? copyleft? licence? I Service as a Software Substitute (SaaSS) I ozbiljna igra: RISC-V, UC Berkeley, Krste Asanović I svakako aktuelna tema . . . I BSD licenca I . . . posebno u doba online nastave! I SiFive I moje mišljenje: odbaciti! I reakcija ARM-a I a da imate svoj lični cloud? I vredi pomenuti i https://www.raspberrypi.org/ i slične a da imate svoj lični server? “single board computers” projekte I I WikiHouse

Lični serveri . . . http://peja.freedombox.rocks

I poput http://peja.freedombox.rocks I advanced topic . . . I hot topic . . . I no time to cover . . . I just some links: 1. https://freedombox.org/ 2. https://yunohost.org/#/ 3. https://nextcloud.com/ 4. https://ownyourbits.com/nextcloudpi/ 5.... I po meni, ovo je budućnost, evolucija fiksnog telefona . . . I za spretnije, https://ubuntu.com/download/server ... I . . . sada imate punu slobodu! Modernija verzija, RPi 4, . . . Funkcionalnosti kućnog servera?

da ne prevodim, ovo mahom pričam na engleskom . . .

1. e-mail server 2. personal cloud . . . 3. personal communication server 4. personal library 5. home page and/or blog? 6. proxy server 7. vpn server 8. smart home 9. video surveillance 10....

pogledati šta sve ima https://yunohost.org/#/

Par reči o enkripciji . . . Organizacija predmeta

I koliko god se trudili da je onemoguće, nije moguće bez I sasvim praktičan predmet, lak; lak (?) enkripcije, elektronska trgovina, e-everything I savladati ((samostalno) korišćenje) niza programa I backdoor ako nije free software? a, da, rekli su da nema! I organizacija nastave: radionica, “hands-on approach” I javni ključ I . . . ovo baš i ne ide online I Simon Singh, Knjiga o šiframa, The Code Book I Q: koliko ljudi za računarom? I PGP, Pretty Good Privacy I A: preferably 1! I kombinacija: I . . . eto socijalnog distanciranja! 1. Thunderbird I maksimum 20 studenata, najbolje 10, sa 4 m2 po studentu 2. Pretty Easy Privacy rezultat je 0 studenata Mailvelope za webmail? I I ocenjivanje: mali kolokvijumi, 3 kolokvijuma termin: “end-to-end encryption” I I za koga predmet nije termin: “transport encryption” I I ako ste nekompatibilni, sada je trenutak za zamenu

Program predmeta, teme nekada Program predmeta, teme sada (ono što je realno moglo da se stigne prethodnih godina)

Ubuntu, osnove i komandna linija, shell scripts I I Ubuntu, osnove i komandna linija, shell scripts C, Python, IDEs, kao ilustracija prethodnog I I C, Python, IDEs, kao ilustracija prethodnog I LAT X E I LATEX XCircuit I I XCircuit GNU Octave I I Python, PyLab (NumPy, SciPy, Matplotlib, IPython), SymPy gnuplot I I GNU Octave Maxima, wxMaxima I I Julia Python, PyLab (NumPy, SciPy, Matplotlib, IPython), SymPy I I SageMath

politika: dva alata za istu namenu kada to ima ikakvog smisla; kada znate dva, lako ćete naučiti treći; Jawaharlal Nehru i pismo

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

I VirtualBox I kolokvijumi/ispiti sa literaturom LibreOffice I 1. dokumentacija 1/3 (1. kolokvijum) I Scilab, Xcos 2. programiranje 1/3 (2. kolokvijum) I Inkscape 3. matematika (scientific computing) 1/3 (3. kolokvijum = ispit) I GIMP, ImageMagick 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: Qucs I 1. LaTeX (80) + XCircuit (20) + Beamer (20) (bonus) I ngspice 2. Python (50) + PyLab (50) I KiCad 3. Octave (20) + Julia (40) + SageMath (40) I R I otvoreno za primedbe i sugestije (do određene granice) . . . I ... Linkovi . . .

sajt predmeta: HONOR CODE CERTIFICATE http://tnt.etf.bg.ac.rs/~oe4sae/ Jerry Cooperstein, Ph. D. Training Program Director The Linux Foundation alternativni sajt predmeta: Clyde Seepersad General Manager, Training http://peja.freedombox.rocks/PSAE/index.html 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

a course of study offered by LinuxFoundationX, an online learning https://www.edx.org/course/linuxfoundationx/ initiative of The Linux Foundation through edX. linuxfoundationx-lfs101x-introduction-1621

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

Linkovi za zainteresovane . . . promeniti ili ne promeniti, pitanje je sad?

Richard Matthew Stallman, TEDx, Geneva, 2014. Eben Moglen, kako je sve počelo . . . week #1 Eben Moglen, gde smo sada, 2013. — the end — Revolution OS, dokumentarni film iz 2001.

O patentima . . . operativni sistem

I služi da bi pokretali i koristili programe I win, macOS, GNU/Linux, BSD, Solaris, OpenIndiana, . . . operativni sistem I GNU/Linux, distribucije: — part 1 — I Ubuntu I Linux Mint I fedora I 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 Ubuntu... © Predrag Pejović, I I . . . i baš za hardline free-distros

Ubuntu desktop environments

I www.ubuntu.com kod windows samo win I desktop, server, Kubuntu, Xubuntu, Lubuntu, Edubuntu, I Ubuntu GNOME, Ubuntu MATE . . . menja se . . . (Gnubuntu, I duga istorija pre toga, Xerox, Apple, . . . 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... I USB startup? na win https://rufus.ie/ I svaki od desktop environments ima svoje motive, istoriju, izgled, . . . HIG I pre instalacije PROBATI, live DVD, live USB disk, “live medium” I na kraju sve skoro isto, ali treba vremena da se to shvati . . . I Ubuntu, instalacije I možete da instalirate i štošta drugo: GNOME, MATE, I samo Ubuntu Cinnamon, Cairo,... dual boot (dva diska? pazite!) I 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 . . . instaliranje programa . . .

I instalira se operativni sistem . . . I . . . proprietary drivers (uglavnom graphichs i wlan) . . . I . . . proprietary codecs . . . ogg? http://xiph.org/ 1. Ununtu Software I programi se instaliraju iz repository . . . 2. Synaptic I za instalaciju potreban jedan disk ili USB flash drive i Internet 3. komandna linija: za probu sjajno ako imate stari računar/laptop I 3.1 sudo apt-get ... I moje iskustvo sa instalacijama . . . 3.2 sudo apt ... I a sada pretpostavimo da je operativni sistem instaliran . . . 3.3 sudo snap ... I to je pre online nastave bilo lako pretpostaviti . . . I sada instalirate Ubuntu 20.04 i treba da instalirate programe I idemo korak po korak . . .

desktop environment . . . DEFAULT! desktop environment . . .

zašto default? I I sistem boot-ovan insistiramo na defaults I I let’s log in . . . customize sami . . . na SVOM nalogu i/ili računaru I I launcher (application switcher) pitanje pristojnosti ... I I top menu bar do sada nije bilo problema . . . I I indicators . . . svoje podatke ponesite na USB flash drive . . . ako su vam I I activities . . . važni I applications . . . I ne ostavljajte podatke na računaru, počistite . . . I Desktop I rekoh, pitanje pristojnosti ... launcher . . . Show Applications

I levi bar I pokreće (lansira) aplikacije I pretražuje računar, i applications i files I ostale aplikacije se dodaju (Add to Favorites) ili uklanjaju (Remove from Favorites), desno dugme miša I pokreće se sa single click dole levo Frequent / All I ostalim aplikacijama se lako menja redosled I name search I aplikacija se pokrece sa single click I I pokrenuta aplikacija: tačka (puna) I vežba: Octave, 2 + 2

vežba . . . get acquainted, startovanje programa, . . .

I start Software Updater I updated? I update I Octave, plot x2 za 0 ≤ x ≤ 1, . . . kao Matlab, isto! I start Ubuntu Software Center I octave, poznato? I install GeoGebra I octave-cli, za old-fashioned I run GeoGebra I ipython3 I nacrtajte elipsu i još ponešto I terminal, ipython3, a=2, b=3, a^b, a**b I Add to Favorites I terminal, jupyter notebook I Remove from Favorites I gedit, iz Launcher-a I pokrenete GNU Octave . . . I terminal, gnuplot, plot sin(x) I Alt-Tab menja aplikacije I terminal, gedit

top menu bar . . . system settings . . .

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

razlike . . . Files . . .

različiti desktop environments imaju različite nazive i različit I 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 full path ctrl-l, izlaz sa esc pronađe I I ovo je otprilike sve za početak . . . I pitanje ukusa o kojima nema smisla raspravljati . . . file system . . . komandna linija . . .

I Home Folder (Home Directory), ima svaki korisnik I Ctrl/l, full path, Location, wheel-button I subfolders, create your folder I Terminal (izlaz: exit ili Ctrl/d) I MSDOS: folder; UNIX, GNU/Linux: directory (mnogo I Alt/Ctrl F1 do F6, tty1 do tty6, neki je vaš prozor sada je ovakvih situacija) to F2 I MSDOS: directory separator \; UNIX, GNU/Linux: directory I eto nas na komandnoj liniji separator / I jako dobra knjiga: I MSDOS: command option separator /; UNIX, GNU/Linux: http://sourceforge.net/projects/linuxcommand/ command option separator -, -- I ali 555 strana! I POSIX, UNIX, Linux, BSD, . . . jedan tree, vratiću se . . . I lako se čita!!! (telefon, tablet, prevoz, . . . ) I win: svaka storage device ima tree, razlika! I moć navike! (dobre i lose navike) I komandna linija? već ste je sreli: terminal neke komande . . . vrlo osnovne komande, ls

I uvek prva komanda, ls, ekvivalent za dir iz MSDOS-a I ls, ls -l, ls -a, ls -al, ls -lh I date I boje govore o tipu fajla, zelena je .exe ili .com ili .BAT I cal I man ls, man -t ls, man -t ls >ls.ps I cal -help I ls I ncal I ps2pdf ls.ps I df I ls I clear I file ls.ps I free I file ls.pdf I od sada: terminal na medium, File Manager, home, medium I evince ls.pdf I ideja: da vidite šta komandna linija radi, kako fajlovi i evince ls.ps direktorijumi nastaju i nestaju I I postoji i evince za win, http://projects.gnome.org/evince/ I man convert ... pokušaj prevare, cp, file cat, more, less . . . biće još jednom

I ls ls.ps I cat ls.ps I cp ls.ps lspdf.pdf I cat ls.ps ls.ps I ls lspdf.pdf I man cat I file lspdf.pdf I ko je napisao cat? I cp ls.pdf lsps.ps I more ls.ps I ls lsps.ps I less ls.ps I file lsps.ps I “less is more!”, autor

cat, gedit i redirekcija počistite za sobom!

I ls I gedit proba I rm ls.ps I sadržaj fajla po želji, npr dva reda teksta, save!!! I ls I cat proba proba proba proba proba > proba5.txt I rm -i ls.pdf I cat proba5.txt I ls I more proba5.txt I ^d I less proba5.txt I shutdown mašine, potom ugasite monitore I izlaz je q, ne esc!!! I vratite stolice na mesto I ponesete sve svoje stvari zagrevanje . . .

operativni sistem I update — part 2 — I komandna linija, nastavak . . . mnoštvo programa (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 . . . )

© Predrag Pejović,

help na komandnoj liniji . . . synaptic

I još jedan način za instaliranje programa I jako dobro, omogućava precizna podešavanja I nije instaliran by default . . . (manual) I man ls I zahteva neko razumevanje . . . (help) I ls --help I pokrenete Synaptic Package Manager (GNU info system) I info ls I dopunite octave, modul octave-control , I apropos man apropos I pokrenete octave , (vrlo kratak opis) I whatis whatis apropos I h = tf([1], [1, 1]) , (vrlo kratak opis) I whereis whereis apropos I bode(h) I h = tf([10], [1, 0, 100]) I bode(h) I h = tf([10], [1, 0.1, 100]) I bode(h)

file system, nastavak . . . directory system commands: pwd, mkdir, rmdir, cd . . . I pwd bitno različit file system u odnosu na MS-DOS/win I I mkdir ne postoje volumes poput C:\, D:\,... I I ls Ext 3, Ext 4, journal file system I I cd case sensitive, kada to može, ne kod FAT; I I pwd ovo pravi probleme kod kopiranja na USB flash, I ls File i file primer, preklapanje I cd .. I jedinstven file system, stablo počinje u root, / I cd - I volumes se mount-uju: ubacite USB flash I cd ~ I USB flash, CD, u /media/, pogledajte sa ctrl/l I cd / I a sada kroz file system pomoću komandne linije . . . I cd ~/ I terminal na pola, File Manager na pola, . . . I cd I cd I pwd redirekcija, cat, tac, head, tail, more, less . . . pipe, grep . . .

I ls -lht /usr/bin > usrbin1.lst I ls /usr/bin > usrbin2.lst I ls -lht > ls.lst I ls -lht /usr/bin | more I ls I ls -lht /usr/bin | less I cat usrbin1.lst I ls /usr/bin | more I tac usrbin1.lst I ls /usr/bin | less I head usrbin1.lst I grep maxima usrbin1.lst I tail usrbin2.lst I grep maxima usrbin2.lst I cat usrbin1.lst usrbin2.lst I ls -lht /usr/bin | grep maxima I cat usrbin1.lst usrbin2.lst > usrbin3.lst I more usrbin3.lst I less usrbin3.lst grep i regular expressions scripting . . .

I pokrenuti editor, gedit radi grep, globally search a regular expression and print I I View, Highlight Mode, sh I regular expression ↑ podešava context highlighting I knjiga, 197 strana I scripts su obično sa ekstenzijom sh I Google Analytics, Regular Expressions I mada ne mora . . . I videćete šta radi file

script file 1: radi script file 2: briši

ls -lh /usr/bin > usrbin1.lst ls /usr/bin > usrbin2.lst ls -lh > ls.lst gedit brisi.sh mkdir lst mv usrbin1.lst lst rm -i lst/*.lst mv usrbin2.lst lst mv ls.lst lst cd lst ls -lh cd ..

startovanje shell file kao data file privileges . . .

I ls -lhtr I file radi, koji je tip fajla? I i postoji nešto nalik na -rw-r--r-- pa podaci o fajlu I ls -lh radi, biće još reči o ovome I i nešto nalik na drwxr-xr-x pa podaci o direktorijumu I bash radi I prvi znak: - za fajl ili d za direktorijum I pogledajte šta je urađeno! I r je read, w je write, x je execute (ls) I bash brisi.sh I tripleti rwx rwx rwx |{z} |{z} |{z} I pogledajte šta je urađeno! user group other I svaka privilegija (r, w ili x je jedan bit) I sh radi I triplet daje oktalnu cifru, rwx je 7, r-- je 4, --x je 1, . . . I pogledajte šta je urađeno! I privilegija se kodira kao trocifreni oktalni broj I sh brisi.sh I rwx------je 700 I pogledajte šta je urađeno! I rwxr--r-- je 744 I rw-r--r-- je 644 chmod . . . script file 3 I ls -lh radi I chmod gedit argumenti0.sh I chmod 700 radi I ls -lh radi #!/bin/bash I pozeleneo? echo $0 I drugi način echo $1 echo $2 I chmod {u|g|o}{+|-}{r|w|x} echo $3 I chmod u-w radi I ls -lh radi file argumenti0.sh I chmod u+w radi sh argumenti0.sh I ls -lh radi sh argumenti0.sh a b c I chmod go+x radi sh argumenti0.sh d e bash argumenti0.sh I ls -lh radi ./argumenti0.sh I chmod go-r radi I radi I ./radi #! shell? malo istorije (za zainteresovane) . . .

I #! I promenite u argumenti0.sh prvi red u https://en.wikipedia.org/wiki/Unix_shell #!/bin/sh I i save kao argumenti0a.sh I https://en.wikipedia.org/wiki/Thompson_shell I promenite u argumenti0.sh prvi red u I https://en.wikipedia.org/wiki/Bourne_shell #!/usr/bin/python I https://en.wikipedia.org/wiki/Stephen_R._Bourne i save kao argumenti0b.sh I https: I obrišete prvi red i save kao argumenti0c.sh //en.wikipedia.org/wiki/Bash_%28Unix_shell%29 I file argumenti0.sh I i jedna knjiga: I file argumenti0a.sh http://sourceforge.net/projects/linuxcommand/ I file argumenti0b.sh I file argumenti0c.sh

script file 4 script file 5

gedit argumenti1.sh

#!/bin/bash gedit argumenti2.sh echo 0 echo $0 #!/bin/sh echo 1 echo 0: $0 echo $1 echo 1: $1 echo 2 echo 2: $2 echo $2 echo 3: $3 echo 3 echo $3 file argumenti2.sh sh argumenti2.sh file argumenti1.sh sh argumenti1.sh ./argumenti1.sh environment variables, PATH environment variables, PWD

I pwd (print working directory) I printenv I printenv PWD (isto!) I printenv | less I echo $PWD (isto!) I printenv PATH (prikaže vrednost promenljive PATH) I echo PWD (ništa korisno) I printenv PATH | grep home I $PWD (pokuša da izvrši) I echo $PATH (prikaže vrednost promenljive PATH) I echo $pwd (ništa) I $PATH (shell pokušava da izvrši) I echo $(pwd) (ništa) I $(pwd) (pokuša da izvrši)

proširimo PATH! čišćenje . . . uvek!!!

I cd lst I echo $PATH I ls I echo $PATH:$PWD I ls -1 I PATH=$PATH:$PWD I rm -i * I printenv PATH I ls I printenv PATH | grep home I cd .. I radi I rmdir lst vaš prvi Python program, proba, bez .py . . . pokretanje, . . .

I python3 proba I chmod +x proba I python, imate li instaliran python koji nije python3? I ./proba I za ovaj primer razlika je samo u () I chmod -x proba ./proba #!/usr/bin/python3 I I python3 proba print() I cp proba proba.py print(’Hello World!’) print() I ls -lhtr print(’MPFC’) I idle (Not IDE, Eric Idle?) print() I File, Open, proba.py I context highlighting I Run, Check Module (Alt+X) I Run, F5 vaš drugi Python program, f.py, in gedit . . . pokretanje . . .

da probamo sva tri nacina, sa i bez .py? #!/usr/bin/python3 I I ipython3 print() I run f.py n = int(input(’argument = ’)) print() I ctrl/d ili ^d I vrednosti promenljivih ostaju u interpreteru f = 1 I nema problema sa velikim brojevima, dynamic typing for i in range(n): f = f * (i + 1) I a kako je počelo? ovako: I python3 print(n, "! =", f) execfile(’f.py’) print() I I ^d

Zadatak: Fibonačijevi brojevi Fibonačijevi brojevi, Python

#!/usr/bin/python3

n = int(input(’duzina liste (int, >2): ’))

print()

a = b = 1 I fn = fn−1 + fn−2, f1 = 1, f2 = 1 print(16 * ’-’) I lista od prvih n Fibonačijevih brojeva i = 1 print(repr(i).rjust(3) + ’ ’ + repr(a).rjust(10)) i = 2 print(repr(i).rjust(3) + ’ ’ + repr(b).rjust(10))

for i in range(2,n): a, b = b, a + b print(repr(i+1).rjust(3) + ’ ’ + repr(b).rjust(10))

print(16 * ’-’) zadatak, C program, faktorijel jedan C program . . .

#include

I Dennis MacAlistair Ritchie (Username: dmr, September 8, int main() 1941 – October 8, 2011) { I "UNIX is very simple, it just needs a genius to understand its int i, n, f; simplicity." printf("\nargument = "); I "C is quirky, flawed, and an enormous success." scanf("%d", &n); I zatraži argument sa argument = f = 1; izračuna faktorijel i javi rezultat u formi m! = n I for (i=1; i<=n; i++) {f=f*i;} I gedit faktorijel.c I pišete program . . . printf("\n%d! = %d\n\n", n, f); return 0; } GCC, prevođenje Fibonačijevi brojevi, C, simplified

#include

int main(void) { printf("\nn = "); int n; I gcc -o faktorijel faktorijel.c scanf("%d", &n); I ls -lh int i = 1, j = 1, k, c; I zeleni faktorijel? printf("\n\n1\n1\n"); I ./faktorijel for (c = 2; c <= n; c++) I problemi sa velikim brojevima? { k = i + j; i = j; j = k; printf("%d\n", k); }

return 0; } korak napred, IDE, Code::Blocks

I IDE, Integrated Development Environment I Eclipse, Code::Blocks i Geany popularni . . . ovde C::B I gdb, command line, sami I kreirate projekat, Empty I Debug/Release version I Build I watches I breakpoints I start, step into, shift-F7 I izvršavanje korak po korak, F7 I na kraju build Release version I F7 ili button panel I watch Local variables I just to get acquainted . . . Uvod 1

I TEX (ili TeX), sistem za pripremu dokumenata, http://en.wikipedia.org/wiki/TeX LATEX  I deo  I Donald Knuth, http://en.wikipedia.org/wiki/Donald_Knuth, 70’s, 1978 taˇcno I Free/Open-Source Software (FOSS) I standard za slaganje teksta, posebno nauˇcnog, knjige, formule, import slika, ˇcak i crtanje . . . I Computer Modern family of fonts, http://en.wikipedia.org/wiki/Computer_Modern © Predrag Pejovi´c, I moˇze sve da se uradi, ali ponekad previˇse slobode ˇskodi, . . .

Uvod 2 Uvod 3

I LATEX (ili LaTeX), sistem makroa za TEX, http://en.wikipedia.org/wiki/LaTeX I „a document markup language and document preparation I suˇstinski, lako se uˇci system for the TeX typesetting program“ I zaista daje kvalitetan izgled dokumenata Markup? Lako ´cete nauˇciti html ako znate LAT X! I E I platforme na kojima je implementiran uglavnom free software Leslie Lamport, I I sve ˇsto je potrebno postoji kao free software http://en.wikipedia.org/wiki/Leslie_Lamport, 80’s I a potrebno je: A I LTEX je ono ˇsto se svakodnevno koristi I editor teksta I ima joˇs „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 LAT X changed the face of Mathematics”, an E-interview E Even if there were some point to teaching kids such an esoteric with Leslie Lamport, the author of LAT X E system, it couldn’t be done for the same reason that it’s been I Q: Is LATEX hard to use? impossible to raise the level of math and science in this country  I A: It’s easy to useif you’re one of the 2% of the population namely, kids can’t learn from teachers who don’t know the subject who thinks logically and can read an instruction manual. The well, and people who are good in math and science don’t become other 98% of the population would find it very hard or grade-school teachers. impossible to use.

Uvod 6, Leslie Lamport Editori za LATEX

I ima ih raznih, Wikipedia, liista i poredenje I neki free, neki ne Q: Three LATEX mistakes that people should stop making? I koncentriˇsemo se na free, samo njih ´cemo obraditi A: I moˇze bilo kakav editor, ˇcak i gedit ima context highlighting za 1. Worrying too much about formatting and not enough about TEX, poˇce´cemo 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ˇs . . . I dvi moˇze da se gleda i ˇstampa, http://en.wikipedia.org/ I pod win uglavnom MikTeX... wiki/Device_independent_file_format I prevodi *.tex file u *.dvi ili direktno u *.pdf I malo staromodan, mada radi . . . I pod lin, komandna linija I moˇze da se konvertuje u razne druge formate koriˇs´cenjem free latex software ili I dvips konvertuje dvi u ps latex .tex I dvipdf, dvipdfm, dvipdfmx konvertuju dvi u pdf rezultat .dvi I dvipng konvertuje dvi u gif ili png I za direktno prevodjenje u *.pdf I dvisvg, dvisvgm konvertuju dvi u svg pdflatex I ... ili I pravilo: ˇsto manje konverzija  to bolje pdflatex .tex

LATEX osobine LATEX resursi

I obeleˇzen tekst (markup language) I puno resursa na www, Google your problem I obeleˇzavanjem se oznaˇcava ˇsta sa pojedinim delovima teksta I http://www.tug.org/ treba raditi, ˇsta je naslov, ˇsta je naslov poglavlja, ˇsta je numerisana lista, ˇsta je nenumerisana lista, ˇsta je jednaˇcina . . . I http://www.tug.org/ctan.html http://www.andy-roberts.net/misc/latex/ I potrebno poznavati „komande“ I I http://en.wikibooks.org/wiki/LaTeX I LATEX „teˇzak“ za „proseˇcnog“ korisnika http://upload.wikimedia.org/wikipedia/commons/2/ I WYSIWYM I 2d/LaTeX.pdf, pdf verzija, 748 strana I WYSIWYG(WYSIAYG) i WYSIWYM konvergiraju? I proˇcitati do sutra . . . I preambula (header) i (obeleˇzen) tekst

LATEX resursi, za win ako baˇsho´ceteto LATEX resursi

I pod lin sve ve´c imate u repository, dovuˇcete Texmaker i to je sve ˇsto treba da uradite? I ne bas, ponekad mora joˇs nesto da se dodovuˇce, Synaptic http://miktex.org/ I I ili: sudo apt-get install texlive-full eventualno http://www.ghostscript.com/ I I bitno je da vam je mreˇza pri ruci ako nemate sredenu maˇsinu http://www.texniccenter.org/ I I po mom ukusu: http://en.wikibooks.org/wiki/LaTeX, I ili (po mom ukusu): http://www.xm1math.net/texmaker/ 748 strana I po mom ukusu: http://www.ctan.org/tex-archive/ info/lshort/english/lshort.pdf, 153 strane I ˇcitati uputstvo? I ako baˇs mora; bolji hands-on approach!

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

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

I u direktorijumu ste gde je p1.tex \documentclass{minimal} I kucate pdflatex p1 (ekstenzija .tex se ovde podrazumeva) \begin{document} I sve je gotovo (ako nema poruka o greˇskama) I pogledate pdf file sa evince p1.pdf Prva proba za \LaTeX. I ovaj prozor moˇzete da ostavite, automatski refresh (pod lin, doduˇse) Staˇ ´cebiti kada se pojave naˇsiznaci? I ovako ´cemo raditi neko vreme, sticanja navike i stava radi \end{document}

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

\documentclass{minimal} \documentclass{minimal}

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

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

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

znaˇcenjeTab i Enter primer 5, sreden input encoding

\documentclass{minimal}

I Tab sluˇzi u formatiranju “source” teksta \usepackage[utf8]{inputenc} I Tab se u izlazu ne vidi kao n*space \begin{document} I zapravo, ne vidi se uopˇste I jedan Enter je separator kao space Prva proba za \LaTeX. I sluˇzi da se pregledno formatira “source” ˇ I nov paragraf je prazan red, dva Enter Sta ´cebiti kada se pojave naˇsiznaci? I veoma povoljno u praksi A ostaje i: \v{S}ta \’{c}e biti kada se pojave na\v{s}i znaci?

\end{document} primer 6, specijalni znaci ne rade primer 7, specijalni znaci rade, sreden font encoding \documentclass{minimal} \documentclass{minimal} \usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc} \begin{document} \usepackage[T1]{fontenc} \begin{document} Prva proba za \LaTeX. Prva proba za \LaTeX. Staˇ ´cebiti kada se pojave naˇsiznaci? Staˇ ´cebiti kada se pojave naˇsiznaci? A ostaje i: \v{S}ta \’{c}e biti kada se pojave 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ˇzeautomatizovati

gedit napravi

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

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

\documentclass{minimal}

I od sada idemo u prijatnije okruˇzenje, Texmaker \usepackage[utf8]{inputenc} 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 Staˇ ´cebiti kada se pojave naˇsiznaci? Dvi -> PS je F4 I 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}

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

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

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

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

\end{document}

primer 11, package babel primer 12, specijalni znaci

\documentclass{minimal} \begin{document}

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

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

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

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

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

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

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

primer 15, itemize u problemu primer 16, itemize

\documentclass{minimal} \documentclass{article}

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

\begin{document} \begin{document}

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

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

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

\end{document} \end{document}

primer 17, enumerate primer 18, veliˇcina slova

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

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

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

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

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

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

\end{document} struktura dokumenta, WYSIWYM

LAT X E I zavisi od tipa dokumenta  II deo  I za article: \section{...} \subsection{...} \subsubsection{...} \paragraph{...} \subparagraph{...}

© Predrag Pejovi´c,

primer a, struktura dokumenta, 1 primer a, struktura dokumenta, 2

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

\usepackage[utf8]{inputenc} \maketitle \usepackage[T1, T2A]{fontenc} \usepackage[serbian]{babel} \section*{Abstract} Ovo je samo primer za odeljak koji nije numerisan, \\ \usepackage{datetime} * znaˇcida se ne numeriˇse. \usepackage[bottom=3cm,top=3cm,left=3cm,right=2cm]{geometry} \section{Uvod} \title{Primer jednog struktuiranog dokumenta} \author{Predrag Pejovi´c} U uvodu se piˇseˇstase radi i zaˇsto. \date{\today} Vaˇzandeo uvoda je i pregled postoje´cihrezultata, to pomaˇzeda se objasni zaˇstose neˇstoradi.

primer a, struktura dokumenta, 3 primer a, struktura dokumenta, 4

\section{Centralni deo 1} \section{Zakljuˇcak} Ovde ilustrujemo subsections. U zakljuˇckuse rezimira ˇstaje uradeno i kako. \subsection{Prvi pododeljak} Poneko voli i da kaˇzeˇstabi joˇsmoglo da se uradi. Kao ˇstorekoh, prvi pododeljak. \section*{Literatura} \subsection{Drugi pododeljak} Kao ˇstorekoh, drugi pododeljak. Ovaj odeljak se obiˇcnone numeriˇse, ali referenciranje je baˇsduga priˇca. \section{Centralni deo 2} \end{document} Nastavljamo sa izlaganjem \ldots

ˇstaje cilj primera? primer b, doterivanje naslova

I kako se automatski pravi naslov I boldujte naslov, \textbf{...}, radi obrisite datum, I \date{} \title{\LARGE I struktura dokumenta, numerisanje odeljaka \textbf{Primer jednog struktuiranog dokumenta}} I preglednost dokumenta, bilo gde nov red \author{\textsl{Predrag Pejovi´c}} I prazan red znaˇci nov paragraf \date{} I nov red sa \newline ili \\, bilo ranije I podelite dokument po stranama sa \newpage i/ili \clearpage I vertical space, \vspace{...} primer b, brisanje broja strane primer b, table of contents

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

\thispagestyle{empty} iza naslova:

ˇsto je vaˇzno kada automatski generiˇse naslov \vspace{3cm} \tableofcontents i/ili \newpage nenumerisani items nisu u table of contents! \pagestyle{empty}

kad prode naslov, odnosi se na strane osim prve

primer b, dodavanje items u table of contents primer c, joˇsmalo environments, 1

\begin{document}

\begin{Huge} \begin{center} \newpage Ovde su centrirana velika slova. \end{center} \section*{Literatura} \end{Huge}

\addcontentsline{toc}{section}{Literatura} \begin{flushright} ovde su normalna slova, \\ ali je sve poravnato \\ na desnu stranu \end{flushright}

\end{document}

primer d, joˇsmalo environments, 2 primer e, joˇsmalo environments, 3

\begin{document}

\begin{flushleft} \begin{document} Ovaj environment (okruˇzenje)ukida poravnavanje desne ivice, a to je ponekad potrebno. \begin{description} Primer su US patenti u postupku i neki pravni \item[Prvi] je onaj koji dolazi pre drugog dokumenti za koje se veruje da su ˇcitljiviji \item[Drugi] je onaj koji dolazi posle prvog ako se ne poravnava desna ivica, mada manje \item[Tre´ci]je u ovom sluˇcajuposlednji lepo izgledaju. O ukusima ne vredi raspravljati, \end{description} a u osnovi je sasvim svejedno. \end{flushleft} \end{document}

\end{document}

primer f, malo o razmacima primer g, joˇsmalo o razmacima

\documentclass[12pt, a4paper]{article} \documentclass[12pt, a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc} \usepackage[T1, T2A]{fontenc} \begin{document} \begin{document} \frenchspacing

Mi smo na ETF. Nismo na ETH. Mi smo na ETF. Nismo na ETH.

Mi smo na ETF\@. Nismo na ETH. % dodaje razmak Mi smo na ETF\@. Nismo na ETH.

\bigskip \bigskip

Ono je Prof. Davi´c. Ono je Prof. Davi´c.

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

\end{document} \end{document} primer h, jednaˇcine,stilovi i subscript primer h, jednaˇcine,superscript i grˇcka slova

\begin{document}

Numerisana jednaˇcina: Leonard Ojler je mnogo voleo jednaˇcinu

\begin{equation} \[ e^{i \pi} + 1 = 0 \] i_{123} = i_1 + i_{2} + i_3 \end{equation} \noindent Grˇckaslova su: $\alpha, \beta, \gamma, \delta, \[ i_{123} = i_1 + i_{2} + i_3 \] \ldots \omega$. Velika grˇckaslova su: $\Gamma, \Delta, \ldots \Omega$. a moˇzebiti i u tekstu $i_{123} = i_1 + i_{2} + i_3$ Svaki pristojan quick reference ima tabelu. Ve´cinaeditora, takode. moˇzei ovako $$ i_{123} = i_1 + i_{2} + i_3 $$ mada nije po standardu!

\end{document}

primer h, oznaˇcavanjeobjekata primer h, korenje i razlomci

Neka je \begin{equation}\label{prva} Korenje: $\sqrt{9}=3$, $\sqrt[3]{8}=2$. e^{i \pi} + 1 =0 \end{equation} Mi bi to pisali \bigskip \begin{equation}\label{druga} e^{j \pi} + 1 =0 Razlomci: $\frac{1}{2}$, $\displaystyle \frac{1}{2}$, \end{equation} $\frac{a}{b}$, $\frac{a+c}{b}$, moˇzei $1/2$, a moˇzei Sada se treba pozivati na jednаˇcinu(\ref{prva}) i jednaˇcinu(\ref{druga}).\\ \[ \frac{1}{2} \] % A moˇzei ovako: \eqref{prva} i \eqref{druga}! \[ \frac{a+b}{c} \] Dobra praksa je da se u \label piˇse i tip objekta, da se ne pojave slika, tabela i/ili jednaˇcina sa istim imenom. Primer: \label{eq:prva} Pogledajte package amsmath: \dfrac{}{} i \tfrac{}{}. Sredivanje referenci zahteva dva prolaza kompajlera, pokrenete ga dva puta za redom.

primer h, integrali, razmaci i sume primer h, o zagradama

Gustina verovatno´ce: $\int_{-\infty}^{\infty}{p(x) \, dx} = 1$. Ili \[ \int_{-\infty}^{\infty}{p(x) \, dx} = 1 \]. \noindent Malo o zagradama: Razmaci: \[ (\frac{a}{b}) \] $ab$ \[ \left( \frac{a}{b} \right) \] \[ \big( \frac{a}{b} \big) \] $a \, b$ \[ \Big( \frac{a}{b} \Big) \] \[ \bigg( \frac{a}{b} \bigg) \] $a \: b$ \[ \Bigg( \frac{a}{b} \Bigg) \] $a \; b$ I joˇsmalo: \[ \left| x + j y \right| = \sqrt{x^2+y^2} \] $a \! b$ I joˇsmalo: Jedno sumiranje: $\sum_{k=1}^{n}{k} = \frac{n (n+1)}{2}$. Ili \[ k \in \left\{1, 2, \ldots n \right\} \] \[ \sum_{k=1}^{n}{k} = \frac{n (n+1)}{2} \]

primer h, funkcije, operatori primer h, jednaˇcinesa matricama

Funkcije se piˇsu u plain fontu (ima i priˇca oko razmaka), dosta ih je uneto i poˇcinju sa\. Neke nisu (npr. sgn)! Mogu se dodefinisati, Matrice u jednaˇcinama: package amsmath, \operatorname. \[ \operatorname{h}(x) = \left\{ \[ \sin(x+y)=\sin(x) \, \cos(y)+\cos(x) \, \sin(y) \] \begin{array}{lll} \[ \sin^2 x + \cos^2 x = 1 \] 0, & \text{if} & x < 0 \\ \[ \cosh^2 x - \sinh^2 x = 1 \] \frac{1}{2}, & \text{if} & x=0 \\ \[ x \, \operatorname{sgn} (x) = |x| \] 1, & \text{if} & x>0 \[ \operatorname{h}(x)=1, \quad \text{if} \; x > 0 \] \end{array} \right. \] \[ \operatorname{h}(x)=0, \quad \text{if} \; x < 0 \] primer h, jedinice mere, plain font, amsmath, text primer h, jedinice mere, upgreek \usepackage[greek, serbian]{babel}

\noindent Jedinice mere se piˇsu u plain fontu, \\ \usepackage{upgreek} razmaknute od ,,brojne vrednosti‘‘.

\[ E = 10 \mbox{ V} \] \[ E=10 \text{ V} \] % daje potpuno isti output \[ C = 100 \, \mu\text{F} \] ispravno je: \[ t_0=1 \, \mu\text{s} \] \[ E = 10 \, \text{V} \] \[ C=100 \, \mbox{\textgreek{m}}\text{F} \] \[ C = 100 \, \mbox{\textgreek{m}}\text{F} \] \[ t_0 = 1\,\text{\textgreek{m}s} \] \[ t_0 = 1\,\text{\textgreek{m}s} \] % \[ C = 100 \, \upmu \text{F} \] Ovde ima problema sa grˇckimslovima, mnogi rade: \[ t_0 = 1 \, \upmu \text{s} \] % \[ C=100 \, \mu\text{F} \] % namerno je oko = ovako \[ t_0= 1 \, \mu\text{s} \] % namerno je oko = ovako primer h, matrice primer h, amssymb package

I ima simbola koje je definisao AMS... I to je American Mathematical Society, nije Auto-Moto Savez Matrice: I usepackage{amssymb} i \usepackage{amsmath} \[ \det I na CTAN, https://www.ctan.org \begin{bmatrix} dx a & b \\ I $v_X \triangleq \frac{d x}{d t}$ daje vX , dt c & d \\ I \circlearrowright i \circlearrowleft su  i \end{bmatrix} I a ima i \leadsto ˇsto je = a d - b c \] I kao i \looparrowleft ˇsto je " ... Pogledajte joˇs i okruˇzenja: matrix i pmatrix. I gde je levo, tu je i desno \looparrowright ˇsto je # I i joˇs puno simbola u amssymb ... I pogledatiLATEX symbols priprema slika

I vektorskai rasterska grafika, Wikipedia I za crteˇze prednost ima vektorska grafika LATEX formati od interesa , , (za latex) i (za pdflatex)  III deo  I dvi ps eps pdf od znaˇcaja joˇs i png i jpg, mogu da se importuju u pdflatex + XCircuit I I konverzija programima dvips, ps2eps, ps2pdf, pstopdf i + some scripting epstopdf, a ima i joˇs I nekih od ovih programa mozda nema instaliranih na sistemu, instalirati I od znaˇcaja: I epstopdf, konverzija eps slika u pdf I pdfcrop, obrezivanje pdf slika I pdffonts, prikazivanje fontova koji se koriste u dokumentu i njihovog statusa (embedded ili ne) © Predrag Pejovi´c, I convert, konverzija formata slike I pogledajte man za gornje programe joˇsmalo o grafiˇckimformatima . . . sin in gnuplot, po ko zna koji put, ako ve´cnemate 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 https://en.wikipedia.org/wiki/PostScript I I set terminal pdfcairo I https://en.wikipedia.org/wiki/Encapsulated_PostScript I set output "slika.pdf" I https://en.wikipedia.org/wiki/Portable_Document_Format I plot sin(x) I https://en.wikipedia.org/wiki/JPEG set output I https://en.wikipedia.org/wiki/Portable_Network_Graphics I 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ˇca kompresija! I replot I bez gubitaka (png, gif) I set output I proprietary versus free I Ctrl/d

slike i konverzije primer, unoˇsenjeslika, pdflatex

\documentclass[12pt,a4paper]{article} I napravili sin.eps probajte ps2pdf sin.eps \usepackage{graphicx} % package za unosenje slika I \usepackage[utf8]{inputenc} I pogledate sa evince sin.pdf \usepackage[T1,T2A]{fontenc} \usepackage[serbian]{babel} I baˇs ruˇzno! I da probamo pdfcrop sin.pdf \begin{document} evince sin-crop.pdf I Ovde ´cemoubaciti jednu sliku, sliku \ref{slika:sinus}. I neˇsto je uradeno, ali ne valja, nema ticks rm sin.pdf \begin{figure}[h!] I \centering I epstopdf sin.eps \includegraphics{sin.pdf} evince sin.pdf I \caption{Funkcija $\sin \left( x \right)$} I to je to \label{slika:sinus} \end{figure} I pokuˇsaji nisu bili besmisleni, vide´cete smisao kod ˇsema \end{document} komande za procesiranje i formati slika primer, unoˇsenjeslika, latex

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

I F8, ps → pdf, ⇔ ps2pdf \begin{figure}[h!] I F7, display pdf \centering \includegraphics{sin.eps} I latex “handle” samo ps i eps slike, konvertorvati I pdflatex “handle” pdf, png, jpg i gif, ne ps/eps \caption{Funkcija $\sin \left( x \right)$} \label{slika:sinus} I probati \end{figure}

\end{document} primer, unoˇsenjeslika, scaling primer, unoˇsenjeslika, rotate

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

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

\begin{document} \begin{document}

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

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

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

\end{document} \end{document} primer, unoˇsenjeslika, position primer, unoˇsenjetabela

\documentclass[12pt,a4paper]{article}

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

\end{document} primer, unoˇsenjetabela, centriranje primer, unoˇsenjetabela, phantoms

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

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

table tricks XCircuit

I program za crtanje elektriˇcnih ˇsema I dominantan gde je od znaˇcaja izgled I moˇze da crta i lakˇse tehniˇcke crteˇze malo neobiˇcan interface I joˇs mnogo toga se moˇze uraditi sa tabelama I malo neobiˇcna instalacija, synaptic potreban I korisno: https://www.cl.uni-heidelberg.de/courses/ I ss19/wissschreib/material/tableTricks.pdf I pravi PostScript files i sve radi na tom nivou I nije loˇse imati gornji pdf kod sebe, 16 strana samo I konvrzija u pdf sa epstopdf, fajl koji pravi XCircuit je .eps iako je ekstenzija .ps I pitanja stila, obratite paˇznju, kod nas sve tabele kao reˇsetke, pogledajte ˇsta drugi rade, ˇcesto samo tanke horizontalne linije I postoji i ps2pdf, razlike . . . I mogu´ce je uneti i LATEX lettering I pokre´ce se iz komandne linije sa xcircuit I manual: http://opencircuitdesign.com/xcircuit/ I mora da se pokaˇze, da probate, nezgodno za opis reˇcima, . . . I radimo primer zajedno, posle vi sami, ja pomaˇzem! zadatak: nacrtati i importovati u pdflatex LATEX lettering, nacrtati i importovati u pdflatex

+VCC +VCC

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

R1 RE CE R1 RE CE

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

\documentclass[a4paper,12pt]{article} latex ce2 \usepackage{graphicx} I I dvips ce2 \usepackage[margin=1cm]{geometry} I ps2eps -l -f ce2.ps -l je za loose format, 1 pt margine, \pagestyle{empty} -f je za force za overwrite I ovde stajete ako koristite latex; \begin{document} za pdflatex: epstopdf ce2.eps I evince ce2.pdf ili evince ce2.eps \input{ce2-raw.tex}

\end{document}

procesiranje, varijanta 2 procesiranje, script 1

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

generic container file, genfig.tex procesiranje, script 2

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

\end{document} procesiranje, script 3 procesiranje, script 4

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

procesiranje, script 5

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

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

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

I pozivanje na prethodne publikacije, vaˇzno! A LTEX I praktiˇcno standardizovan format  IV deo  I najˇceˇs´ce se lista referenci ureduje po redosledu pozivanja Referenciranje i Beamer I poziv na referencu je broj u uglastoj zagradi, npr. [1] I u posebnom odeljku (section) „Literatura“ (“References”) mora biti navedeno ˇsta je [1] I potrebno je navesti sve podatke kako bi citirana referenca mogla biti jednoznaˇcno odredena I ˇcesto ˇcasopisi specificiraju strog format reference I poseban format za knjige, radove u ˇcasopisima i radove na konferencijama © Predrag Pejovi´c,

Referenciranje u LATEX-u standardna preambula

\documentclass[a4paper,12pt]{article}

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

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

tekst reference

\begin{thebibliography}{[X]}

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

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

\end{document}

detalji, dashes A sada neˇstovaˇzno. . .

I http://en.wikipedia.org/wiki/Dash I “hyphen”, -, push-pull I “en-dash”, --, pp. 17–45 I “em-dash”, ---, IEEE Transactions on Circuits and Beamer SystemsFundamental Theory and Applications I “minus”, $-$, 3 − 2 = 1 I da ih uporedimo: -, –, , − I vidite li razlike? beamer, uvod 1 beamer, resursi

I user guide, 247 strana, joˇs jedna klasa dokumenata za LAT X I E http://www.ctan.org/tex-archive/macros/latex/ I popularan za pravljenje prezentacija contrib/beamer/doc/beameruserguide.pdf I rezultat je pdf file I primeri (jako vaˇzno!) http://www.informatik. I nema niˇsta od proprietary formata uni-freiburg.de/~frank/ENG/latex-course/ I po svemu sude´ci pdf ´ce dugo mo´ci da se ˇcita, recycle stare latex-course-3/latex-course-3_en.html prezentacije, . . . I preporuˇcujem: http: I Berkeley, EPFL, . . . //www.tug.org/pracjourn/2005-4/mertz/mertz.pdf, 17 strana I na „nemaˇckom“ je projektor beamer I Q: Kako to obiˇcno funkcioniˇse? I nije jedino reˇsenje, ali ubedljivo najzastupljenije I A: Primer koji vam se dopada dovuˇcete i modifikujete.

beamer, ciljevi beamer, header

I osnovna prezentacija, frame (128mm x 96mm) I dinamika prezentacije (pause, onslide) I liste (itemized i enumerated) I jednaˇcine I ne treba graphicx I slike I ne treba xcolor, color, . . . I boje I dve kolone I handouts I „teme“ I nema previˇse alata za sakrivanje nedostatka sadrˇzaja u prezentaciji

napomena beamer, tipiˇcan header

\documentclass{beamer}

% poˇcetak:moˇze,ali ne mora %\end{frame} \usetheme{default} % {Copenhagen} {Goettingen} \setbeamercovered{transparent} % ovo je vaˇzno za dinamiku znаˇci: \usecolortheme{default} % {seahorse}{rose}{wolverine}{infolines} % kraj: moˇze,ali ne mora

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

\usepackage{datetime}

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

beamer, naslov, prvi slajd, doradiva´cemo dinamika obiˇcnogteksta

\section{dinamika obiˇcnogteksta} \begin{document} \begin{frame}{jednostavna dinamika} \begin{frame} \pause \titlepage prva \\ \pause %\end{frame} druga \\ \pause \end{document} tre´ca

%\end{frame} sloˇzenadinamika itemized list

\section{itemized list} % nece se odmah videti

\begin{frame}{sloˇzenadinamika} \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´ca}\\ \item <4-> tre´castavka \item <2-> joˇsjedna 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´castavka \item <+-> tri \end{itemize} \end{itemize}

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

numerisane liste progresivno boldovanje

\section{enumerated list i jednaˇcine} \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´ci} \item <4-> tre´ci \end{enumerate} \end{enumerate} %\end{frame} %\end{frame}

jednaˇcine 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, ipython3 ubacivanje slike

komandna linija, terminal: \section{mogu slike}

\begin{frame}{slika} ipython3 --pylab dm = 360 \pause deg = linspace(- dm, dm, 2 * dm + 1) y = cos(radians(deg - 45)) ˇcestoje potrebno ubaciti neku sliku, npr. png sliku plot(deg, y) xlim(- 360, 360) \pause xticks([-360, -270, -180, -90, 0, 90, 180, 270, 360]) \includegraphics[scale=0.35]{slika.png} ylim(- 1.5, 1.5) xlabel(’x [deg]’) \pause ylabel(’y = cos(x - pi/4)’) ˇstoje 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->{ˇcestoje 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->{ˇstoje odavno poznata funkcija} \textcolor{magenta}{a ova?} \\ \pause \setbeamercovered{dynamic} \textcolor{yellow}{ˇzuta} \\ \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} \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 \usefonttheme{serif} \documentclass[handout]{beamer} I tema default na Goettingen sections sada dobijaju smisao reˇsava posao, ali krupno I I tema na Copenhagen \usepackage{pgfpages} \pgfpagesuselayout{2 on 1}[a4paper, border shrink=5mm] I zaˇsto li je ovo popularno? \pgfpagesuselayout{4 on 1}[a4paper, landscape, border shrink=5mm] moˇzete se igrati sa colortheme \pgfpagesuselayout{8 on 1}[a4paper, border shrink=2mm] I I primeri: http://www.informatik.uni-freiburg.de/ ima joˇs puno toga, odliˇcni web resursi! ~frank/ENG/latex-course/latex-course-3/ latex-course-3_en.html I vodite raˇcuna o vremenu! I ovo ´ce biti bonus deo (30%) prvog kolokvijuma! Python?

I programski jezik I Wikipedia: Python, I deo I “Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive. Its use of indentation for block delimiters is unique among popular programming languages.” I “The reference implementation of Python (CPython) is free and open source software and has a community-based development model, as do all or nearly all of its alternative implementations. CPython is managed by the non-profit © Predrag Pejović, 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: već ima interpreter, sigurno I Windows: I provera: komandna linija, python3 nekad bilo python Python 3.8.5 (default, Jul 28 2020, 12:59:40) I http://python.org/ [GCC 9.3.0] on linux I 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 (za Python 3!): I ili https://pypi.org/project/pip/ I IDLE I ili https://www.anaconda.com/products/individual I IPython I ipython+numpy+scipy+matplotlib+R+. . . 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? 3! Python, dokumentacija

I rešeno, verzija 2 više „nije podržana“ I forking, 3 je „nov“ jezik verzija 3 nema backward compatibility I I http://www.python.org/doc/, sve što treba nisu prevelike razlike (print, input, range, za početak) I I http://ocw.mit.edu/, Python kursevi, ima više problem sa već napisanim programima I I isto, edX problem ako se oslanjate na već postojeće programe I I https://openbookproject.net/thinkcs/python/english3e/ koristim numpy, matplotlib, . . . pylab I I https://greenteapress.com/wp/think-python-2e/ bilo neočekivano brzo prebačeno I I još mnogo free resursa, realno je samo #1 potrebno verzija 3 je aktuelna, nju predajem I I izbor ostalog izlistan na sajtu predmeta I python3

Python 3.8.5 (default, Jul 28 2020, 12:59:40) [GCC 9.3.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: 1. PyCharm, https://www.jetbrains.com/pycharm/ I http://www.python.org/doc/ I popularno . . . I A4, pdf, .zip, 15.2 MB I Edtitions: Python 3.9.1rc1, December 03, 2020 1.1 Professional (proprietary!) I 1.2 Community (“Open Source”) I tutorial.pdf, Python Tutorial, 147 strana I ne koristim ga, nekompetentan za komentare I reference.pdf, The Python Language Reference, 168 strana 2. Thonny, https://thonny.org/ I library.pdf, The Python Library Reference, 2084 strane I ima ga Raspbian, RaspberryPi I ne koristim, samo pogledao, . . . I ↑ ovde je suština uspeha

Python, počinjemo, kalkulator Python, mislili ste da je sa deljenjem gotovo?

Pokrenete IDLE ili ipython, kako god znate (kom. lin., dash, . . . )

osnovne operacije:

2+2 10//3 2-3 10.0/3.0 2*3 10.0//3.0 -10.0//3.0 od verzije 3 nema iznenađenja: -10//3

3/4*100 3.0/4.0*100.0 3.0/4*100 3./4*100

Python, type i celobrojno deljenje Python, stepenovanje

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

Python, ostatak pri 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) != "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("int")

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

def parnost(n): def parnost(n): if str(type(n)) != "": if type(n) != type(1): print("argument nije tipa ’int’") 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 = range(5) len(a) a = [1, 2, 3, 4] print(a) a.append(5) type(a) print(a) a = list(range(5)) b = [6, 7] len(a) a.append(b) print(a) type(a) print(a) a = tuple(range(5)) len(a) len(a) del a[5] print(a) a.extend(b) type(a) print(a) a = list(range(4, 10)) len(a) len(a) del a[5:] print(a) print(a) a = list(range(3, 10, 2)) print(a) a = list(range(10, 0, -2)) print(a)

Python, stack Python, liste, insert

a = [] type(a) a.append(1) a = list(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 = list(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 = list(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

print(a) 3 in a a.index(2) 4 in a a.index(5) a.remove(4) a.index(1) 4 in a 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) for i in a: print(i + 1, ’/’, len(a)) a = ’neobicno bas’ for znak in a: ili print(znak) a = list(range(10)) for i in a: print(i + 1, ’/’, len(a))

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

© Predrag Pejovi´c,

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

strana 68(90): pokrenete IDLE . . . One of the characteristics of algorithms is that they do not I require any intelligence to carry out. They are mechanical processes I File, New File (Ctrl + N) in which each step follows from the last according to a simple set of I kucate program rules. I sintaksna provera: Run, Check Module (Alt + X) In our opinion, it is embarrassing that humans spend so I start programa: Run Module (F5) much time in school learning to execute algorithms that, quite literally, require no intelligence. I u IDLE je run exec(open(’filename.p’).read()) On the other hand, the process of designing algorithms is I u ipython3 radi i run filename.p 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 3, input Python 2, input

x = input(’neki podatak: ’) print(x, type(x))

while(True): x = input(’neki podatak: ’) print(x, type(x)) x = input(’unesi neki podatak: ’) while(True): print type(x) x = int(input(’neki ceo broj: ’)) print x print(x, type(x)) probati: 1, 3.0, ’podatak’ while(True): x = input(’neki ceo broj: ’) try: y = int(x) print(y, type(y)) except: print(x, ’pogreˇsanpodatak’) Python 2, raw_input Python, formatted print

calculator mode, again

print(’{’) x = raw_input(’unesi neki podatak: ’) print(’{}’) print type(x) print(’{}’.format(’Pera’)) print x print(’{}, {}’.format(’Mika’, ’Laza’)) probati: 1, 3.0, ’podatak’ print(’{0}, {1}’.format(’Mika’, ’Laza’)) print(’{1}, {0}’.format(’Mika’, ’Laza’)) print(’{1}, {1}’.format(’Mika’, ’Laza’))

Python, formatted print, brojevi Python, stringovi, joˇsponeˇsto

print(’p = {}, q = {}’.format(3, 4)) a = ’Petar’ print(’p = {}, q = {}’.format(3.0, 4)) b = ’Marko’ print(’p = {1}, q = {0}’.format(3, 4)) len(a); len(b) import math a + b print(’pi = {:.2f}’.format(math.pi)) a * 3 print(’pi = {:.5f}’.format(math.pi)) 3 * a print(’pi = {:10.5f}’.format(math.pi)) (a + 2 * b) * 3 print(’n = {:10d}’.format(100)) a - b print(’n = {:4d}’.format(100)) a == a print(’n = {:3d}’.format(100)) a == b print(’n = {:1d}’.format(100)) a < b b < a ima joˇs mogu´cnosti, pogledajte Tutorial ’1’ < ’2’ postoji i formatiranje sa %, staro ’1’ < 2 koristiti str.format() metod za nove programe!

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

del s

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

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

Python, OS,ˇ 1 Python, files, pisanje

f = open(’proba.txt’, ’w’) print(f) type(f) Vreme je za zadatak: f I ulazni podatak je broj, n < 20 (npr.) f.write(’prvi red\n’) I treba odˇstampati LEPU (formatiranu) tablicu mnoˇzenja f.write(’drugi red\n’) f.write(’treci red\n’) Polako, sada imamo preˇca posla . . . f.close # metod, obavezne() f.close() type(f) f

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

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

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

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

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

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

Python, class Python, class

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

help(Vector)

class Vector: class Vector: ... """Vector(x, y, z) def __init__(self, x, y, z): self.x = x klasa koja definise vektore self.y = y i operacije nad njima""" self.z = z note: nema viˇse pass! i = Vector(1, 0, 0) help(Vector)

Python, inicijalizacija, dodajemo na class, help 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) print(i - j) del sv print(i - j - k) sv = Vector.__add__ print(Vector.__sub__(k, j)) sv print(k.__sub__(j)) type(sv)

print(sv(i, j)) print(sv(3, 4)) Python, opet operator overloading, negativni Python, ˇstampanjekao 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ˇzenjaskalarom

class Vector: class Vector: ...... def scalprod(self, other): def dotprod(a, b): return Vector(self.x * other, \ dp = a.x * b.x + a.y * b.y + a.z * b.z self.y * other, self.z * other) return dp print(Vector.scalprod(i, 3)) print(Vector.dotprod(i, j)) print(Vector.scalprod(3, i)) print(Vector.dotprod(j, i)) print(k.scalprod(3)) a = Vector(2, 2, 0) print(3.scalprod(k)) print(a.dotprod(j)) j.scalprod(3).pr() print(a.dotprod(k)) 3.scalprod(i).pr() a.dotprod(k).pr() a = 3 k.dotprod(i).pr() # zaˇstone radi? a.scalprod(i).pr()

Python, overloaded * Python, overoverloaded *

class Vector: ... class Vector: def __mul__(self, other): ... return Vector.dotprod(self, other) def __rmul__(self, other): return Vector.scalprod(self, other) print(i * 3) print(i * i) print(3 * i) print(i * j) print(i * 3) print(i * k) print(i * j) print(i.__mul__(i) print(i * i) (i * i).pr() print(i.__rmul__(3)) i * i i.__rmul__(3).pr() i * j Python, a sada poredenje, 1 Python, a sada poredenje, 2

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

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

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

Python, a sada neˇstosasvim razliˇcito,map Python, a sada neˇstoneoˇcekivano

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

Python, dictionary Python, sets

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

def reciproc(x): def reciproc(x): try: try: return 1 / x return 1 / x except: except ZeroDivisionError: print(’Houston, we have a problem!’) print(’deliˇsnulom!’)

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

Python, exceptions, 2 Python, exceptions, 3

def reciproc(x): try: return 1 / x I “built-in” exceptions? except ZeroDivisionError: I http://docs.python.org/3/library/exceptions.html print(’deliˇsnulom!’) except TypeError: I ovo je samo poˇcetak . . . print(’nije dobar broj’) I moˇzete sami da definiˇsete exception . . . I ili da raise exception . . . reciproc(3) I ako vas zanima reciproc(3.) http://docs.python.org/3/tutorial/errors.html reciproc(0) reciproc(0.) reciproc(1 + 1j) reciproc(’a ovo?’)

Python, start programa iz shell-a Python, rendering

python3 ime_programa.py

ili print(’\n\n\n’) ./ime_programa.py

akko je PRVA linija programa: print(r’\n\n\n’)

#! /usr/bin/python3 print(’\\n\\n\\n’) i ako je uradeno

chmod +x ime_programa.py

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

Python, nije kraj, ovo je poˇcetak!

I ima joˇs mnogo toga, ovo je samo osnova I pre svega biblioteke, moduli . . . I mnogo toga je gotovo, vaˇsa je primena! I glue language! I ostaju numpy, matplotlib, ipython, pylab, sympy I a sada: tablica mnoˇzenja Šta je PyLab?

Python, III deo: I environment koji cine PyLab i Jupyter I NumPy I SciPy I Matplotlib I IPython I kako se instalira pylab? I Ubuntu: Software Center ili Synaptic I win: https://www.anaconda.com/products/individual

© Predrag Pejović,

IDE? Spyder! NumPy

I http://www.numpy.org/ I osnovna biblioteka za numerički zahtevne Python primene, sadrži: I potrebno? 1. N-dimensional array object I kako kome, kako za šta . . . 2. array slicing methods 3. array reshaping methods IPython3 meni sasvim dobar . . . I i module za: I . . . postoji i Spyder 1. basic linear algebra functions I https://pypi.python.org/pypi/spyder 2. basic Fourier transforms 3. advanced random number capabilities I ako nema dovucite iz repository . . . I pokrenete IDLE I ima i pod win, Anaconda I import numpy I dir(numpy) I help(numpy) I del numpy

NumPy SciPy

I http://www.scipy.org/ I scientific lib za Python, zavisi od NumPy I obradićemo, sve, naravno, imamo vremena, . . . I nekoliko modula in a single package, kao i NumPy I evolutivno nastao, „haotično“ iz Numeric i NumArray I moduli za: nema načina da se zapamti i nije „zauvek“ I 1. statistics I potreban nov način učenja i snalaženja 2. optimization I izbeći reinventing 3. numerical integration 4. linear algebra I masovno korišćenje help-a i primera 5. Fourier transforms I Matlab-Python-R 6. signal processing 7. image processing 8. ODE solvers 9. special functions

SciPy matplotlib

I i dalje u IDLE import scipy I I http://matplotlib.sourceforge.net/, sjajan sajt dir(scipy) I I package sa dugim nizom modula help(scipy) I I jako dobro se vidi struktuiran namespace, package.modul del scipy I I ono što ima sjajno je, a sada ima skoro sve dobro razmislite pre nego što krenete u reinvent! I I galerija i primeri ja ovo ne mogu da zapamtim, sto zapamtim zaboravim I I uputstvo, 3.2.1, pdf, 2598 strana, 19.03.2020. pomenuh li nov način učenja? I I sintaksa vrlo liči na Matlab i Octave I kako organizovati informacije, previše ih je (i kratko traju) I “Numerical Recipes” IPython i Jupyter PyLab

I http://ipython.org/ I https://jupyter.org/ I sve prethodno zgodno spakovano I interaktivni Python envirinment I sređen namespace da ne mora puno dot notation I autocompletion by tab I sintaksa jako liči na Octave/Matlab I doteruje komande da budu shvaćene I počinjemo, komandna linija, terminal I od mnogo mogućnosti: store, history, logging, . . . I ipython3 --pylab I Jupyter, isto samo u web browser okruženju! I web server, može da se izvršava na nekoj drugoj mašini

PyLab, IPython, osnovno PyLab, IPython, store

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

Pylab, matematika, konstante Pylab, matrice 1

pi a = array([[1, 2], [3, 4]]) e a j a.size 1j a.shape exp(1j * pi) a.ndim math.exp(1j * pi) a.dtype help(exp) a.dtype.name help(math.exp) a.itemsize exp? a.transpose() math.exp? transpose(a) e**(1j * pi) + 1 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 / kod Python 2! 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 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 *

deg = linspace(0, 4*360, 4*360 + 1) wt = radians(deg) 0.06

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

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

w(x) 0.03

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

0.01 np.save(’deg.npy’, deg) 0.00 np.save(’f.npy’, f) 5 4 3 2 1 0 1 2 3 4 5 x np.save(’fp.npy’, fp)

np.savetxt(’dat.txt’, dat, fmt=’%.4f’) Pylab, run, #1 Pylab, run, #2 i #3

na komandnoj liniji: inside IPython: python3 dat.py more dat.txt run dat.py less dat.txt exec(open(’dat.py’).read()) ls *.npy execfile radi i kod IDLE ipython3 --pylab

Pylab, after the run datslik.pdf

np.save? np.savetxt? prigu ena sinusoida 1.00 np.load? deg = np.load(’deg.npy’) 0.75 f = np.load(’f.npy’) fp = np.load(’fp.npy’) 0.50

fm = -fp 0.25 plot(deg, f, ’r’) plot(deg, fp, ’b’) 0.00

plot(deg, fm, ’b’) f(wt), fp, fm 0.25 xlim(0, 360 * 4) xticks(arange(0, 360 * 4 + 1, 180)) 0.50 xlabel(’wt [deg]’) 0.75 ylabel(’f(wt)’)

grid(True) 1.00 0 180 360 540 720 900 1080 1260 1440 savefig(’datslik.pdf’) 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’) 2 0.4 y = x 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$’) 0.0 savefig(’kvadrat.pdf’, bbox_inches = ’tight’) 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, rcond = None) 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 Jupyter fitovanje krive, najmanji kvadrati

1.0 I „notebook“ okruženje za računanje I lako dokumentovanje rezultata 0.8 I nastao iz ipython, language agnostic I radi i sa python i sa julia i sa sage i sa . . . 0.6 I pokrene web server, sve se radi kroz browser y I popularno i za cloud applications 0.4 I https://jupyter.org/ I https://en.wikipedia.org/wiki/Project_Jupyter 0.2 I sretaćete se sa ovim još . . . I za sada samo primer . . . 0.0

0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 x Numerical Computing

GNU Octave I vrlo često u tehnici I retko stvarni problemi imaju closed-form solution I čak i kad imaju, pitanje upotrebljivosti I mnogo detalja — numerički pristup I u početku tretirano kao numerologija . . . I kolika je „saznajna vrednost” nekog rešenja i kako se meri?

© Predrag Pejović,

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

I diminira(o) Matlab Wikipedia, http://en.wikipedia.org/wiki/Comparison_ I I GNU Octave of_numerical_analysis_software, 26.12.2020: I “General numerical computing package with lots of extension I “Numerical computation and simulation with extended 2D/3D modules. Syntax mostly compatible with MATLAB” visualization. Emphasis on vectorised processing.” I “GPL” “Proprietary” I I “Free” 2014: “$2150 (commercial) / $99 (student)” I I John W. Eaton 2014: $300 manje nego pre tri godine, isto kao prošle i I I 1988 pretprošle godine I 2015: “$2650 (standard) / $625 (education)” I https://www.gnu.org/software/octave/ I 2017: “$2650 (standard) / $625 (education)” I uglavnom sintaksa kao za Matlab, ali ima i nadgradnje i I 2018: “$2150 (standard) / $500 (education) / „podgradnje“ $149 (home) / $49 (student) I 2020: “$2150 (standard) / $500 (education) / I nadgradnje: i++, ++i, i--, #, do petlja, . . . $149 (home) / $49 (student) I najveća razlika packages (toolboxes), mada rastu brzo! 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 FreeMat (prilično neaktivan poslednjih godina) I search “octave” I toolboxes, dodatna dokumentacija, . . . I Python, PyLab . . . prednosti modernog jezika I win: I R, statistika I nije bio kao pod GNU/Linux I Julia, jako brzo, vrlo budućnost ... I ima toolboxes I ... I sada: link I Da li vam je potreban GUI? Ima sada i to, by default! (na moju žalost)

okruženja literatura, dokumentacija

da navedem tri: I dokumentacija koja ide uz GNU Octave, odlična, tu je sve što 1. octave-cli, command line interface je realno potrebno 2. octave, GUI, od verzije 4 I https://www.gnu.org/software/octave/octave.pdf, 1121 strana! 3. jupyter-notebook, mora da se instalira octave_kernel koristeći pip3 sa komandne linije I tutorials na www, mnogo I izbor linkova, http://tnt.etf.rs/~oe4sae/ zbog izgrađenih navika na predavanjima uglavnom octave-cli I napomena 2018: GNU Octave 4.4.1, 1060 strana!!! pokrenemo sva tri okruženja i vidimo verzije I napomena 2020: GNU Octave 6.1.0, 1121 strana!!! ver pocinjemo, GNU Octave kao kalkulator Inf i NaN

2+2 2 + 2 # može space okolo, preporuka 2-3 3^6400 # Infinity, Inf 2*3 5 / Inf 3/4 5 * Inf 3.0/4.0 0 / 3 10/3 3 / 0 -10/3 0 / 0 # Not a Number, NaN 2^3 4 * NaN 3^2 5 / NaN 3^3 10^10 % sve su to floats! 3^64 3^640 # još nije Inf

promenljive, ; i ans kompleksni brojevi

a = 3 a = 4; # odziv suppressed čist run, dok niste predefinisali i i j a disp(a) # uočite razliku, nema a = . . . i^2 b = 5 j^2 a + b 1 + j ans # kod Python-a je ovo _ 3 + 4j abs(3 + 4j) clear all arg(1 + j) a 180 / pi * arg(1 + j)

3 + ... 2

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) ima i podršku za objektno orijentisano programiranje 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 / 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

clear all a a = 3 b b = 5 string string = ’string’ clear all x = [1 2; 3 4] a save ws # ceo workspace! b clear all string load ws load ws a a sada uradite b gedit ws string sa komandne linije, van octave, ili double click na ws

funkcije sa nizovima plot, 2d

deg = 0 : 360; plot(deg, s) length(deg) plot(deg, c) wt = deg * pi / 180; hold on s = sin(wt); plot(deg, s, ’r’) s2 = s .* s; close all rmss = sqrt(mean(s2)) plot(deg, s, deg, c) rmss - 1 / sqrt(2) hold on c = cos(wt); plot(deg, s2, ’m’, deg, c2, ’c’) c2 = c.^2; axis([0 360 -1 1]) # mora , in Python rmsc = sqrt(mean(c2(1 : length(c2) - 1))) set(gca, ’XTick’, 0 : 90 : 360) rmsc - 1 / sqrt(2) xlabel(’wt [deg]’) rmsc = sqrt(mean(c2(1 : end - 1))) ylabel(’sin, cos, sin^2, cos^2’) rmsc - 1 / sqrt(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’) print(’slika.jpg’, ’-djpg’) print(’slika.svg’, ’-dsvg’)

pogledajte png, pdf, eps, jpg i svg sliku, različite u odnosu na ekran, a i međusobno! svaki drajver specifičan, kao kod gnuplot-a, što je do verzije 4.0 bio default graphics renderer, a sada optional slika.pdf, cropped slika.eps

funkcije funkcije 1 1

0.5 0.5 2 2 , cos , , cos , 2 2 0 0 sin, cos, sin cos, sin, sin, cos, sin cos, sin,

-0.5 -0.5

-1 -1 0 60 120 180 240 300 360 0 90 180 270 360 wt [deg] wt [deg]

slika.jpg save i load, drugi deo

whos

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

save data data

clear all data load data data

gedit data

subplots rp.pdf, cropped

0 # frekvencijske karakteristike, realan pol u 1

close all -10

w = logspace(-2, 2, 401); s = j * w; -20

H = 1 ./ (1 + s); 20 log|H(jw)| 20 -30 h = 20 * log10(abs(H)); phi = 180 / pi * arg(H); -40 figure(1) 10-2 10-1 100 101 102 w subplot(2, 1, 1) semilogx(w, h) axis([0.01, 100, -40, 0]) 0 xlabel(’w’) ylabel(’20 log|H(jw)|’) grid()

subplot(2, 1, 2) -45 semilogx(w, phi)

axis([0.01, 100, -90, 0]) arg(H(jw)) set(gca, ’YTick’, [-90, -45, 0]) xlabel(’w’) ylabel(’arg(H(jw))’) grid() -90 10-2 10-1 100 101 102 print(’rp1.pdf’, ’-dpdf’) w

packages linearne jednačine

hoću da rešim sistem jednačina: ono što Matlab zove toolboxes rastu i napreduju! x + y = 3 pravi trenutak je ovde! x − y = 1

pkg load control a = [1, 1; 1, -1] H = tf([1], [1 1]) b = [3; 1] bode(H) b = [3 1]’ a \ b # linear least squares ima još packages! inv(a) * b menjaju se! cond(a) # condition number . . . synaptic rcond(a) rref(a) # reduced row echelon form if if-elseif-else

i = 2; if i == 1 i = 1; disp(1) if i == 1 elseif i == 2 disp(1) disp(2) endif else disp(0) endif if i == 1 disp(1) i = 2; else if i == 1 disp(0) disp(1) endif elseif i == 2 disp(2) endif

switch funkcije

napravimo pdv.m, a tribute to a colleague i = 2; if i == 1 function y = pdv(x) disp(1) #ovo je jednostavna funkcija koja računa pdv elseif i == 2 # disp(2) #poziva se sa pdv(x) i vraća 1.2 * x endif

switch i y = x * 1.20 case 1 endfunction disp(1) case 2 pdv(100) disp(2) case 3 pdv(0) disp(3) pdv(200.0) otherwise pdv([1 2 3 4 5]) disp(0) pdv(’wrong?’) endswitch help pdv

for petlja while petlja

for i = 1 : 100 disp(i) endfor i = 0; for i = [1,2,3,5,3,2,6,7,9,1,10] while (i <= 100) disp(i) disp(i++) endfor endwhile

for i = ’pera mika laza zika’ disp(i) endfor

while petlja break

i = 0; i = 0; while (i <= 100) while (i <= 100) if i > 73 disp(i++) break endwhile endif disp(i++) endwhile continue do petlja

# los program! i = 0; while (i <= 100) i = 0; i++; do if rem(i, 2) == 0 i++; continue disp(i) endif until i == 100 disp(i) endwhile

# bolje je ovako: i = 0; i = 0; do while (i <= 100) i++; i++; disp(i) if rem(i, 2) != 0 until (i == 100) disp(i) endif endwhile i još mnogo toga . . .

I GNU Octave je jako bogat funkcijama! I sjajan reference manual, 1121 strana! I ovo uputstvo će biti dopunjavano, proširivano . . . I toolboxes, packages . . . I jezik raste, mogućnosti rastu! I a sada? koristi se, ali Python, Julia, . . . I mora da se predaje, Matlab je uzrok I mnogo toga ima, prioritet? I od kada je ovaj predmet započet, 2010. godine, mnogo toga je nastalo! SageMath, uvod 1: ˇstaje to CAS?

I treba predavati u prvoj godini studija (joˇs jedna jeretiˇcka misao) SageMath I symbolic computation, algebraic computation, computer algebra... I nekad smatrano za umnu delatnost . . . I u osnovi manipulacija stringova po utvrdenim pravilima . . . I se´cate se zbirke Demidoviˇc? I sve ovo moˇze da se automatizuje i automatizuje se odavno, Macsyma poˇceta 1968, . . . I computer algebra systems (CAS)? http://en.wikipedia. © Predrag Pejovi´c, org/wiki/Comparison_of_computer_algebra_systems

SageMath, uvod 2: CAS proprietary alternative SageMath, uvod 3: CAS slobodne alternative

Maxima, a computer algebra system, GPL I Mathematica, $2,495 (Professional), $1095 (Education), I $140 (Student), $69.95 (Student annual license), $295 I http://en.wikipedia.org/wiki/Maxima_(software) (Personal), free on hardware I http://maxima.sourceforge.net/ I Maple, $2,390 (Commercial), $2,265 (Government), $995 I zasnovana na MIT Macsyma, (Academic), $239 (Personal Edition), $99 (Student), $79 http://en.wikipedia.org/wiki/Macsyma (Student, 12-Month term) I William Frederick Schelter, GPL, DOE Macsyma 1982 I navijaˇcke strasti, Maple vs. Mathematica http://en.wikipedia.org/wiki/Bill_Schelter I Symbolic Math Toolbox (MATLAB), $3,150 (Commercial), I star program, ali aktivno se razvija $99 (Student Suite), $700 (Academic), $194 (Home) including I ukljuˇcen u Scilab i Euler Math Toolbox required Matlab I ukljuˇcen u SageMath, http://en.wikipedia.org/wiki/ I bio popularan Derive, http://en.wikipedia.org/wiki/ Sage_(mathematics_software) Derive_(computer_algebra_system), discontinued 2007 I napredno: SageMath, http://www.sagemath.org/

SageMath, uvod 4: CAS slobodne alternative SageMath, uvod 5: SageMath, konaˇcno

I SymPy paket za simboliˇcko raˇcunanje koriste´ci Python I http://www.sagemath.org/ I cilj: isto ˇsto i wxMaxima I od 24.02.2005, GPL I ideja: Python sintaksa, poznata I Python sintaksa I moduli, funkcije za simboliˇcko raˇcunanje I koristi Maxima i SymPy i mnoge druge free programe, I http://sympy.org/en/index.html kombinuje ih I https://github.com/sympy/sympy/releases I zato je napuˇstena politika dva alata za jedan posao I http://live.sympy.org/ I Literatura: I uputstvo 1.7.1, 2592 strane, 11.12.2020; ˇcitate stranu po 1. Mathematical Computation with Sage stranu? 2. Sage for Undergraduates I usput, uputstvo 1.3, 2044 strane, 14.09.2018; napreduje? I za Ubuntu 20.04 ukljuˇcen u repository I Ubuntu: Software Center ili Synaptic I koristi pun kapacitet free software ideologije, kombinuje puno razliˇcitih alata u novu funkcionalnost, izbegava “reinventing I volite Mathematica sintaksu? the wheel” I odliˇcan pregled i tutorial I autor (pokretaˇc) programa: William A. Stein I za one koji vole matematiku: http://www.sagemath.org/

SageMath: poˇcetaksa komandne linije SageMath: faktorizacija celih brojeva, ˆ i **

I za moj uzrast i vid na manje od 1 m bilo je zgodno prometiti color scheme terminala na light I factor(123456789) I sage I _ I pogledajte ime terminala, IPython I type(_) I whos I _ I 3 + 2 I factor(123456789) I factorial(100) I expand(_) I x = factorial(100) I type(_) I type(x) I zaista dynamic typing! I whos I 3^2 I del x I 3**2 I whos SageMath: polinomi SageMath: jupyter

I izadete iz sage, ˆd (ctrl/d) type(x) I I na komandnoj liniji: x = var(’x’) I I sage -n jupyter type(x) I I saˇcekate da se otvori browser, New, SageMath 9.0 p = x^2 + 2 * x + 1 I I alternativa, na komandnoj liniji p I I jupyter-notebook show(p) I I dalje isto . . . print(p) I I modernija alternativa, na komandnoj liniji pretty_print(p) I I jupyter lab latex(p) I I dalje sliˇcno, drugaˇciji interfejs factor(p) I I server se gasi sa ctrl/c (ˆc) na komandnoj liniji ili sa Quit u I p.factor() osnovnom jupyter prozoru I p.roots() I shortcut keys, da se pojave h I ponavljamo dosadaˇsnje . . .

SageMath: razlomci, konstante i numerika 1 SageMath: razlomci, konstante i numerika 2 1/2 i^2 type(_) I^2 10/26 pi z = 1/2 - 1/3; z show(_) zz = 1./2 - 1/3; print(zz); print(type(zz)) pi.n() show(z) e^(i * pi) + 1 type(z) e.n(digits = 100) (z).n(digits = 10) pi.n(digits = 500) (z).n(digits = 100)

SageMath: razlomci, konstante i numerika 3 SageMath: razlomci, konstante i numerika 4

r = e^(pi * sqrt(163))

r.n(digits = 27) infinity r.n(digits = 100) Infinity n(sqrt(2)) oo n(sqrt(2), digits = 50) 1 / oo N(sqrt(2)) 2 + oo (sqrt(2)).numerical_approx()

numerical_approx(sqrt(2))

SageMath: algebra 1 SageMath: algebra 2

show(((x + 1)^2).expand()) show(factor(4 * x^5 - 4 * x^4 - 13 * x^3 + x^2 - 17 * x + 5)) show(((x + 1) * (x - 1)).expand()) s = var(’s’) y = ((x-3)^7).expand(); show(y) ex = (s^3 + 4 * s^2 + 6 * s + 4) / \ (s^3 + 3 * s^2 + 3 * s + 1) show(factor(y)) show(ex)

eq = ((x - 4) * (x - 5) * (x - 6) * 7).expand() show(factor(ex)) show(eq) pfex = ex.partial_fraction(); show(pfex) seq = solve(eq, x); show(seq) show(pfex.expand()) seq[0].rhs(), seq[1].rhs(), seq[2].rhs() show(pfex.simplify_rational()) show(factor(eq)) SageMath: algebra 3 SageMath: algebra 4

a = var(’a’) expr = (x^(a / 2) + 1)^2 * (x^(a / 2) - 1)^2 \ expression = sin(x / (x^2 + x)) == \ / (x^a - 1) exp((log(x) + 1)^2 - log(x)^2); show(expression) show(expr)

show(expression.simplify()) show(expr.expand())

show(expression.expand()) show(expr.simplify())

show(expression.simplify_rational()) show(expr.rational_simplify())

show(expr.simplify_full())

SageMath: trigonometrija 1 SageMath: trigonometrija 2

show(csc(45 * pi / 180))

cos(pi / 3) tan(pi / 4)

show(sin(pi / 3)) show(tan(pi / 8))

sin(pi / 3).n() show(tan(pi / 16))

sin(pi / 3.) show(tan(pi / 32))

sin(1) show(acos(1/2))

sin(1.) 180 / pi * asin(sqrt(3) / 2)

show(acsc(1))

SageMath: trigonometrija 3 SageMath: trigonometrija 4

eq = sin(x)^2 + cos(x)^2; print(eq) show(eq) e2 = e1.trig_simplify(); show(e2) latex(eq) e2.trig_reduce() eq.simplify() e3 = sin(x)^2; show(e3) eq.trig_simplify() e4 = e3.trig_reduce(); show(e4) a, b = var(’a b’) e1 = sin(a + b) show(e4.simplify_full()) show(e1)

SageMath: jednaˇcine 1 SageMath: jednaˇcine 2

a, b, c = var(’a b c’) s2 = solve(x^3 + 4 * x^2 - 3 * x + 1, x); show(s2) eq = a * x^2 + b * x + c s = solve(eq, x) latex(s2) show(s) n(s2[0].rhs()), n(s2[1].rhs()), n(s2[2].rhs()) x1 = s[0].rhs(); show(x1) show(n(s2[1].rhs())) x2 = s[1].rhs(); show(x2) y = var(’y’) eq.subs(x = x1) solve([x + y == 3, x - y == 1], [x, y])

_.expand() solve([x + y == 2, 2 * x + 2 * y == 4], [x, y])

eq.subs(x = x2).expand() solve([x + y == 2, 2 * x + 2 * y == 5], [x, y]) SageMath: algebarske jednaˇcine, sistemi SageMath: limesi 1

x, y = var(’x y’) e1 = x^2 + y^2 == 41 limit((1 + 1 / x)^(3 * x), x = infinity) e2 = y == x + 1 show(e1) _.n() show(e2)

s = solve([e1, e2], [x, y]) show(__) show(s) f = (x - 2) / (x^2 - 4) s1 = solve(e1, y); show(s1) #f(x = 2) limit(f, x = 2) y1 = s1[0].rhs(); show(y1) show(limit(x^3, x = oo)) y2 = s1[1].rhs(); show(y2)

set_verbose(-1) show(limit(x^3, x = - oo)) plot([y1, y2, e2.rhs()], (x, -10, 10), aspect_ratio = 1)

SageMath: limesi 2 SageMath: izvodi 1

show(limit(atan(x), x = oo)) diff(x^2, x)

show(limit(atan(x), x = - oo)) (x^2).diff()

show(limit(sin(17 * x) / x, x = 0)) diff(x^2, x, 2)

show(limit(1 / x, x = 0)) (x^2).diff(x, 2)

show(limit(1 / x, x = 0, dir = ’+’)) (x^2).diff(2)

show(limit(1 / x, x = 0, dir = ’-’)) (x^2).diff(x)

f(x) = atan(x) diff(sin(x)) h = var(’h’) show(limit((f(x + h) - f(x)) / h, h = 0)) diff(sin(x), 2)

SageMath: izvodi 2 SageMath: integrali 1 diff(sin(x), x, 3)

(sin(x)).diff(4) integrate(sin(x), x) show((atan(x)).diff(x)) integrate(sin(x), (x, 0, pi)) diff((x^2 + 2 * x + 1) * e^(3 * x), x) integrate(1/(1 + x^2), x) _.factor() integrate(1/(1 + x^2), (x, 0, 1)) show(_) show(_) y = var(’y’)

diff(sin(x * y), x)

diff(sin(x * y), y)

SageMath: integrali 2 SageMath: kompleksni brojevi 1

z = 3 + 4j; show(z); show(type(z))

show(integrate((3 * x + 5) / (x^2 + x + 1), x)) Z = 3 + 4 * i; show(Z); show(type(Z))

integrate(x^-(1/5), (x, 4, 5)) abs(z)

show(_) show(abs(Z)); show(arg(Z))

(__).n() x, y = var(’x, y’)

integrate((log(x) / x)^2, (x, 1, oo)) z = x + i * y; show(z)

print(z.real()); show(z.real()); print(z.imag()); show(z.imag()) SageMath: kompleksni brojevi 2 SageMath: Laplace 1

show(z.conjugate()) t = var(’t’) s = var(’s’) w = 1 / z; show(w) a = var(’a’) w = var(’w’) show(w.rectform()) show(laplace(exp(- a * t), t, s)) show(abs(z)); show(abs(w)) show(laplace(sin(w * t), t, s)) show(z.norm()); show(w.norm()); show((w.norm()).simplify_full()) show(laplace(cos(w * t), t, s))

SageMath: Laplace 2 SageMath: Laplace 3

inverse_laplace(s / (s^2 + 1), s, t) inverse_laplace(1, s, t) inverse_laplace(1 / (s^2 + 1), s, t) ex = (s^3 + 4 * s^2 + 6 * s + 4) / \ inverse_laplace(1 / s, s, t) (s^3 + 3 * s^2 + 3 * s + 1) show(ex) inverse_laplace(1 / s^2, s, t) show(inverse_laplace(ex * 1 / s, s, t)) inverse_laplace(1 / (s + 1), s, t)

SageMath: diferencijalne jednaˇcine1 SageMath: diferencijalne jednaˇcine2 t = var(’t’) print(expand(s3)) y = function(’y’)(t) show(expand(s3)) deq1 = diff(y, t) + y == 0 deq4 = diff(y, t) + y == cos(2 * t) show(deq1) show(deq4) desolve(deq1, [y, t]) desolve(deq4, [y, t]) print(desolve(deq1, [y, t]) show(desolve(deq1, [y, t]) expand(_) deq2 = diff(y, t) - y == 0 sol = _ show(deq2) show(desolve(deq2, [y, t])) show(sol) deq3 = diff(y, t) + y == 1 deq5 = diff(y, t, 2) + 4 * y == 0 show(deq3) show(deq5) s3 = desolve(deq3, [y, t]) show(desolve(deq5, [y, t])) print(s3); show(s3)

SageMath: diferencijalne jednaˇcine3 SageMath: diferencijalne jednaˇcine3

deq6 = diff(y, t, 2) - 4 * y == 0 show(deq6) show(desolve(deq6, [y, t])) deq10 = diff(y, t, 2) + 4 * diff(y, t) + 4 * y == cos(t) deq7 = diff(y, t, 2) + 4 * y == cos(2 * t) show(deq10) show(deq7) show(desolve(deq10, [y, t])) show(desolve(deq7, [y, t])) deq11 = diff(y, t, 2) + 4 * diff(y, t) + 4 * y == cos(t) deq8 = diff(y, t, 2) + 4 * y == cos(t) show(deq11) show(deq8) show(desolve(deq11, [y, t])) show(desolve(deq8, [y, t]))

deq9 = diff(y, t, 2) + 2 * diff(y, t) + 4 * y == cos(t) show(deq9) show(desolve(deq9, [y, t])) so, we’re done . . . ˇstanismo ni planirali, a potrebno je, t  (potrebnog)

ˇsta nismo stigli, a bilo je u planu punom optimizma? I komandna linija I regular expressions, Charles Severance, video, 35’, 23” I SageMath, plotovanje I detaljnije Code::Blocks ili neki drugi IDE I SageMath, linearna algebra (za ovo mi je baˇs ˇzao) I Eclipse http://www.eclipse.org/ I Julia (za ovo mi je najviˇse ˇzao) I ukratko LibreOffice, viˇse pravila pisanja I samo ovo nije kraj, idite dalje, samo sada idete sami . . . I makar malo vremena za SciLab I nadam se da ste kroz PSAE proˇsli poˇcetne korake i postali I malo vremena za GIMP, mada nije problem slobodni i samostalni I malo vremena za Inkscape, ovo je ve´ci problem I happy hacking! I Ngspice http://ngspice.sourceforge.net/ I moj izbor: julia I ovo je samo poˇcetak, mada je za sada . . .

 K R A J