Psae 2018 Book
Psae 2018 Book
ALATA U ELEKTRONICI
2018/2019
Predrag Pejović
12.01.2019, 13:26
c 2019 Predrag Pejović,
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Linkovi na primere:
OS: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-3-2018.zip
LATEX 1: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-4-2018.zip
LATEX 2: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-5-2018.zip
LATEX 3: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-6-2018.zip
gnuplot: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-10-2018.zip
Maxima: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-11-2018.zip
Python 1: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-12-2018.py
Python 2: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-13-2018.zip
PyLab: http://tnt.etf.bg.ac.rs/~oe4sae/primeri-14-2018.zip
SymPy: http://tnt.etf.bg.ac.rs/~oe4sae/prim-sympy.py
SymPy-DEq: http://tnt.etf.bg.ac.rs/~oe4sae/prim-sympy-dj.py
Lica (i ostali podaci o predmetu):
I mainframe računari
I Pravni problemi I software i hardware se prodavali zajedno
I licenciranje (program koji ste kupili je vaš?) I računari bili ekskluzivan proizvod, skup
I MORAMO biti 100% legalni!!!
I mnogo manje korisnika
I Ekonomski problemi
I troškovi (i ne samo to! ↓) I mnogo manje komunikacije između korisnika
I navike i zavisnost I okruženje bilo uglavnom naučno ili visoko poslovno
I problemi sa proprietary formatima (primer: bas bih voleo opet
I poslovne primene uz razvoj sopstvenih programa,
da procitam svoj doktorat u elektronskoj formi)
I bezbednost podataka! custom design
I način naplate . . . I dominantna zaštita poslovna tajna
I opravdanost naplate . . .
I free (slobodni) software?
I ogromne mogućnosti, pps, strahovito brz razvoj
I besplatno (ako tako hoćete) i jos mnogo više! I društvene implikacije, nestanak i nastanak velikog broja
poslova, promena sistema vrednosti, pojava mladih ljudi na
uticajnim pozicijama . . .
Kako je danas? (posle ≈ 1985) Specifičnosti „intelektualnih“ (nematerijalnih)
I PC revolucija (prošla; prošla?) proizvoda 1
I jeftino, dostupno, (modularno (?)) I značajni troškovi razvoja
I sklopivo, prilagodljivo korisniku (?) I proizvod se upotrebom ne troši, traje
I izaberete komponente (?), sklopite računar (?), šta dalje? I potražnja se spontano ne obnavlja
I softver postao zasebna komponenta računara, posebno se I za zaradu neophodan novi razvoj ili vremenski ograničena
kupuje (upravo ovde priča počinje . . . )
licenca
I operativni sistem, početak I misaoni eksperiment: softver koji se kvari
I korisnički softver, zavisno od primene računara
I prestaje „podrška“
I softver je intelektualni, nematerijalni proizvod . . .
I troškovi umnožavanja zanemarljivi
I nematerijalni proizvodi su veoma specifični,
I troškovi distribucije zanemarljivi
upotrebom se ne troše!
I I kako organizovati proizvodnju da bi se ostvario profit?
rezultat: monopoli i „verski ratovi“
I ideologizacija i manipulacija . . . I karakteristike veoma slične stvaralaštvu u nauci, oblast slična
I http://en.wikipedia.org/wiki/Samizdat: matematici . . .
_And_Other_Issues_Regarding_the_%27Source%27_of_ I postoje programeri koji vole da programiraju . . .
Open_Source_Code I . . . dok ne dodje GUI!
Copyright Patent
I štiti ideju
I kratko traje (10-20 godina)
I štiti konkretan proizvod, ne ideju I kratko? za sotver kratko?
I dugo traje I širi se domen (predmet, metod, nova primena, organizam,
I produžava se geni . . . )
I širi se domen I zahteva prijavu i odobrenje patenta, košta!
I sve copyrightable automatski je copyrighted (negde . . . ) I David Pressman, “Patent it Yourself,” Nolo Press
I copyright notice, “all rights reserved” (ne košta!) I offensive rights
I dominantna zaštita za software u nizu pravnih sistema . . . I samo 10% patenata isplati troškove (???)
I pošto se software kopiranjem umnožava, „proizvodi“ I kritike, 19. vek, “Patent Absurdity”
I ne sprečava da neko napiše nov program iste funkcionalnosti! http://patentabsurdity.com/
I nečitki patenti, promenjen smisao
I pojam „očigledno“
I kako to funkcioniše u praksi . . .
I ne košta
I traje dok traje tajna I Free Software
I nikog ne sprečava da otkrije isto I Open Source Software
I zaštita kroz NDA I Freeware
I negde se može primeniti, negde ne I Shareware
I primer: program u interpretativnom jeziku
Free Software novo i neobično, . . .
I Richard Mathew Stallman, 1983.
I free as in free speech, not free beer (slobodan / besplatan) I neprijatelji? brojni!
1. interesni, racionalni
I uvek je neko „platio“ razvoj programa
2. ideološki, iracionalni
I korektan prevod „slobodan softver“ I korisnici?
I definicija (po RMS):
I motivi contributors?
I Freedom 0: da se izvršava program, bez ograničenja
I Freedom 1: da se proučava i menja program: I treba li programeri da budu plaćeni?
potreban source code I poslovni modeli?
I Freedom 2: da se distribuiraju kopije programa
I Freedom 3: da se distribuiraju modifikovane verzije
I „pustite nas da radimo!“
programa I “social machinery”
I kad licenca ovo dopušta software je free I konkurencija (lojalna, nelojalna?)
I FSF, http://www.fsf.org I prošlost kod nas (do ≈ 2003.): sve je bilo freeware,
I FSFE, http://fsfe.org/ jako malo free software
I osim praktičnih, pokreću i etička pitanja
Freeware Shareware
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
http://en.wikipedia.org/wiki/BSD_licenses
7/17/2007
I Understanding Open Source and Free Software Licensing Spice is covered now covered by the BSD Copyright:
I GPL, General Public License, FSF, copyleft, . . . Copyright (c) 1985-1991 The Regents of the University of California.
All rights reserved.
I BSD License, permissive free software license
Permission is hereby granted, without written agreement and without license or royalty fees, to use,
I MIT License copy, modify, and distribute this software and its documentation for any purpose, provided that the
above copyright notice and the following two paragraphs appear in all copies of this software.
I dvojno licenciranje moguće, FFTW
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
I CeCILL DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
I http://www.gnu.org/licenses/license-list.html CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
I „otvoreni hardver“
I Arduino: Creative Commons Attribution Share-Alike License
I There is no cloud: it’s just someone else’s computer!
I Who does that server really serve?
I . . . kao i niz GPL licenci . . .
I baš dobar koncept: ni softver ni vaši podaci nisu kod vas
I Interaction Design Institute Ivrea, 2001-2005
I stvara se zavisnost
I ozbiljna igra: RISC-V, UC Berkeley, Krste Asanović
I nekome se isplati: isplati li se vama?
I BSD licenca
I Service as a Software Substitute (SaaSS)
I SiFive
I svakako aktuelna tema . . .
I . . . upravo se događa, biće o ovome priče 13.10.2018, Vlada
Milovanović, radio sa Borom Nikolićem . . .
I reakcija ARM-a
Linkovi . . .
HONOR CODE
sajt predmeta: CERTIFICATE
Jerry Cooperstein, Ph. D.
Training Program Director
The Linux Foundation
http://tnt.etf.bg.ac.rs/~oe4sae/
Clyde Seepersad
General Manager, Training
Predrag Pejovic
The Linux Foundation
O patentima . . .
operativni sistem
I levo, Activities
I sredina, time/date, notifications
I desno, system status and parameters I System Settings
I sound I pogledati Details
I Internet connection I u 18 ne menjati System Settings!
I keyboard switcher I rekoh, pitanje pristojnosti!
I settings
I lock, probati lock
I ...
razlike . . . Files . . .
I različiti desktop environments imaju različite nazive i različit I obično prva ikona, mada ne mora
raspored komandi
I ime sve kaže
I primer: Linux Mint na Električnim merenjima
I dva prozora (taba), ctrl-t, može i više
I ipak, ista funkcionalnost se ostvaruje
I gase se klikom (desno je x, levo je ime)
I potrebno kratko navikavanje i povremena potraga da se nešto
I full path ctrl-l, izlaz sa esc
pronađe
I ovo je otprilike sve za početak . . .
I pitanje ukusa o kojima nema smisla raspravljati . . .
I date
I Terminal (izlaz: exit ili Ctrl/d) I cal
I Alt/Ctrl F1 do F6, tty1 do tty6, neki je vaš prozor sada je I cal -help
to F2 I ncal
I eto nas na komandnoj liniji I df
I jako dobra knjiga: I clear
http://sourceforge.net/projects/linuxcommand/
I free
I ali 544 strane!
I od sada: terminal na medium, File Manager, home, medium
I lako se čita!!! (tablet, prevoz, . . . )
I ideja: da vidite šta komandna linija radi, kako fajlovi i
direktorijumi nastaju i nestaju
I cat ls.ps
I gedit proba
I cat ls.ps ls.ps
I sadržaj fajla po želji, npr dva reda teksta, save!!!
I man cat
I cat proba proba proba proba proba > proba5.txt
I ko je napisao cat ?
I cat proba5.txt
I more ls.ps
I more proba5.txt
I less ls.ps
I less proba5.txt
I less is more!
I ls
I izlaz je q, ne esc I rm ls.ps
I man ls (manual) I ls
I ls --help (help) I rm -i ls.pdf
I info ls (GNU info system) I ls
I apropos, man apropos I ^d
I whatis, whatis apropos (vrlo kratak opis) I shutdown mašine, potom ugasite monitore
I whereis, whereis apropos (vrlo kratak opis) I vratite stolice na mesto
I ponesete sve svoje stvari
zagrevanje . . .
I update
operativni sistem I komandna linija, nastavak . . . mnoštvo programa
— part 2 — (jezik se zaboravlja ako se ne govori)
I scripting, bash, sh
I malo uvoda u Python, IDLE, idle
I malo C
I (ni)malo IDE, Integrated Development Environment,
Code::Blocks, Eclipse (drugi to rade . . . )
directory system commands: pwd, mkdir, rmdir, redirekcija, cat, tac, head, tail, more, less . . .
cd . . .
I pwd (koristite često da bi znali gde ste!) I ls -lht /usr/bin >usrbin1.lst
I mkdir <ime> I ls /usr/bin >usrbin2.lst
I ls I ls -lht >ls.lst
I cd <ime> I ls
I pwd I cat usrbin1.lst
I ls I tac usrbin1.lst
I cd .. I head usrbin1.lst
I cd - I tail usrbin2.lst
I cd ~ I cat usrbin1.lst usrbin2.lst
I cd /
I cat usrbin1.lst usrbin2.lst > usrbin3.lst
I cd ~/<ime>
I more usrbin3.lst
I cd
I less usrbin3.lst
I cd <ime>
I pwd
privileges . . . chmod . . .
I ls -lh radi
I ls -lhtr I chmod <code> <file_name>
I i postoji nešto nalik na -rw-r--r-- pa podaci o fajlu I chmod 700 radi
I i nešto nalik na drwxr-xr-x pa podaci o direktorijumu I ls -lh radi
I prvi znak: - za fajl ili d za direktorijum I pozeleneo?
I r je read, w je write, x je execute (ls) I drugi način
I tripleti rwx rwx rwx I chmod {u|g|o}{+|-}{r|w|x} <file_name>
|{z} |{z} |{z}
user group other
I chmod u-w radi
I svaka privilegija (r, w ili x je jedan bit) I ls -lh radi
I chmod u+w radi
I triplet daje oktalnu cifru, rwx je 7, r-- je 4, --x je 1, . . .
I ls -lh radi
I privilegija se kodira kao trocifreni oktalni broj
I chmod go+x radi
I rwx------ je 700
I ls -lh radi
I rwxr--r-- je 744 I chmod go-r radi
I rw-r--r-- je 644 I radi
I ./radi
script file 3 #!
gedit argumenti0.sh I #!
I promenite u argumenti0.sh prvi red u
#! /bin/bash
#! /bin/sh
echo $0
i save kao argumenti0a.sh
echo $1
echo $2 I promenite u argumenti0.sh prvi red u
echo $3 #! /usr/bin/python
i save kao argumenti0b.sh
file argumenti0.sh I obrišete prvi red i save kao argumenti0c.sh
sh argumenti0.sh I file argumenti0.sh
sh argumenti0.sh a b c
I file argumenti0a.sh
sh argumenti0.sh d e
bash argumenti0.sh I file argumenti0b.sh
./argumenti0.sh I file argumenti0c.sh
shell? malo istorije (za zainteresovane) . . . script file 4
gedit argumenti1.sh
I https://en.wikipedia.org/wiki/Unix_shell #! /bin/bash
echo 0
I https://en.wikipedia.org/wiki/Thompson_shell echo $0
I https://en.wikipedia.org/wiki/Bourne_shell echo 1
I https://en.wikipedia.org/wiki/Stephen_R._Bourne echo $1
I https: echo 2
//en.wikipedia.org/wiki/Bash_%28Unix_shell%29 echo $2
echo 3
I i jedna knjiga:
echo $3
http://sourceforge.net/projects/linuxcommand/
file argumenti1.sh
sh argumenti1.sh
./argumenti1.sh
gedit argumenti2.sh
I printenv
#! /bin/sh I printenv | less
echo 0: $0
echo 1: $1 I printenv PATH (prikaže vrednost promenljive PATH)
echo 2: $2 I printenv PATH | grep home
echo 3: $3 I echo $PATH (prikaže vrednost promenljive PATH)
I $PATH (shell pokušava da izvrši)
file argumenti2.sh
sh argumenti2.sh
print 16 * ’-’
#include <stdio.h>
int main()
{
int i, n, f; I gcc -o faktorijel faktorijel.c
I ls -lh
printf("\nargument = "); I zeleni faktorijel?
scanf("%d", &n);
I ./faktorijel
f = 1; I problemi sa velikim brojevima?
for (i=1; i<=n; i++) {f=f*i;}
return 0;
}
Fibonačijevi brojevi, C, simplified korak napred, IDE, Code::Blocks
#include <stdio.h> I IDE, Integrated Development Environment
int main(void) I Eclipse, Code::Blocks i Geany popularni . . . ovde C::B
{ I gdb, command line, sami
printf("\nn = ");
int n; I kreirate projekat, Empty
scanf("%d", &n); I Debug/Release version
int i = 1, j = 1, k, c; I Build
printf("\n\n1\n1\n"); I watches
for (c = 2; c <= n; c++) I breakpoints
{ I start, step into, shift-F7
k = i + j;
i = j; I izvršavanje korak po korak, F7
j = k; I na kraju build Release version
printf("%d\n", k);
} I F7 ili button panel
I watch Local variables
return 0;
} I just to get acquainted . . .
Uvod 1
Uvod 2 Uvod 3
\documentclass{minimal} \documentclass{minimal}
\usepackage[utf8]{inputenc} \begin{document}
Prva proba za \LaTeX. Šta će biti kada se pojave naši znaci?
Šta će biti kada se pojave naši znaci? Mo\v{z}e ovako: \v{S}ta \’{c}e biti kada
se pojave na\v{s}i znaci?
\end{document}
\end{document}
\documentclass{minimal}
\end{document}
primer 6, specijalni znaci ne rade primer 7, specijalni znaci rade, sreden font
encoding
\documentclass{minimal}
\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage[utf8]{inputenc}
\begin{document} \usepackage[T1]{fontenc}
\begin{document}
Prva proba za \LaTeX.
Prva proba za \LaTeX.
Šta će biti kada se pojave naši znaci?
Šta će biti kada se pojave naši znaci?
A ostaje i: \v{S}ta \’{c}e biti kada se pojave
na\v{s}i znaci? A ostaje i: \v{S}ta \’{c}e biti kada se pojave
na\v{s}i znaci?
A kada dodamo specijalne znake poput < i > ?
A kada dodamo specijalne znake poput < i > ?
\end{document} \end{document}
jedna posredna konverzija, za primer ovo se može automatizovati
gedit napravi
#! /bin/sh
latex p7 latex $1
ls p7.dvi dvips $1
dvips p7 ps2pdf $1.ps
ls p7.ps evince $1.pdf
ps2pdf p7.ps
ls p7.pdf
file napravi
evince p7.pdf
chmod u+x napravi
ls napravi
može i evince p7.ps kao i evince p7.dvi
./napravi p7
PATH=$PATH:$PWD
napravi p7
\documentclass{minimal}
I od sada idemo u prijatnije okruženje, Texmaker \usepackage[utf8]{inputenc}
I pogledati Tools \usepackage[T1]{fontenc}
I PDFLaTeX je F6 \begin{document}
I Dvi -> PDF je F9 A kada dodamo specijalne znake poput < i > ?
I context highlighting, spell check, . . . А како иде са ћирилицом?
\end{document}
\documentclass{minimal}
\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc} \usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc}
\begin{document} \usepackage{datetime}
\end{document}
\documentclass{minimal} \begin{document}
Ilustracija za packages, sada je dodat babel, serbian: можда вам затреба \textasciitilde % za ~
\documentclass{minimal}
\begin{document}
\usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc} Jош мало форматирања. Обрадили смо \verb+\bigskip+.
\usepackage[serbian]{babel}
Da vidimo šta radi \verb|\noindent|.
\begin{document}
\bigskip
Дођосмо до окружења. Прво радим окружење \verb-verbatim-
\noindent Ima \verb|\noindent|.
\begin{verbatim}
Nema \verb|\noindent|.
Ovde možete kucati šta god hoćete.
И како год хоћете. \noindent
Ништа се не форматира. Ima \verb|\noindent|.
Слободно куцате \ ~ { }, нема никакво значење.
Nema \verb|\noindent|.
\end{verbatim}
\end{document}
\end{document}
\documentclass{minimal} \documentclass{article}
\usepackage[utf8]{inputenc} \usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc} \usepackage[T1, T2A]{fontenc}
\usepackage[serbian]{babel} \usepackage[serbian]{babel}
\begin{document} \begin{document}
Jош мало окружења (environments). Листе су следећа тема. Jош мало окружења (environments). Листе су следећа тема.
\begin{itemize} \begin{itemize}
\item prva tačka \item prva tačka
\item druga tačka \item druga tačka
\item treća tačka \item treća tačka
\end{itemize} \end{itemize}
\end{document} \end{document}
\documentclass{article}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[utf8]{inputenc} \usepackage[T1, T2A]{fontenc}
\usepackage[T1, T2A]{fontenc}
\usepackage[serbian]{babel} \begin{document}
\end{document}
\begin{document}
% margine na 2cm na a4 i da uklonimo broj strane
\thispagestyle{empty}
\documentclass[a4paper,12pt]{article}
\noindent А сада jедна табела:
\usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc} \noindent
\usepackage[margin=2cm]{geometry} \Huge \verb|\Huge| \\
\huge \verb|\huge| \\
\begin{document} \LARGE \verb|\LARGE| \\
\Large \verb|\Large| \\
\pagestyle{empty} % ima i \thispagestyle{empty} \large \verb|\large| \\
\normalsize \verb|\normalsize| \\
\Huge \noindent Ali ovo hoće! \\ \small \verb|\small| \\
\normalsize Ali ovo hoće! \\ \footnotesize \verb|\footnotesize| \\
\tiny Ali ovo hoće! \scriptsize \verb|\scriptsize| \\
\tiny \verb|\tiny| \\
\end{document}
\end{document}
primer 21: još malo o fontovima i pravim primer 22: gore, dole, levo, desno
tabelama
\begin{document} \documentclass[a4paper,12pt]{article}
\begin{tabular}{|l|l|} \usepackage[utf8]{inputenc}
\hline \usepackage[T1, T2A]{fontenc}
команда & ефекат \\ \usepackage[margin=1cm]{geometry}
\hline
\verb|\textnormal| & \textnormal{Jош мало о фонтовима (typefaces).} \\ \begin{document}
\verb|\textit| & \textit{Jош мало о фонтовима (typefaces).} \\
\verb|\underline| & \underline{Jош мало о фонтовима (typefaces).} \\ \thispagestyle{empty}
\verb|\textbf| & \textbf{Jош мало о фонтовима (typefaces).} \\
\verb|\emph| & \emph{Jош мало о фонтовима (typefaces).} \\ горе лево \hfill горе десно
\verb|\textrm| & \textrm{Jош мало о фонтовима (typefaces).} \\
\verb|\textsf| & \textsf{Jош мало о фонтовима (typefaces).} \\ \vfill
\verb|\textsc| & \textsc{Jош мало о фонтовима (typefaces).} \\
\verb|\textsl| & \textsl{Jош мало о фонтовима (typefaces).} \\ доле лево \hfill доле десно
\verb|\texttt| & \texttt{Jош мало о фонтовима (typefaces).} \\
\hline \end{document}
\end{tabular}
\end{document}
početak, zagrevanje
I update
I da napravimo jednu sliku . . .
I gnuplot sa komandne linije
LATEX I set terminal pdfcairo
— II deo — I set output "slika.pdf"
I set output
I plot sin(x)
I set terminal epscairo
I set output "slika.ps"
I plot sin(x)
I set output
I Ctrl/d
I pogledajte slika.pdf i slika.ps
\documentclass[a4paper,12pt]{article}
I zavisi od tipa dokumenta
\usepackage[utf8]{inputenc}
I za article: \usepackage[T1, T2A]{fontenc}
\section{...} \usepackage[serbian]{babel}
\subsection{...}
\usepackage{datetime}
\subsubsection{...} \usepackage[bottom=3cm,top=3cm,left=3cm,right=2cm]{geometry}
\paragraph{...}
\subparagraph{...} \title{Primer jednog struktuiranog dokumenta}
\author{Predrag Pejović}
\date{\today}
\thispagestyle{empty}
\title{\LARGE
\textbf{Primer jednog struktuiranog dokumenta}} što je važno kada automatski generiše naslov
\author{\textsl{Predrag Pejović}}
\date{} i/ili
\pagestyle{empty}
iza naslova:
\newpage
\vspace{3cm}
\tableofcontents \section*{Literatura}
\newpage
\addcontentsline{toc}{section}{Literatura}
nenumerisani items nisu u table of contents!
\begin{document}
\begin{document}
\begin{Huge}
\begin{center} \begin{flushleft}
Ovde su centrirana velika slova. Ovaj environment (okruženje) ukida poravnavanje
\end{center} desne ivice, a to je ponekad potrebno.
\end{Huge} Primer su US patenti u postupku i neki pravni
dokumenti za koje se veruje da su čitljiviji
\begin{flushright} ako se ne poravnava desna ivica, mada manje
ovde su normalna slova, \\ lepo izgledaju. O ukusima ne vredi raspravljati,
ali je sve poravnato \\ a u osnovi je sasvim svejedno.
na desnu stranu \end{flushleft}
\end{flushright}
\end{document}
\end{document}
\documentclass[12pt, a4paper]{article}
\usepackage[utf8]{inputenc}
\begin{document} \usepackage[T1, T2A]{fontenc}
\begin{document}
\begin{description}
\item[Prvi] je onaj koji dolazi pre drugog Mi smo na ETF. Nismo na ETH.
\item[Drugi] je onaj koji dolazi posle prvog
\item[Treći] je u ovom slučaju poslednji Mi smo na ETF\@. Nismo na ETH. % dodaje razmak
\end{description}
\bigskip
\end{document}
primer g, još malo o razmacima primer h, jednačine, stilovi i subscript
\documentclass[12pt, a4paper]{article}
\usepackage[utf8]{inputenc} \begin{document}
\usepackage[T1, T2A]{fontenc}
Numerisana jednačina:
\begin{document}
\frenchspacing \begin{equation}
i_{123} = i_1 + i_{2} + i_3
Mi smo na ETF. Nismo na ETH. \end{equation}
Neka je
\begin{equation}\label{prva}
Leonard Ojler je mnogo voleo jednačinu e^{i \pi} + 1 =0
\end{equation}
\[ e^{i \pi} + 1 = 0 \] Mi bi to pisali
\begin{equation}\label{druga}
\noindent e^{j \pi} + 1 =0
Grčka slova su: $\alpha, \beta, \gamma, \delta, \end{equation}
\ldots \omega$. Sada se treba pozivati na jednаčinu (\ref{prva}) i
Velika grčka slova su: $\Gamma, \Delta, \ldots \Omega$. jednačinu (\ref{druga}).
Svaki pristojan quick reference ima tabelu.
Većina editora, takode. Dobra praksa je da se u \label piše i tip objekta, da se ne pojave slika, tabela
i/ili jednačina sa istim imenom. Primer: \label{eq:prva}
Razmaci:
\bigskip
$ab$
Razlomci: $\frac{1}{2}$, $\displaystyle \frac{1}{2}$,
$\frac{a}{b}$, $\frac{a+c}{b}$, može i $1/2$, a može i $a \, b$
$a \: b$
\[ \frac{1}{2} \]
$a \; b$
\[ \frac{a+b}{c} \]
$a \! b$
\noindent Funkcije se pišu u plain fontu (ima i priča oko razmaka), dosta ih je
Malo o zagradama: uneto i počinju sa \. Neke nisu (npr. sgn)! Mogu se dodefinisati,
\[ (\frac{a}{b}) \] package amsmath, \operatorname.
\[ \left( \frac{a}{b} \right) \]
\[ \big( \frac{a}{b} \big) \] \[ \sin(x+y)=\sin(x) \, \cos(y)+\cos(x) \, \sin(y) \]
\[ \Big( \frac{a}{b} \Big) \] \[ \sin^2 x + \cos^2 x = 1 \]
\[ \bigg( \frac{a}{b} \bigg) \] \[ \cosh^2 x - \sinh^2 x = 1 \]
\[ \Bigg( \frac{a}{b} \Bigg) \] \[ x \, \operatorname{sgn} (x) = |x| \]
I još malo: \[ \operatorname{h}(x)=1, \quad \text{if} \; x > 0 \]
\[ \left| x + j y \right| = \sqrt{x^2+y^2} \] \[ \operatorname{h}(x)=0, \quad \text{if} \; x < 0 \]
I još malo:
\[ k \in \left\{1, 2, \ldots n \right\} \]
primer h, jednačine sa matricama primer h, jedinice mere, plain font, amsmath, text
\usepackage[greek, serbian]{babel}
\usepackage{upgreek}
Matrice:
\[ \det
\[ C = 100 \, \mu\text{F} \] \begin{bmatrix}
\[ t_0=1 \, \mu\text{s} \] a & b \\
c & d \\
\[ C=100 \, \mbox{\textgreek{m}}\text{F} \] \end{bmatrix}
\[ t_0 = 1\,\text{\textgreek{m}s} \] = a d - b c \]
još malo o grafičkim formatima . . . sin in gnuplot, po ko zna koji put, ako već nemate
sliku . . .
I https:
//en.wikipedia.org/wiki/Comparison_of_graphics_file_formats I komandna linija
I https://en.wikipedia.org/wiki/Device_independent_file_format
I gnuplot
I https://en.wikipedia.org/wiki/PostScript
I set terminal pdfcairo
I https://en.wikipedia.org/wiki/Encapsulated_PostScript
I https://en.wikipedia.org/wiki/Portable_Document_Format
I set output "slika.pdf"
I https://en.wikipedia.org/wiki/JPEG I plot sin(x)
I https://en.wikipedia.org/wiki/Portable_Network_Graphics I set output
I https://en.wikipedia.org/wiki/GIF I set terminal epscairo
I https://en.wikipedia.org/wiki/Scalable_Vector_Graphics I set output "sin.eps"
I sa gubicima (jpg), manji file, jača kompresija! I replot
I bez gubitaka (png, gif)
I set output
I proprietary versus free
I Ctrl/d
\end{document}
primer, unošenje slika, scaling primer, unošenje slika, rotate
\documentclass[12pt,a4paper]{article} \documentclass[12pt,a4paper]{article}
\begin{document} \begin{document}
Ovde ćemo ubaciti jednu sliku, sliku \ref{slika:sinus}. Ovde ćemo ubaciti jednu sliku, sliku \ref{slika:sinus}.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[scale=1.5]{sin.pdf} \includegraphics[angle=90, scale=1.5]{sin.pdf}
\end{document} \end{document}
\end{document}
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}
+VCC +VCC
R2 RC R2 RC
CC CC
vOUT vOUT
CB CB
Q Q
ROUT ROUT
+ v +
− IN − vIN
R1 RE CE R1 RE CE
\documentclass[a4paper,12pt]{article}
I latex ce2
\usepackage{graphicx}
I dvips ce2
\usepackage[margin=1cm]{geometry} I ps2eps -l -f ce2.ps
-l je za loose format, 1 pt margine,
\pagestyle{empty} -f je za force za overwrite
I ovde stajete ako koristite latex;
\begin{document} za pdflatex: epstopdf ce2.eps
I evince ce2.pdf ili evince ce2.eps
\input{ce2-raw.tex}
\end{document}
\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
procesiranje, script 5
napravite gmfc.sh, čišćenje za sobom
sh gmfc.sh ce2
sh gmfc.sh proba
Referenciranje?
\documentclass[a4paper,12pt]{article}
\usepackage[T1, T2A]{fontenc}
I LATEX ima sistem za automatsko numerisanje referenci, \usepackage[utf8]{inputenc}
izuzetno važno u praksi, omogućava lake izmene dokumenta \usepackage[serbian]{babel}
I baza referenci važna stvar, LATEX ima nekoliko načina za unos
\usepackage{graphicx}
referenci; ovde samo najjednostavniji
\usepackage{amsmath}
I za pravljenje baze referenci pogledajte package BibTeX, jako \usepackage{xcolor}
korisno ako pišete neki veći rad
\usepackage[margin=2cm]{geometry}
\title{Referenciranje}
\author{Predrag Pejović}
\date{\today}
tekst reference
\begin{thebibliography}{[X]}
\begin{document} \bibitem{ND}
M.~Depenbrock, C.~Niermann,
\maketitle ‘‘A new 12-pulse rectifier with
line-side interphase transformer
and nearly sinusoidal line currents,’’
\section{Uvod}
\emph{Proceedings of the Power Electronics
and Motion Control Conference},
Ovde ću citirati \cite{ND}. Budapest, 1990, pp.~374--378.
\section{Zaključak} \bibitem{rr}
Ovo je referenca reda radi.
Ovde citiram referencu reda radi, \cite{rr}.
\end{thebibliography}
\end{document}
I http://en.wikipedia.org/wiki/Dash
I “hyphen”, -, push-pull
I “en-dash”, --, pp. 17–45
I “em-dash”, ---, IEEE Transactions on Circuits and Beamer
Systems—Fundamental Theory and Applications
I “minus”, $-$, 3 − 2 = 1
I da ih uporedimo: -, –, —, −
I vidite li razlike?
beamer, uvod 1 beamer, resursi
\documentclass{beamer}
\end{frame} \usepackage[utf8]{inputenc}
\usepackage[T1, T2A]{fontenc}
dok se ne reši bug! \usepackage[serbian]{babel}
\usepackage{datetime}
\title[prezentacija]{\huge prezentacija}
\date{\today}
%\end{frame}
složena dinamika itemized list
%\end{frame}
hide-unhide za lenje
\begin{itemize} \begin{itemize}
\item <2-2> prva stavka \item <+-> jedan
\item <3-3> druga stavka \item <+-> dva
\item <4-4> treća stavka \item <+-> tri
\end{itemize} \end{itemize}
%\end{frame} %\end{frame}
\bigskip
\bigskip
\pause
\begin{frame}{slika}
ipython --pylab
dm = 360 \pause
deg = linspace(- dm, dm, 2 * dm + 1)
x = radians(deg - 45) često je potrebno ubaciti neku sliku, npr. png sliku
y = cos(x)
\pause
plot(x, y)
xlim(- 2 * pi, 2 * pi) \includegraphics[scale=0.35]{slika.png}
ylim(- 1.5, 1.5)
xlabel(’x’) \pause
ylabel(’y’)
što je odavno poznata funkcija
\section{boje}
\setbeamercovered{invisible} \begin{Large}
\textcolor{red}{crvena} \\
\onslide<2->{često je potrebno ubaciti neku sliku} \pause
\textcolor{blue}{plava} \\
\pause
\onslide<3->{\includegraphics[scale=0.3]{slika.png}} \textcolor{cyan}{kako se ova zove?} \\
\pause
\onslide<4->{što je odavno poznata funkcija} \textcolor{magenta}{a ova?} \\
\pause
\setbeamercovered{dynamic} \textcolor{yellow}{žuta} \\
\pause
%\end{frame} \textcolor{green}{zelena} \\
\end{Large}
%\end{frame}
\section{dve kolone}
\beamertemplatesolidbackgroundcolor{teal!20}
\begin{frame}{dve kolone}
\begin{frame}{\textcolor{teal}{bojena pozadina}}
\begin{columns}[l]
\column{5cm}
\begin{Huge}
\onslide <2-> gore levo \\
\textcolor{teal}{sa tamnim slovima}
\onslide <3-> dole levo \\
\end{Huge}
\column{5cm}
%\end{frame}
\onslide <4-> gore desno \\
\onslide <5-> dole desno \\
\beamertemplatesolidbackgroundcolor{white}
\end{columns}
%\end{frame}
handouts teme
I „teme“, stilovi, . . .
I tema default na Goettingen
\documentclass[handout]{beamer}
I sections sada dobijaju smisao
rešava posao, ali krupno I tema na Copenhagen
\usepackage{pgfpages}
I zašto li je ovo popularno?
\pgfpagesuselayout{2 on 1}[a4paper, border shrink=5mm] I možete se igrati sa colortheme
\pgfpagesuselayout{4 on 1}[a4paper, landscape, border shrink=5mm]
\pgfpagesuselayout{8 on 1}[a4paper, border shrink=2mm]} I primeri: http://www.informatik.uni-freiburg.de/
~frank/ENG/latex-course/latex-course-3/
ima još puno toga, odlični web resursi! latex-course-3_en.html
I vodite računa o vremenu!
I ovo će biti deo (20%) drugog kolokvijuma!
Numerical Computation
Numerical Computation, Tools #1: Matlab Numerical Computation, Tools #2: GNU Octave
I diminira(o) Matlab
I Wikipedia, http://en.wikipedia.org/wiki/Comparison_
of_numerical_analysis_software, 16.12.2018:
I “Numerical computation and simulation with extended 2D/3D I GNU Octave
visualization.” I “General numerical computing package with lots of extension
I “Proprietary”
I 2014: “$2150 (commercial) / $99 (student)” modules. Syntax mostly compatible with MATLAB”
I “GPL”
I 2014: $300 manje nego pre tri godine, isto kao prošle i
I “Free”
pretprošle godine
I 2015: “$2650 (standard) / $625 (education)” I https://www.gnu.org/software/octave/
I 2017: “$2650 (standard) / $625 (education)”
I 2018: “$2150 (standard) / $500 (education) /
$149 (home) / $49 (student)
I osnovni tip podatka: n-dimenziona matrica
I extended 2D/3D visualization . . .
a = ’Pera’
tacka1.x = 5 b = "Mika"
tacka1.y = 7 a + b # čudan string?
tacka2.x = 1 strcat(a, b)
tacka2.y = -1 a == b
tacka1 + tacka2 a(1)
tacka1.x + tacka2.x a(3)
# slab overloading b(1:3)
b(1 : 3)
b (1 : 3)
help(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
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
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)
printf(’sum = %d\n’, s)
a
clear all b
a = 3 string
b = 5 clear all
string = ’string’ a
x = [1 2; 3 4] b
save ws # ceo workspace! string
load ws
a sada uradite a
b
gedit ws string
plot(deg, s)
deg = 0 : 360; plot(deg, c)
length(deg) hold on
wt = deg * pi / 180; plot(deg, s, ’r’)
s = sin(wt); close all
s2 = s .* s; plot(deg, s, deg, c)
rmss = sqrt(mean(s2)) hold on
rmss - 1/sqrt(2) plot(deg, s2, ’m’, deg, c2, ’c’)
c = cos(wt); axis([0 360 -1 1]) # mora , in Python
c2 = c .^ 2; set(gca, ’XTick’, 0 : 60 : 360)
rmsc = sqrt(mean(c2(1 : length(c2) - 1))) xlabel(’wt [deg]’)
rmsc - 1/sqrt(2) ylabel(’sin, cos, sin^2, cos^2’)
title(’funkcije’)
plot, 2d slika.png
help figure
doc figure
help print
doc print
print(’slika.png’, ’-dpng’)
print(’slika.pdf’, ’-dpdf’)
print(’slika.eps’, ’-deps’)
0 clear all
data
-0.5
load data
data
-1
0 60 120 180 240 300 360
wt [deg] gedit data
linearne jednačine i još mnogo toga . . .
. . . gnuplot . . . . . . gnuplot
I show terminal
I help terminal
I plot sin(x)
I help terminal postscript
I set xlabel "x"
I set terminal postscript eps
I set ylabel "y"
I show output
I set title "y=sin(x)"
I set output "slika1.ps"
I replot
I plot sin(x), cos(x)
I set label "neki tekst" at 5,0.5; replot
I pogledajte šta ste dobili kao slika1.ps
I plot sin(x) title "sin", cos(x) title "cos"
I set output "slika2.ps"
I set key box; replot
I set terminal postscript eps color
I plot sin(x), cos(x)
I pogledajte šta ste dobili kao slika2.ps
I octave
I set output I deg=0:360*4;
I show output I wt=deg*pi/180;
I show terminal I f=exp(-wt/2/pi*0.5).*sin(wt);
I menjate terminal koji imate, qt ili wxt, ja pišem za wxt, važi i na dalje I plot(deg,f)
I set terminal wxt 0 persist I fp=exp(-wt/2/pi*0.5);
I plot sin(x) I fm=-fp;
I set terminal wxt 1 persist I dat=[deg’ wt’ f’ fp’ fm’];
I plot cos(x) I save dat dat
I set terminal wxt 0 I exit ili ctrl-d (^D)
I show terminal I gedit dat
I reset I # znači komentar
I zapamtiti šta je u kojoj koloni, 1, 2, 3, 4 i 5
I napravite script
set terminal epslatex standalone color
I set parametric
set output "slika6.tex" I plot [0:2*pi] cos(t), sin(t), 2*cos(t/2),
set xrange [0:360*4] 2*sin(t/2)
set xtics 180
set xlabel "$\\omega t \\; [^\\circ]$" I set xrange [-3:3]
set ylabel "$v_C$" I set yrange [-3:3]
plot "dat" using 1:3 with lines linewidth 2 title "$v_C$", \
"dat" using 1:4 with lines linetype 2 title "anv$_1$", \ I replot
"dat" using 1:5 with lines linetype 2 title "anv$_2$" I set size square
I procesirate kroz gnuplot, dobili ste standalone tex I replot
I procesirate kroz latex, procesirate preko dvi i ps do pdf I set key above box; replot
I pogledate i uporedite sve slike od sada
I reset
I set polar
I plot [0:2*pi] t
I plot [0:10*2*pi] t
I set samples 1000
I set size square
I set xrange [-70:70]
I set yrange [-70:70]
I unset key; replot
I plot [0:10*2*pi] t, -t
gnuplot af.gp
show margin
set terminal postscript eps color size 12cm, 8cm
set output "margin1.ps" reset
replot set terminal wxt 0
set lmargin at screen 0.2 set output
set rmargin at screen 0.9 plot sin(x)
set bmargin at screen 0.2 unset border; replot
set tmargin at screen 0.9 set zeroaxis; replot
show margin set xtics axis; replot
set output "margin2.ps" set ytics axis; replot
replot set zeroaxis linetype -1; replot
set lmargin
show margin
gnuplot, test, terminal specific parameters gnuplot, test, važniji terminali
reset
set terminal wxt 0
set output
set parametric reset
plot [0:2*pi] cos(t), sin(t) plot exp(x)
set xrange [-2:2] l
set yrange [-1:1] l
replot m
set size square m
replot
set size ratio 1
replot
set size ratio 0.5
replot
reset
set xrange [-2*pi:2*pi]
set yrange [-2*pi:2*pi] show hidden3d
splot cos(x)*sin(y) set hidden3d
show isosamples show hidden3d
set isosamples 2; replot replot
show samples set isosamples 50
set samples 10; replot replot
set samples 100; replot
set isosamples 3; replot
set isosamples 5; replot
set isosamples 7; replot
show contour
set contour set contour surface
show contour replot
replot unset surface
help contour replot
set contour both
replot
gnuplot, 3D plot, more contours gnuplot, 3D plot, cubic spline
set isosamples 10
replot
set cntrparam cubicspline
splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2) title "sombrero"
help cntrparam replot
set cntrparam levels discrete 0,0.25,0.5,0.75 show view
replot set view map
set surface
replot
replot
set contour both unset surface
replot replot
set size ratio 1
replot
set isosamples 50
replot
set pm3d
replot
unset contour
show view replot
set view set view map
show view replot
replot set view
replot
set pm3d at b
replot
set pm3d at t
replot
octave
reset
set parametric z = rand(21);
splot [0:20*pi] cos(u), sin(u), u save z z
x = linspace(0, 4 * pi, 361);
x0 = cos(x);
set samples 1000 y0 = sin(x);
replot z0 = exp(x / pi);
xx = [x0’ y0’ z0’];
save xx xx
ctrl-d
set parametric
set isosamples 37
0 set urange[0:360]; set vrange[-90:90]
set size square
x 1
splot cos(v)*cos(u), cos(v)*sin(u), sin(v) w l lc rgb "cyan", \
π0 y "world_110m.txt" with lines lc rgb "blue" lw 2
gnuplot, planeta, 3D gnuplot, planeta, 2D
set terminal pdfcairo size 360 * 0.01, 180 * 0.01
set output "map.pdf"
unset key
unset border
unset tics
set lmargin 0
set rmargin 1
set tmargin 1
set bmargin 0
jω
0 2.5
2
1.5
-1
1
0.5
-2 0
-2 -1 0 1 2
σ
preporuka: http://gnuplot.sourceforge.net/demo/
Maxima, uvod 1
I Maxima, a computer algebra system, GPL I Maxima je program komandne linije, startuje se sa maxima
I http://en.wikipedia.org/wiki/Maxima_(software) I nekada ga pratio GUI xmaxima, još postoji
I http://maxima.sourceforge.net/ (sudo apt-get install xmaxima)
I zasnovana na MIT Macsyma, I sticajem okolnosti, koristićemo xmaxima i mi ove godine . . .
http://en.wikipedia.org/wiki/Macsyma I danas dominira GUI wxMaxima, Andrej Vodopivec
I William Frederick Schelter, GPL, DOE Macsyma 1982 I https://wxmaxima-developers.github.io/wxmaxima/
http://en.wikipedia.org/wiki/Bill_Schelter I wxMaxima može sve što može Maxima, nešto (ne sve) uneto
I star program, ali aktivno se razvija u GUI
I uključen u Scilab i Euler Math Toolbox I odlično radi i pod win
I uključen u SageMath, http://en.wikipedia.org/wiki/ I treba predavati u prvoj godini (jeretička misao)
Sage_(mathematics_software) I napomena: problemi pod nekim verzijama GNU/Linux!
I napredno: SageMath, http://www.sagemath.org/ I zato ćemo izbegavati veliku primenu i koristiti i xmaxima
I %pi;
I čudna i česta upotreba znaka %
I float(%pi);
I π je %pi
I ev(%pi, numer);
I e je %e
I %e;
I j ili i je %i
I float(%e);
I ∞ je inf, nema %, ima i infinity i infm
I float(%i);
I ; je kraj komande, nema veze sa Octave, čak suprotno!
I %iˆ2;
I $ je kraj komande to supress output
I sqrt(-1);
I float(<izraz>); daje numerički izlaz
I sin(%pi/4);
simboli, brojevi, razlomci . . . problemi sa =, osnovna prepreka primeni
I 3/4;
I I = je = iz jednačine
3.0/4;
I solve(2*x-8=2,x);
I 3/4.; I solve(xˆ2 - 5 * x = -6, x);
I 3/4.0; I solve(xˆ2 - 2, x);
I float(3/4); I : je = iz dodele vrednosti
I ev(3/4, numer); I a;
I a: 4;
I 1/2 - 1/3;
I a;
I float(%); I a$
I sin(2); I aˆ3;
I I sqrt(a);
sin(2.0);
I I := je = iz definicije funkcije
63ˆ3;
I f(x):=xˆ2;
I 3ˆ63; I f(3);
I 10!; I f(a);
I 100!; I f(b);
I 1000!;
=, % i solve undefinisanje
I fundef(f);
I još jedna čudna primena %, prethodni izraz I remfunction(f);
I %ok, k-ti output, k je integer, k ∈ N I fundef(f);
I %ik, k-ti input I može i remfunction(all);
I %; I values;
I %i2; I remvalue(a);
I a;
I %o2;
I a: 2;
I kod wxMaxima % može da vas prevari, vratićemo se na ovo,
I b: 3;
pazite!
I = je = iz jednačine, ne zaboravite, ponavljam! I values;
I 3*x+2=8; I remvalue(all);
I solve(%, x); I values;
I solve(yˆ3 = 27, y); I ovde posle ? mora blanko:
I solve(f(t)=64,t);
I ? values;
I ? remvalue;
I kill(all); I cos(%pi/3);
I eq: sin(x/(xˆ2+x)) = exp((log(x)+1)ˆ2-log(x)ˆ2); I sin(%pi/3);
I ratsimp(eq); I ev(sin(%pi/3), numer);
I ((x-1)ˆ(3/2)-(x+1)*sqrt(x-1))/sqrt((x-1)*(x+1)); I float(sin(%pi/3));
I ratsimp(%); I csc(45*%pi/180);
I expr: (xˆ(a/2)+1)ˆ2*(xˆ(a/2)-1)ˆ2/(xˆa-1); I tan(%pi/4);
I ratsimp(%); I tan(%pi/8);
I fullratsimp(%); I acos(1/2);
I ? ratsimp; I 180/%pi*asin(sqrt(3)/2);
I ? fullratsimp; I acsc(1);
I e1;
I e1: 10*x-2*y=6; I remvalue(all);
I e2; I a1: x+y+2*t=7;
I linsolve([e1,e2], [x,y]); I a2: x-y-t=2;
I e1: 10*x-2*y=5; I eliminate([a1,a2],[t]);
I linsolve([e1,e2], [x,y]);
matrice Kronecker-Capelli
I A: matrix([1,2],[2,1]);
I B: invert(A);
I A*B;
I ovo je element-wise operation!!! I A: matrix([5,-1,3],[10,-2,6]);
I A.B; I echelon(A);
I ovo je matrično množenje! I A[2][3]: 5;
I determinant(A); I A;
I determinant(B); I echelon(A);
I b: matrix([3], [3]);
I x: B.b;
I A.x;
I A.x-b;
I kill(all);
I remvalue(all);
I pazite, wxMaxima ima i wxplot2d koji embed graphs!
I a1: xˆ2+yˆ2=41;
I plot2d([y1,y2,y3],[x,-10,10],[y,-15,15]);
I a2: y=x+1;
I stari poznanik, gnuplot
I algsys([a1,a2],[x,y]);
I Octave radi isto, gnuplot
I t: solve(a1,y);
I describe(plot2d);
I y1: rhs(t[1]);
I ima i example(linsolve);
I y2: rhs(t[2]);
I %th(3);
I solve(a2,y);
I probajte %th(4);
I y3: rhs(solve(a2,y)[1]);
limesi 0, 0– i 0+
I limit((1+1/x)ˆ(2*x),x,inf);
I float(%);
I (x-2)/(xˆ2-4);
I limit(%,x,2); I limit(1/x,x,0);
I limit(xˆ3, x, inf); I limit(1/x,x,0,plus);
I limit(xˆ3, x, minf); I limit(1/x,x,0,minus);
I f(x) := atan(x);
I limit(f(x), x, inf);
I limit(f(x), x, minf);
I limit(sin(3*x)/x, x, 0);
kombinacije . . . izvodi
I remvalue(all);
I diff(xˆ2, x);
I f(x):=xˆ3*tan(x);
I diff(sin(x), x);
I rd: (f(x+h)-f(x))/h;
I diff(sin(x), x, 2);
I limit(rd, h, 0);
I diff(sin(x), x, 3);
I trigsimp(%);
I diff(sin(x), x, 4);
I trigrat(%);
I parcijalni izvodi
I diff(sin(x*y), x);
I diff(sin(w*t), t);
razvoj u red integrali
I neodredeni integral
I taylor(sin(x), x, 0, 5);
I integrate(xˆ2, x);
I taylor(cos(x), x, 0, 7);
I integrate(sin(x), x);
I f(x) := %eˆx-cos(x);
I odredeni integral
I taylor(f(x), x, 0, 7);
I integrate(xˆ2, x, 1, 2);
I vežba: nacrtajte sin(x) i razvoje reda 1, 3, 5 i 7 na istom
I integrate(sin(x), x, 0, %pi);
grafiku
I integrate(1/(1+xˆ2), x, 0, 1);
I kill(all);
I laplace(1, t, s);
I laplace(sin(w*t), t, s); I ilt(1/(s+2), s, t);
I laplace(cos(w*t), t, s); I ilt(2/(sˆ2+4), s, t);
I laplace(exp(a*t), t, s); I ilt((sˆ2+3*s+3)/(sˆ3+3*sˆ2+3*s+1), s, t);
I laplace(exp(a*t)*sin(w*t), t, s);
I laplace(exp(a*t)*cos(w*t), t, s);
I laplace(exp(t-T), t, s);
wxMaxima wxMaxima
I realno, ovo se koristi, mada ima problema ove godine
I odličan GUI, ali jedan od, ima ih više, npr. xmaxima I pogledate Cell meni
I razlike na komandnoj liniji skoro da nema I ćelije sa tekstom Ctrl+1 do Ctrl+4, valja komentarisati!
I komandu šaljete sa ctrl/Enter ili sa desnim Enter I pod win je ovo malo drugačije (Fsomething)
I postoji i wxplot2d i wxplot3d koji embed I pogledajte Save As ...
I plot3d(xˆ2-yˆ2, [x,-1,1], [y,-1,1]); I pogledajte Export ...
I wxplot3d(xˆ2-yˆ2, [x,-1,1], [y,-1,1]); I cilj#1: save mac file (manje važno, lako)
I a:2; I cilj#2: print to pdf file
I b:3; I cilj#3: export to LaTeX, posle pdf, ponekad bug!
I c:4; I na ispitu/kolokvijumu output je pdf, iz wxMaxima!
I obrišete ćelije sa c i b I dalje vežbate sami, ja pomažem, lista zadataka . . .
I %;
I pogledate okrečeni output, right click, Copy i Copy LaTeX
x
1. lim
1. rešiti jednačinu x 2 − 2x = 0 x→∞ x2 − 1
x
2. rešiti jednačinu ax 2 + 5bx − 2 = 0 2. lim 2
x→1 x − 1
3. rešiti sistem jednačina 2x − y − 1 = 0 i x + 2y + 4 = 0 3. naći prvi izvod y = xe x
4. nacrtati funkciju y = e x + 1 4. naći treći izvod y = x n e x
5. imaju li preseke krug x 2 + y 2 = 1 i prave (algebra + grafici) x2
5.1 x + y − 4 = 0 5. odrediti ekstreme i prevojne tačke funkcije y =
x −2
5.2 x + y − 1√= 0
5.3 x + y − 24 = 0 x2
6. nacrtati grafik funkcije y =
x −2
3x + 5
Z
I dx
x2 + x + 1
Z
I xe x dx
1. Maklorenov red 2. i 4. stepena + slika za f (x) = ln(1 + x + x 2 ) Z 5
dx
2. Maklorenov red 6. stepena + slika za f (x) = ln(1 + sin(x)) I √
√ 4
5
x
3. Tejlorov red po (x+3) 5. stepena za f (x) = x 2 + 1 Z π/2
dx
4. Tejlorov red po (x-1) 5. stepena za f (x) = ln(x) I
0 5 + 3 cos2 x
∞
1
Z
I dx
1 1 + x2
∞
ln2 x
Z
I dx
1 x2
cos 2x
Z
I 2
dx
2 dy
Z x cos x
sin I + y = cos(t)
x x 2 dt
I sin − cos dx
2 2 I odrediti konstantu rešenja tako da y (0) = 12
Z e 2
x +1 I napomene: koristiti subst i proveriti rešenje
I dx
2x dy
1
Z 9 I − 2y = −t 2
dt
I x sin x dx I odrediti konstantu rešenja tako da y (0) = 14
Z3 ∞
2 dy
I xe −x dx I + 2y = 2t
dt
Z0 ∞ I odrediti konstantu rešenja tako da y (0) = −1
2x
I dx
1 (1 + x 2 )2
Python?
I programski jezik
I Wikipedia:
I “Python is a general-purpose, high-level programming language
Python, I deo
whose design philosophy emphasizes code readability. Python
claims to "[combine] remarkable power with very clear syntax",
and its standard library is large and comprehensive. Its use of
indentation for block delimiters is unique among popular
programming languages.”
I “The reference implementation of Python (CPython) is free
and open source software and has a community-based
development model, as do all or nearly all of its alternative
implementations. CPython is managed by the non-profit
Python Software Foundation.”
Python?? Python???
Pokrenete IDLE ili ipython, kako god znate (kom. lin., dash, . . . )
help(type)
osnovne operacije: type
type()
2+2 type(3)
2-3 type(3.0)
2*3 type(3.)
type(10/3)
a sada iznenađenje: type(10.0/3)
type(10/3.)
3/4*100 type(10./3.)
3.0/4.0*100.0
3.0/4*100 ovde se Python 3.x.x razlikuje!!!
3./4*100
2ˆ3
3ˆ2
3ˆ3
10.0/3.0 10ˆ10
10.0//3.0 2**3
-10.0//3.0 2 ** 3
-10/3 3 ** 2
10 ** 10
type(10**10)
3**64
type(3**3)
type(3**64)
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, 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)
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, ispitivanje tipa, sada radi Python, ispitivanje tipa, može i ovako
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)
a = [1, 2, 3, 4]
a.append(5) a = range(5)
print a len(a)
b = [6, 7] print a
a.append(b) a = range(4, 10)
print a len(a)
len(a) print a
del a[5] a = range(3, 10, 2)
a.extend(b) print a
print a a = range(10, 0, -2)
len(a) print a
del a[5:]
print a
a = []
type(a)
a.append(1) a = range(10)
a.append(2) a.insert(3, 4)
a.append(3) print a
a.pop() a.insert(0, 1)
a.pop() print a
print a a.insert(len(a), ’kraj’)
a = range(10) print a
a.pop(3)
print a
Python, liste, reverse, sort Python, liste, brojanje i brisanje
a = [3, 2, 3, 1, 4, 3, 2, 2, 5, 2]
a = range(10) a.count(2)
a.reverse() a.count(3)
print a a.remove(3)
a.reverse() a.count(3)
print a print a
a = [3, 4, 2, 1] a.remove(3)
a.sort() print a
print a a.remove(3)
print a
a.remove(3)
3 in a print a
4 in a a.index(2)
a.remove(4) a.index(5)
4 in a a.index(1)
a.index(3)
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
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 . . .
strana 90:
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
a = ’Petar’
b = ’Marko’
len(a); len(b)
print ’pi = %5.3f’ % math.pi a + b
print ’pi = %7.4f’ % math.pi a * 3
n = 9 3 * a
print ’polagalo je %d studenata’ % n (a + 2 * b) * 3
print ’polagalo je %10d studenata’ % n a - b
a == a
vuče se po starim programima a == b
izbegavati! a < b
b < a
’1’ < ’2’
’1’ < 2
del s
i tako dalje, manual for string methods, pogledajte pre nego što
reinvent
f = open(’proba.txt’, ’w’)
print f
type(f)
Vreme je za zadatak:
f
I ulazni podatak je broj, n < 20 (npr.) f.write(’prvi red\n’)
I treba odštampati LEPU (formatiranu) tablicu množenja f.write(’drugi red\n’)
f.write(’treci red\n’)
Polako, sada imamo preča posla . . . f.close # metod, obavezne()
f.close()
type(f)
f
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
type(Vector)
a = Vector()
type(a)
kucate u editoru, kada završite proverite sintaksu i izvršite, print a
to su Alt+X i F5 a.x = 1
a.y = 2.0
class Vector: a.z = 3j
pass type(a.x)
type(a.y)
type(a.z)
print a.x, a.y, a.z
del a
type(a.x)
Python, class help Python, inicijalizacija, dodajemo na class, help
string ostaje
help(Vector)
class Vector:
class Vector:
. . .
"""Vector(x, y, z)
def __init__(self, x, y, z):
self.x = x
klasa koja definise vektore
self.y = y
i operacije nad njima"""
self.z = z
note: nema više pass!
i = Vector(1, 0, 0)
help(Vector)
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
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__()
class Vector:
class Vector: . . .
. . . def scalprod(self, other):
def dotprod(a, b): return Vector(self.x * other, \
dp = a.x * b.x + a.y * b.y + a.z * b.z self.y * other, self.z * other)
return dp
print Vector.scalprod(i, 3)
print Vector.dotprod(i, j) print Vector.scalprod(3, i)
print Vector.dotprod(j, i) print k.scalprod(3)
a = Vector(2, 2, 0) print 3.scalprod(k)
print a.dotprod(j) j.scalprod(3).pr()
print a.dotprod(k) 3.scalprod(i).pr()
a.dotprod(k).pr() a = 3
k.dotprod(i).pr() # zašto ne radi? a.scalprod(i).pr()
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
Python, class and object variables Python, class and object variables, primena
Python, a sada nešto sasvim različito, map Python, a sada nešto neočekivano
x = range(11) help([])
print x help(())
def sq(a): help({})
return a ** 2 a = (1, 2, 3, 4, 5)
a[0]
y = map(sq, x) a[3]
print y a[2] = 5
def reciproc(x):
try:
def reciproc(x): return 1 / x
try: except ZeroDivisionError:
return 1 / float(x) print ’delis nulom!’
except:
print ’Houston, we have a problem!’ reciproc(3)
reciproc(3.)
reciproc(0)
reciproc(0.)
reciproc(’a ovo?’)
reciproc(3) reciproc(3)
reciproc(3.) reciproc(3.)
reciproc(0) reciproc(0)
reciproc(0.) reciproc(0.)
reciproc(’a ovo?’) reciproc(’a ovo?’)
reciproc(1+0j) reciproc(1+0j)
python ime_programa.py
chmod +x ime_programa.py
#! /usr/bin/python #! /usr/bin/python
# -*- coding: utf-8 -*-
print ’ja se ne zovem Čedomir Š. Petrović’
print ’jа се зовем Предраг Пеjовић’ print ’ja se ne zovem Čedomir Š. Petrović’
print ’jа се зовем Предраг Пеjовић’
Python, rendering Python, budućnost
print r’\n\n\n’ i
print ’\\n\\n\\n’
from __future__ import unicode_literals
NumPy SciPy
SciPy matplotlib
I http://ipython.org/
I https://jupyter.org/ I sve prethodno zgodno spakovano
I interaktivni Python envirinment, vrlo nalik na Octave, I sređen namespace da ne mora puno dot notation
wxMaxima, . . . I sintaksa jako liči na Octave/Matlab
I autocompletion by tab I počinjemo, komandna linija, terminal
I doteruje komande da budu shvaćene I ipython --pylab
I od mnogo mogućnosti: store, history, logging, . . .
store a
store b
help() store lista
? del a
%quickref del b
a = 3 a
b = ’string’ b
lista = [1, 2, 3] store -r
li<tab> a
whos b
store -z
store
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!
I = eye(3)
print I
nule = zeros(4) a + 1
print nule a * a
zeros? a**3
zeros((4, 2)) a / 2
zeros(4, 2) # pazite! a / 2.
zeros((4, 2), dtype = int)
zeros((4, 2), dtype = complex) Pazite na /, velika razlika u odnosu na Octave!!!
ones([3, 4])
empty([6, 4])
empty?
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, ))
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
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?
0.03
na komandnoj liniji:
inside IPython:
python dat.py
more dat.txt run dat.py
less dat.txt execfile(’dat.py’)
ls *.npy
ipython --pylab execfile radi i kod IDLE
np.save?
1.0
np.savetxt?
np.load?
deg = np.load(’deg.npy’)
f = np.load(’f.npy’) 0.5
fp = np.load(’fp.npy’)
fm = -fp
f(wt)
plot(deg, f, ’r’) 0.0
plot(deg, fp, ’b’)
plot(deg, fm, ’b’)
xlim(0, 360 * 4) 0.5
xticks(arange(0, 360 * 4 + 1, 180))
xlabel(’wt [deg]’)
ylabel(’f(wt)’)
1.00 180 360 540 720 900 1080 1260 1440
savefig(’datslik’)
wt [deg]
close()
x +y =3
x −y =1
randn?
linalg.lstsq? close(’all’)
I http://live.sympy.org/
0.4
I uputstvo 0.7.6.1, 1995 strana, 03.09.2015.
I Ubuntu: Software Center ili Synaptic
0.2 I volite Mathematica sintaksu?
I odličan pregled i tutorial
0.0 I za one koji vole matematiku http://www.sagemath.org/
0.0 0.5 1.0 1.5 2.0
x
p1 = x**2 + 2 * x + 1
p1
print p1
I komandna linija, isympy
pprint(p1)
I stari poznanik, IPython, customized again p2 = x + 1
I pogledajte šta radi na početku, dekleracije symbols . . . p2
p3 = x**2 - 4
p3
p1 * p2 * p3
_.expand()
p1 / p2
_.expand()
p1 / p2
_.apart() 1 / 3
apart(p1 / p2, x) Rational(1, 3)
help(expand) S(’1/3’)
help(apart) S(’1 / 2’)
f = 1 / (x**2 * (x + 1)) S(’1/2’) - S(’1/3’)
apart(f, x)
together(_, x)
_.expand()
_.factor()
_.subs(x, 3)
SymPy, konstante i izračunavanje SymPy, Ramanujan
p2 = pi**2
p2 r = E**(pi * sqrt(163))
p2.evalf() r
p2.evalf(100) r.n(20)
p2.n() r.n(21)
p2.n(200) r.n(22)
N(p2) r.n(23)
N(p2, 300) r.n(24)
exp(1) r.n(25)
e r.n(28)
E r.n(30)
E.evalf() r.n(35)
I**2 r.n(500)
exp(I * pi) + 1
E**(I * pi) + 1
e1 = 2 * x + y - 4
e2 = x - y + 1
e1
e2
solve((e1, e2), (x, y))
exp(I * x).expand(complex = True)
xr = Symbol(’xr’, real = True) e3 = x - y + 4
exp(I * xr).expand(complex = True) e2
e3
solve((e2, e3), (x, y))
e4 = 3 * x - 3 * y + 12
e3
e4
solve((e3, e4), (x, y))
f = sin(14 * x) / x
solve(p1, x) g = 1 / x
solve(p2, x) limit(f, x, 0)
solve(p3, x) limit(g, x, 0)
solve(x**4 - 1, x) limit(g, x, 0, dir = ’+’)
solve(Eq(x**4, 1), x) limit(g, x, 0, dir = ’-’)
limit?
SymPy, izvodi SymPy, integrali
print p1
pprint(p1)
diff(p1, x) integrate(p1, x)
diff(p1, x, 2) integrate(p1, (x, 1, 2))
diff(p1 * p2 * p3, x) integrate(cos(x), x)
_.expand() integrate(sin(x), (x, 0, pi))
diff(p1 * p2 * p3, x, 14)
diff(p1*exp(3*x), x)
_.expand()
sin(x).series(x, 0, 10)
series(sin(x), x, 0, 10) f
series? del f
series(sin(x), x, 1, 10) f = Function(’f’)
series(exp(x), x, 0, 5) f
series(exp(x), x, 5, 5)
source(series)
# cast
Rešiti diferencijalnu jednačinu y, t = symbols(’y t’)
f = symbols(’f’, cls=Function)
# equation
d 2 f (t) d f (t) deq = Eq(f(t).diff(t, 2) + 2 * f(t).diff(t, 1) + 4 * f(t), 2 * sin(t))
+2 + 4 f (t) = 2 sin(t) print
dt 2 dt pprint(deq)
# solution
i proveriti rešenje. sol = dsolve(deq, f(t))
print
Napisati Python script koji rešava problem, prikazati jednačinu, pprint(sol)
rešenje i rezultat provere. # verification
s = sol.rhs
ver = deq.subs(f(t), s)
ver = ver.doit()
ver = ver.expand()
print
pprint(ver)
SymPy, diferencijalne jednačine, script, rešenje SymPy: :, =, is()