Professional Documents
Culture Documents
Simbolicko Racunanje
Simbolicko Racunanje
Negovan Stamenković
Simboličko računanje
1 Uvod 5
2 Računarski sistemi 11
2.1 Istorijski razvoj računara . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Von Neumannova mašina . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Struktura savremenog računarskog sistema . . . . . . . . . . . . . . . . 19
2.3.1 Tehnički sistem računara . . . . . . . . . . . . . . . . . . . . . 19
2.3.2 Programski sistem računara . . . . . . . . . . . . . . . . . . . 24
2.3.3 Funkcionisanje računarskog sistema . . . . . . . . . . . . . . . 29
2.4 Programski jezici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4.1 Mašinski jezik . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.4.2 Asemblerski jezik . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4.3 Programski jezici višeg nivoa . . . . . . . . . . . . . . . . . . . 34
2.5 Pitanja za proveru znanja . . . . . . . . . . . . . . . . . . . . . . . . . 36
3 Osnove MATLAB-a 39
R
3.1 Osnovne mogućnosti MATLAB a . . . . . . . . . . . . . . . . . . . . . 40
R
3.2 Jednostavna MATLAB izračunavanja . . . . . . . . . . . . . . . . . . . 42
3.3 Operatori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3.1 Operator dodele . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4 Matrična izračunavanja . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4.1 Matrice specijalne strukture . . . . . . . . . . . . . . . . . . . 46
3.4.2 Sabiranje i oduzimanje matrica . . . . . . . . . . . . . . . . . . 47
3.4.3 Množenje matrica . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.4.4 Indeksiranje elemenata matrica . . . . . . . . . . . . . . . . . . 50
3.4.5 Operator dvotačka . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5 Polinomi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
R
3.6 Programiranje u MATLAB u . . . . . . . . . . . . . . . . . . . . . . . 53
3.7 Skript datoteke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.7.1 Kontrolne petlje . . . . . . . . . . . . . . . . . . . . . . . . . . 54
R
3.8 Efikasnost izvršavanja programa u MATLAB u . . . . . . . . . . . . . . 59
3
4 SADRŽAJ
Literatura 80
Indeks pojmova 82
Glava 1
Uvod
5
6 GLAVA 1. UVOD
baza menja suviše brzo. Sve što se uči “ad hoc” zastareva vrlo brzo.
Ipak, računarska tehnologija čini računarstvo jednim od stubova savremenog
društva. Informaciono društvo, kao oblik društvenog ured-enja u ovom veku,
nameće nove kriterijume razvoja privrede i društva, a oni se baziraju na brzini
stvaranja informacije i dostupnosti informaciji. Kao preteča globalne informa-
cione infrastrukture vidi se Internet, pa se veliki broj privrednih grana orijentiše
ka njegovom korišćenju i uključuje u digitalnu ekonomiju i poslovanje.
Matematička logika pruža formalni jezik za opisivanje i orud-a za analizu
problema koji se istražuju u računarstvu, a i sama je poligon za primenu rezul-
tata iz te oblasti, recimo za automatske dokazivače teorema. Razne klasične i
neklasične logike i drugi formalni sistemi se koriste u sistemima zaključivanja,
poput ekspertnih sistema i verifikaciji programa i elektronskih sklopova računara.
Jedan od ciljeva razvoja matematičke logike je konstrukcija dovoljno jakih sis-
tema koji će biti u stanju da formalizuju sve šire oblasti ljudskog mišljenja, tako
da njihova složenost bude u granicama tehnološke ostvarljivosti. Rezonovanja o
znanju se pokazalo korisnim u veštačkoj inteligenciji, ali i u teoriji igara i anal-
izi paralelnih računarskih sistema. I druge oblasti matematičke logike nalaze
primene u računarstvu. Recimo, jedan efikasno implementiran segment klasične
predikatske logike prvog reda se nalazi u osnovi sistema baza podataka i jezika
SQL (engl. Structured Query Language). Teorija tipova čini okvir za razvoj i
analizu programskih jezika u kome se pogodno prikazuju napredni koncepti savre-
menih jezika, poput nasled-ivanja i polimorfizma, omogućava rezonovanje o pro-
gramima i predlažu nove tehnike za kreiranje efikasnijih prevodilaca. Ideja o pro-
gramskom jeziku Prolog i logičkom programiranju proizašla je iz istraživanja na
polju automatskog dokazivanja teorema. Uopšte, postojeća sredstva matematičke
logike u toj meri zauzimaju centralno mesto u računarstvu da se logika često sma-
tra računom računarstva, čak i u većoj meri nego što je to matematika za prirodne
nauke.
Osnivač teorije formalnih jezika i automata je Noam Chomsky (Čomski, 1928).
U njoj se raspravljaju pitanja opisivanja formalnih jezika i strukture odred-enih
klasa formalnih jezika. Formalni jezici i njima odgovarajući automati predstav-
ljaju, izmed-u ostalog, osnov za kreiranje i implementaciju programskih jezika, ali
i za razne druge algoritme prepoznavanja oblika, verifikacije itd.
Par reči o računarskoj terminologiji. Razmišljanje je najintimnija aktivnost, a
u značajnoj meri se otkriva načinom na koji se koristi (ili zloupotrebljava) jezik.
Analize jezika pak počinju sa rečnicima. Tako se u jednoj vrsti rečnika engleskog
jezika, koja opisuje savremenu upotrebu jezika - Websters New Collegiate Dic-
tionary, u jednom od novijih izdanja pojavilo novo značenje reči “inteligentan”:
sposoban za obavljanje nekih funkcija računara (inteligentan računarski termi-
7
Programski jezik je bilo koji od veštačkih jezika kojim je moguće dati detaljne
instrukcije računaru. Te instrukcije se mogu izvršavati direktno kada su ugrad-ene
u računar u posebnom obliku koji je odredio proizvod-ač, tzv. mašinski jezik, posle
jednostavnog procesa zamene izražene u odgovarajućem asemblerskom jeziku, ili
posle prevod-enja iz nekog jezika višeg nivoa.
Po stepenu zavisnosti programskog jezika od računara programski jezici mogu
biti:
Pored Uvoda, koji je ujedno i prva glava, knjiga sadrži još sedam poglavlja:
Računarski sistemi, Predstavljanje podataka, Logičke osnove obrade podataka,
R
Računarske komunikacije, Microsoft Office Excel, LATEX2e i Osnove MATLAB -a.
U drugoj glavi Računarski sistemi nalazi se prikaz računara kao mašine u ko-
joj se mogu razlikovati dva nivoa (tehnički i programski), pri čemu je svaki od
nivoa detaljno opisan. Čitalac može da se upozna sa istorijskim razvojem računara.
Posebna pažnja je posvećena arhitekturi von Neumanove mašine čiji je princip još
uvek osnova za sve računare.
U trećoj glavi Predstavljanje podataka objašnjava se pojam brojnog sistema
i osnove brojnog sisteme i daju algoritmi za prevod-enje brojeva iz jedne u drugu
osnovu. Naročito su istaknuti binarni, oktalni i heksadecimalni brojni sistem kao
najzastupljeniji u računarstvu. Pored standardnih brojnih sistema ova glava sadrži
i aritmetiku po modulu koja nalazi sve veću primenu u sistemima za paralelnu
obradu podataka.
Četvrta glava sadrži Logičke osnove obrade podataka. Na najnižem hardver-
9
skom nivou nivou eletronike, projektuju se moduli poput logičkih kola. Logička
kola definišemo kao fizičke objekte koji implementiraju neku od funkcija alge-
barske logike. Povezivanje logičkih elemenata dobijamo kombinacione mreže -
implementaciju složenih logičkih funkcija. Pomoću kombinacionih mreža mogu
se implementirati samo one funkcije računara koje ne zahtevaju memorisanje po-
dataka ili informacije o prethodnom stanju. Prikazana su pet načina za prikazi-
vanje logičke funkcije: kombinaciona tablica, u algebarski oblik, skupom indeksa,
Karnaughova mapa i šematski pomoću logičkih kola. Na kraju je izložen metod
minimizacije logičkih funkcija u cilju smanjivanja složenosti njihove realizacije.
U petoj glavi Računarske komunikacije objašnjavaju se Internet protokol IPv4
i programski jezik HTML. Razmatraju se klase IPv4 adresa kao i mrežno i
podmrežno adresiranje. Ukazno je na razliku izmed-u javnih i privatnih mreža.
Imajući u vidu da je svaka internet stranica HTML dokument u drugom delu
ove glave date su osnove programskog jezika HTML. Programski jezik HTML,
kao i tekst procesor LATEX o kome će biti reči u sedmoj glavi, spada u grupu jezika
za obeležavanje. Jezik za obeležavanje odred-uje skup obeležja (tagova, markera,
privezaka, labela, etiketa, ...) i skup pravila za njihovo korišćenje. Pomoću jezika
za obeležavanje opisuje se dokument koji može biti smešten u jednu ili više da-
toteka. Ovako obeleženi dokumenti se zatim korišćenjem odgovarajućih prevodi-
laca prevode i prikazuju u obliku koji čovek može lako da čita. Ovi prevodioci
mogu biti bilo zasebni programi (što je slučaj kod LATEX-a, gde se na osnovu
obeleženog ulaza gradi završni dokument, najčešće u pdf formatu), bilo integrisani
u druge programe kao što su npr. pregledači Weba (engl. Web browser) (što je
slučaj sa jezikom HTML). Dakle, svrha Web čitača jeste čitanje Web stranice, Web
čitač ne prikazuje HTML oznake, već pomenute oznake koristi kako bi korisniku
interpretirao sadržaj stranice.
Šesta glava objašnjava programski paket Microsoft Office Excel koji uglavnom
služi za rešavanje problema matematičkog tipa pomoću tablica i polja koje je
moguće povezivati različitim formulama. Može poslužiti i za izradu jedno-
stavnijih baza podataka. Na temelju unesenih podataka, lako se iz tablica mogu
stvarati grafikoni. Takod-e omogućuje dodavanje različitih objekata: tablica, slika,
grafikona, itd. Za razliku od statičke tabele koju bi rukom napisali na papiru, u Ex-
celu ako se podaci automatski (dinamički) menjaju u ćelijama, menja se i rezultat
u odgovarajućoj ćeliiji.
Programski paket TEX i njegovi makro paketi LATEX i AMS-LATEX, koji je
opisan u sedmoj glavi, predstavlja svetski standard za obradu matematičkih,
inženjerskih i drugih tekstova koji sadrže matematičke formule. Većina mate-
matičkih časopisa u svetu danas zahteva da tekstovi koje oni publikuju budu
pripremljeni u nekoj od varijanti TEX-a. LATEX nije WYSIWYG tekst procesor
10 GLAVA 1. UVOD
Računarski sistemi
11
12 GLAVA 2. RAČUNARSKI SISTEMI
(a) SISD (Single Instruction Single Data) - Jedan procesor uzima instruk-
cije i izvršava sve operacije procesiranja podataka. Ova arhitektura se
naziva i Von Neumannov računar.
(b) SIMD (Single Instruction Multiple Data) - Ova kategorija obuhvata
računare koji imaju mnogo identičnih med-usobno povezanih proce-
sora pod supervizijom jednog procesora. Procesor simultano šalje in-
strukciju svim procesorima, a oni simultano izvršavaju tu instrukciju.
Svaki procesor radi nad podacima iz svoje memorije. Svakom proce-
soru mora biti dopušteno da završi svoju instrukciju pre nego što se
uzme sledeća instrukcija za izvršenje. Primer Grafički procesor.
(c) MIMD (Multiple Instruction Multiple Data) - Većina multi-
procesorskih i multi-računarnih sistema se mogu svrstati u ovu kate-
goriju. MIMD računar ima mnogo med-usobno povezanih procesora.
Procesori rade nad svojim podacima sa svojim instrukcijama. Zadaci
izvršeni od strane različitih procesora mogu početi ili završiti u različito
vreme. Za razliku od SIMD računara zadaci se rade asinhrono.
zov kalkulator, ured-aj sastavljen od nazubljenih valjaka koji je osim sabiranja i oduzimanja mogao
izvoditi operacije množenja i deljenja (usavršen Pascalov kalkulator). Postavio je princip izrade
mehaničkih računara koji su se koristili gotovo tri veka (mehaničke registar kase na blagajnama tr-
govina). Proučavao je i binarni brojni sistem, ali ga nije povezao sa računarom.
3 1822. godine Charles Babbage (engl. matematičar i pronalazač) napravio je projekat za difer-
encijalni ured-aj koji je omogućavao unos velikog broja podataka i primenu velikog broja formula
(sabiranje i oduzimanje), a rezultat je davao u obliku štampane liste. Ured-aj je bio mehanički i tre-
balo je da ga pokreće parna mašina. Zbog niza finansijskih i tehnoloških okolnosti ured-aj nikada nije
bio dovršen. 1833. godine Babbage dolazi na ideju da konstruiše tzv. analitički ured-aj koji je trebalo
da obavlja sve vrste računanja. Prvi mehanički računar opše namene s programom nije, zbog ne-
savršene tehnologije i nedostatka novca završen u to vreme, ali je Babbage nazvan “ocem računara”
jer je njime postavio principe i način rada prema kojima su se kasnije izgrad-ivali elektronski računari.
14 GLAVA 2. RAČUNARSKI SISTEMI
Najsloženija savremena VLSI kola sadrže oko 125 000 000 komponenata na slicijumskoj pločici.
16 GLAVA 2. RAČUNARSKI SISTEMI
Danas se radi na razvoju još jedne nove klase računara - neuroračunara, zasno-
vanih na korišćenju veštačkih neuronskih mreža sličnih neuronima mozga, koji će
imati, verovatno, principijelno drugačiju arhitekturu od dosadašnje, a biće u stanju
da znatno bolje rešavaju neke ”teške” probleme. Naime, kognitivni (spoznajni)
problemi kao što su prepoznavanje likova, učenje govora, razumevanje prirodnog
jezika, pretraživanje tekstualne informacije u memoriji ili vod-enje mehaničke ruke
robota radi hvatanja predmeta su primeri problema koje brzo rešava ljudski mozak
a koji su teški za rešavanje pomoću konvencionalnih računara.
Zakoni fizike ograničavaju projektante u beskrajnom povećavanju brzine gen-
eratora takta, i mada se frekvencija takta povećava svake godine, to samo po sebi
ne bi dalo ona poboljšanja performanse na koja smo navikli. To je razlog zašto
inženjeri stalno tragaju za novim načinima da što više uposle procesor u svakom
otkucaju generatora takta. Jedna od pristupa je da se prošire magistrala podataka i
registri. Čak i 4-bitni procesor može da sabere dva 32-bitna broja, ali bi za to bilo
potrebno dosta instrukcija, dok bi 32-bitni procesor mogao da izvrši taj zadatak u
jednoj jedinoj instrukciji. Većina današnjih procesora imaju 32-bitnu arhitekturu,
ali već stižu i 64-bitne varijante.
Kada se kaže da se ”stvari dešavaju sa svakim otkucajem generatora takta”,
onda je potrebno znati koliko u stvari treba vremena da bi se izvršila jedna instruk-
cija. Tradicionalno, bilo je potrebno pet otkucaja (ciklusa) jedan da se prihvati
instrukcija iz memorije, jedan da se ona dekoduje, jedan da se dodje do podatka,
jedan da se instrukcija izvrši i jedan da se ispiše rezultat. U tom slučaju, evidentno
je da bi procesor koji radi na frekvenciji od 100 MHz bio u stanju da izvrši samo
20 miliona instrukcija u sekundi.
godina znao je da deli osmocifarske brojeve. Studirao i diplomirao hemiju, a doktorirao matematiku
2.2. VON NEUMANNOVA MAŠINA 17
Memorija
Aritmetičko
Upravljačka logička jedinica
jedinica
Akumulator
Ulaz Izlaz
0 0
1 1
2 2
102 20 104 60
n−1 n−1
PRM 20 PRM 60
(a) (b)
Sl. 2.2: Čitanje sadržaja memorijske adrese (a) i upisivanje novog sadržaja u
memorijsku adresu (b).
EPROM (engl. Erasable PROM) čip je varijanta PROM čipa čiji se sadržaj
može menjati pomoću ultravioletnih zraka i specijalne opreme.
Ulazno/izlazni ured-aji obezbed-uju unošenje i izdavanje informacija u računar
tj. iz računara, i predstavljaju sredstvo komunikacije računara sa spoljašnjom sredi-
nom.
Primer ulaznih ured-aja su tastatura terminala, miš, ured-aji za prepoznavanje
govora (svi oni uključuju čoveka u proces ulaza informacija), ili skaneri, optički
čitači, senzori, kojima se eliminiše čovek iz procesa unošenja informacija. Po-
daci koji se unose preko ovih ulaznih ured-aja, bilo da su to brojevi, tekst, slika,
zvuk, smeštaju se, transformisani u binarni oblik, u deo primarne memorije na-
menjen ulazu podataka. Na primer, skaner, uz specifični softver, skanira sliku
gradeći u memoriji bitmapu mapu ćelija, od kojih se svakoj pridružuje binarni
kod (broj) koji odgovara njenoj osvetljenosti ili boji. Tek iz memorije se svi ti
podaci mogu koristiti ili za obradu ili za predstavljanje, sada opet transformisani
u, za čoveka, pogodni oblik (dekadni broj, slova, sliku, zvuk) na izlazne ured-aje.
Posebno zanimljiv u tom pogledu je slučaj tastature koja je bliska čak i onim koris-
nicima koji nisu imali nikakav dodir sa računarom, zbog njene sličnosti sa pisaćom
mašinom. Postoji, med-utim, bitna razlika izmed-u pisaće mašine i tastature. Pri-
tisak na tipku pisaće mašine proizvodi ispisivanje odgovarajućeg slova na papir
to je sve jedna, nedeljiva operacija. Pritisak na tipku tastature ima sasvim drugi
efekat. On proizvodi niz eketronskih impulsa koji predstavljaju taj znak u bina-
rnom obliku, zatim se ti impulsi usmeravaju na odred-enu adresu unutrašnje mem-
orije gde se privremeno čuvaju, i zatim se usmeravaju na ekran terminala, koji ih
transformiše nazad u znak spoljašnje azbuke. Dakle, za ulaz sa tastature vezane
su dve operacije jedna kojom se znak upisuje u memoriju, i druga kojom se znak
iz memorije ispisuje na ekran. One se izvršavaju u paru samo zbog udobnosti za
korisnika (da bi video šta je ukucao), inače, što se rada računara tiče, druga bi se
operacija mogla eliminisati.
Primeri izlaznih ured-aja su ekran terminala, štampač, crtač, ured-aj za izlaz na
mikrofilm, ured-aji za glasovni izlaz, itd. Da bi se ekran mogao koristiti za izdavanje
znakova, brojeva, ali i slika i crteža, neophodna je i odgovarajuća grafička kartica
koja obezbed-uje odgovarajuću rezoluciju (broj osvetljenih tačaka na ekranu).
Potreba za trajnim čuvanjem velikih količina informacija podataka i programa
dovela je do koncepta “spoljašnjeg” skladišta spoljašnje memorije, čiji sadržaj os-
taje sačuvan trajno. Spoljašnja memorija se ponaša kao medij za ulazne i izlazne
podatke, i koristi se uz pomoć ured-aja koji omogućuje upravljanje njom (tzv. kon-
troleri spoljašnje memorije, npr. kontroler diska), i programa koji omogućuju
čitanje i pisanje iz (u) spoljašnje memorije (npr. pogonaš diska engl. disk driver).
24 GLAVA 2. RAČUNARSKI SISTEMI
Postoje dva tipa programskih sistema - softvera: sistemski softver i aplikativni soft-
ver. Programski sistem računara je skup programa koji kontroliše i koordinira rad
različitih tipova opreme u računarskom sistemu, i omogućuje korisniku efikasno
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 25
Programski sistem
• Operativni sistemi;
• Programski prevosioci;
• Uslužni programi;
Uslužni programi
Programski prevodioci
• Editor
• Asembleri i makroasembleri
• Povezivač
• Kompilatori
• Sredstva za testiranje i otklanjanje
• Interpretatori
grešaka
• Pretprocesori
• Pomoćni programi
(a) program homogenizator radi konverzije ulazne programske linije u neki stan-
dardni interni format, ili
(b) sintaksni analizator i generator koda radi sintaksne provere i generisanja
mašinskog koda, ili
(v) procesor komandi radi obrade upravljačke (kontrolne) naredbe, npr. RUN,
ali ne i njenog izvršenja.
Editori teksta čine bitan deo korisničkog interfejsa i najčešće su korišćeni de-
lovi sistemskog softvera u interaktivnim računarskim sistemima. Za većinu koris-
nika oni predstavljaju glavnu spregu sa računarom. Mogu biti linijski editori, kada
se tekst posmatra kao niz linija razdvojenih upravljačkim znakom za kraj linije, ili
ekranski editori. Kod ekranskih editora sadržaj ekrana predstavlja prozor u tekst
unutar kojeg se kursor može dovesti na mesto gde će se vršiti umetanje, brisanje i
druge editorske funkcije.
Jedna od važnih karakteristika editora je skup editorskih funkcija koje su stav-
ljene na raspolaganje korisniku. Taksonomija9 mogućnosti editora obuhvata poten-
cijalno preko 200 funkcija koje se njime mogu izvršavati. Ovde ćemo opisati samo
neke od najvažnijih i najčeš će koriš ćenih funkcija nad tekstualnim objektima, gde
se pod objektom podrazumeva: znak, reč, linija, rečenica, paragraf i sekcija, koji
kao celina podležu odredjenoj operaciji editovanja:
predstavljanje hijerarhijske klasifikacije pojmova, stvari, objekata, mesta, bića, dogad-aja ili principa
koji se klasifikuju. Stablo ili drvo je struktura koja omogućava definisanje hijerarhijske veze med-u
rečima.
2.3. STRUKTURA SAVREMENOG RAČUNARSKOG SISTEMA 29
• Mašinski jezik.
• Simbolički (asemblerski) jezik.
• Jezici višeg nivoa
Asemblerski (ili simbolički) jezici su jezici koji su veoma bliski mašinskom jeziku
računara, pri čemu se, umesto korišćenja binarnog sadržaja za zadavanje instrukcija
koriste (mnemotehničke, lako pamtljive) simboličke oznake instrukcija (tj. pro-
grami se unose kao tekst). Ovim se, tehnički, olakšava unos programa i programi-
ranje (programer ne mora da direktno manipuliše binarnim sadržajem), pri čemu
su sve mane mašinski zavisnog programiranja i dalje prisutne. Kako bi ovako
napisan program mogao da se izvršava, neophodno je izvršiti njegovo prevodenje
na mašinski jezik (tj. zapisati instrukcije binarnom azbukom) i uneti na odgo-
varajuće mesto u memoriji. Ovo prevodenje je jednostavno i jednoznačno i vrše ga
jezički procesori koji se nazivaju asembleri.
Ilustrujmo programiranje na mašinski zavisnim jezicima na minijaturnom
modelu računara Von Neumannove arhitekture. Neka procesor računara sadrži dva
osmobitna registra ax i bx i neka podržava sledeće instrukcije:
loop:
mov ax, [10]
mov bx, [11]
mul ax, bx
mov bx, 1
add ax, bx
mov [10], ax
cmp ax, 7F
jle loop
Nakon izvršenja prve instrukcije sadržaj memorijske adrese 10 se upisuje u
registar tt ax. Nakon izvršenja druge instrukcije sadržaj memorijske adrese 11 se
upisuje u registar bx. Trećom instrukcijom množi se sadržaj registara ax i bx i
rezultat se smešta u ax. Nakon toga, u registar bx upisuje se vrednost 1 i sabira
se sa tekućom vrednošću registra ax, smeštajući rezultat u registar ax. Zatim se
tekuća vrednost registra ax (a to je proizvod vrednosti sa adresa 10 i 11 uvećan
za 1) prenosi nazad na adresu 10. Nakon toga, vrši se pored-enje tekuće vrednosti
registra ax (koja se nije promenila prenosom u memoriju) i vrednosti 7F i ukoliko
je vrednost ax manja ili jednaka ceo postupak se ponavlja.
Na primer, binarne kodove za svaku od pet različitih instrukcija moguće je
uvesti na sledeći način:
mov 001
add 010
mul 011
cmp 100
jle 101
-
Takod e, pošto neke instrukcije primaju podatke različite vrste (neposredno
navedeni brojevi, registri, memorijske adrese), potrebno je uvesti posebne kodove
za svaki od različitih vidova adresiranja. Na primer:
neposredno 00
registarsko 01
apsolutno 10
Neka registar ax ima oznaku 00, a registar bx ima oznaku 01. Pretpostavimo
da su sve adrese osmobitne. Imajući sve ovo u vidu, instrukcija mov [10],
ax se, u ovom hipotetičkom mašinskom jeziku, može kodirati kao 001 10 01
00010000 00. Kod 001 dolazi od instrukcije mov, zatim slede 10 i 01 koji
ukazuju da prvi argument predstavlja memorijsku adresu, a drugi oznaku regis-
tra, zatim sledi memorijska adresa (10)16 binarno kodirana sa 00010000 i na
kraju oznaka 00 registra ax. Na sličan način, celokupan prikazani mašinski kod je
moguće binarno kodirati kao:
34 GLAVA 2. RAČUNARSKI SISTEMI
001 01 10 00 00010000
001 01 10 01 00010001
011 00 01
001 01 00 01 00000001
010 00 01
001 10 01 00010000 00
100 01 00 00 01111111
101 11110000
Pretpostavlja se da se ovaj kod smešta u memoriju na adresu F0, pošto posled-
nja instrukcija uslovnog skoka prenosi kontrolu upravo na tu adresu.
Primetimo da je izmed-u prikazanog asemblerskog i mašinskog programa pos-
toji veoma direktna i jednoznačna korespondencija (u oba smera) tj. na osnovu
datog mašinskog koda moguće je jednoznačno rekonstruisati asemblerski kod.
Specifični hardver koji čini kontrolnu jedinicu procesora dekodira jednu po
jednu instrukciju i izvršava akcije njom kodirane. Naravno, prilikom dizajna re-
alnih procesora, broj instrukcija i načini adresiranja je mnogo bogatiji i prilikom
samog dizajna mašinskog jezika potrebno je uzeti u obzir mnoge aspekte na koje
se u ovom jednostavnom prikazu nije obraćala pažnja.
Osnove MATLAB-a
R
RVA , izvorna verzija MATLAB a, napisana je kasnih sedamdesetih godina, na
P univerzitetu New Mexico i Stanford Univerzitetu, sa osnovnom namenom
da služi kao pomoćno sredstvo na kursevima iz linearne algebre i numeričke
analize. Zamišljeno je da ovaj programski paket bude nadgradnja programskog
paketa FORTRAN-a koja bi koristila gotove potprograme Fortran-a. Današnje
R
mogućnosti MATLAB a daleko prevazilaze tadašnji originalni “Matrix Labo-
ratory”. Ogroman broj naučnih i tehničkih disciplina neizostavno zahtevaju
R
R
korišćenje MATLAB a. MATLAB pored svojih prvenstveno razvojnih i program-
abilnih mogućnosti poseduje još jednu zaista moćnu alatku koja je jedna od os-
novnih odlika ovog paketa. To su toolboxovi. Naime, vrlo jednostavno se u
R
MATLAB u mogu kreirati sopstvene funkcije koje daju rešenja na postavljene za-
hteve. Skup ovako kreiranih funkcija (m-fajlova) objedinjenih u jednu celinu pred-
stavlja osnovnu strukturu toolboxa. Toolboxovi naravno predstavljaju mnogo više
od kolekcije upotrebljivih fajlova, jer je u njima objedinjen trud velikih svetskih
istraživača u raznim područjima nauke.
R
U MATLAB u je moguće raditi na dva načina. Jedan je direktan, pri čemu se u
glavnom prozoru programa upisuju naredbe, a program odmah vraća rezultat. Ovaj
način je pogodan kada radimo jednostavne operacije bez ponavljanja.
R
Kod drugog načina, korisnik u tekstualnom editoru (MATLAB editor/debug-
ger) piše program koji se sastoji od redosleda naredbi i kopira ga kao m-datoteku
R
(datoteka sa .m ekstenzijom). Kad u komandnom prozoru MATLAB a pozovemo
ime te datoteke, pokreće se izvršenje programa tj. izvršenje redosleda naredbi
kopiranih u datoteci.
R
MATLAB je otvoren sistem u kome korisnik može da gradi svoje alate i bib-
lioteke kao i modifikaciju postojećih, jer su dostupni u izvornom kodu.
39
40 GLAVA 3. OSNOVE MATLAB-A
Kada se program pokrene, prikazuje se prozor koji najčešće sadrži tri manja
prozora - komandni prozor (Command Window), prozor tekućeg direktorijuma
(Current Directory) i prozor s prethodnim komandama (Command History). To
R
je standardan izgled MATLAB a, u kome, sem navedenih, postoji još pet prozora
R
o kojime će biti reči kasnije. MATLAB ovim alatkama i svojstvima se pristupa
pomoću dugmeta Start u donjem levom uglu velikog prozora.
R
Rad u MATLAB u se odvija preko radnog prozora. Radni prozor služi za
unos naredbi, ispisivanje rezultata i najvažniji je deo korisničkog interfejsa. Radni
R
prostor možemo zamisliti kao deo radne memorije dodeljen MATLAB u prilikom
pokretanja, koji sadrži korisnikove promenljive. Moglo bi se reći da se kroz radni
prozor “gleda” u radni prostor.
R
Svi podaci u MATLAB u tretiraju se kao matrice čije dimenzije ne treba čuvati
kao posebne promenljive. Čak i skalrne veličine predstavljaju se kao matrice sa
dimenzijom 1 × 1. Matrice čija je jedna dimenzija 1 su vektori. Svi podaci su in-
terno zapisani u memoriju računara u double float obliku (pokretna tačka dvostruke
preciznosti-64 bita) što omogućava veliki dinamički opseg i tačnost za veliki broj
primena. Pored realnih brojeva i matrica, podržani su i kompleksni brojevi.
R
Po svojoj formi MATLAB je interaktivni jezik - interpreter, namenjen ma-
tričim izračunavanjima. Po svojoj formi blizak je načinu na koji i inače zapisu-
R
jemo matematičke formule, pa jedan red u MATLAB u može zameniti stotine re-
dova napisanih u nekom programskom jeziku opšte namene (C++, PASCAL, FOR-
TRAN isl.).
Korisnički interfejs čine sledeći prozori:
R
MATLAB sadrži vrlo iscrpni sistem pomoći, a nalazi se pod padajućim meni-
R
jem Help − > Product Help. Na ovaj način se otvara MATLAB prozor Help gde
se dvostrukim klikom miša bira opcija ili naredba koja nas interesuje. Osim toga,
pomoć je dostupna u komandnom prozoru. Na primer: help sqrt daje sledeću
povratnu informaciju.
Ali, na upit
>> help skola
• Interaktivno,
• Programski.
R
MATLAB koristi sledeće elementarne operacije i funkcije: aritmetičke, logičke i
operacije izmene podataka te matematičke i grafičke funkcije. One se izvode na
objektima odred-enog tipa podataka, a to su matrice. One mogu sadržati realne i
kompleksne brojeve kao i ASCII znakove. Funkcije koriste promenljive koje se
trenutno nalaze u radnom prostoru, ili kreiraju nove promenljive. Po izvršenju
funkcije sve varijable ostaju u radnom prostoru i mogu se analizirati, crtati, te dalje
koristiti.
R
MATLAB može poslužiti kao vrhunski linijski kalkulator.
>> 4*25+3
ans =
103
Kada se u komandni prozor upiše matematički izraz, a zatim pritisne taster
R
< Enter >, MATLAB će izračunati izraz, napisati ans= i prikazati numerički
rezultat u sledećem redu. To je prikazano u prdhodnom primeru.
R
U radnom prostoru MATLAB a možemo definisati promenljive:
>> a=4
a =
4
>> b=25;
>> c=3;
3.3. OPERATORI 43
>> d=a*b+c;
>> d
d =
103
R
Imena promenljivih u MATLAB mogu imati 63 znaka, mogu sadržati slova,
cifre i podvlake, i moraju počinjati slovom. MATLAB pravi razliku izmed-u malih
R
i velikih slova.
R
Za eksponencijalni zapis broja MATLAB koristi malo slovo e, koje označava
10 na stepen; 5e-3=0.0050.
3.3 Operatori
R
U MATLAB izrazima se koriste svima dobro poznati aritmetički operatori i pravila
za redosled izvršavanja.
+ Sabiranje
− Oduzimanje
∗ Množenje
/ Desno deljenje (a/b znači a : b)
\ Levo deljenje a\b znači b : a)
ˆ Stepenovanje
′ Transponovanje
( ) Zadavanje redosleda izvršavanja matematičkih operacija
Kada jedan red kôda sadrži više od jednog od ovih operatora redosled
izračunavanja se obavlja prema sledećem prioritetu:
Propritet Operacija
1 Zagrade
2 Stepenovanje, sleva nadesno
3 Množenje deljenje, sleva nadesno
4 Sabiranje i oduzimanje, sleva nadesno
U izrazu koji sadrži više operacija, operacije višeg prioriteta izvršavaju se pre
operacija nižeg prioriteta. Ako dve ili više operacija imaju isti prioritet, izraz se
izračunava sleva na desno. Redosled izračunavanja može se promeniti zagradama.
Levo od operatora može biti samo jedno ime promenljive. Desno može biti
broj ili izraz koji sadrži brojeve i/ili promenljive kojima su prethodno dodeljene
numeričke vrednosti. Kada se pritisne taster < Enter >, numerička vrednost sa
R
desne strane dodeljuje se promenljivoj, a MATLAB u sledeća dva reda prikazuje
promenljivu i njoj dodeljenu vrednost.
>> x=15
x =
15
>> x=3*x-12
x =
33
Poslednji iskaz x=3x-12 ilustruje razliku izmed-u operatora dodele i znaka
jednakosti. Kada bi u tom iskazu znak = označavao jednakost, vrednost x bi bila 6
(kada se reši jednačina po x).
R
Ako se na kraj reda upiše tačka-zarez pa zatim pritisne < Enter >, MATLAB
neće prikazati promenljivu i njoj dodeljenu vrednost, ali će joj vrednost ipak do-
deliti i smestiti je u memoriju. Kada se upiše ime postojeće promenljive i pritisne
< Enter >, u sledeća dva reda prikazaće se ime i vrednost te promenljive.
>> a=12;
>> B=4;
>> c=a-B+40/a-B*10;
>> c
c =
-28.6667
U isti red se može upisati nekoliko dodeljenih vrednosti. Razdvajaju se zarez-
ima (posle zareza se može otkucati više razmaka). Kada se pritisne < Enter >,
vrednosti se dodeljuju sleva udesno, a promenljive i njima dodeljene vrednosti
prikazuju se u sledećim redovima. Ukoliko se umesto zareza otkuca tačka-zarez,
vrednost promenljive neće biti prikazana. Na primer, promenljivama a, B i C vred-
nosti se mogu dodeliti u istom redu.
>> a=12, B=4; C=-B+40-a/B*10
a =
12
C =
6
Postojećoj promenljivoj može se dodeliti nova vrednost. Na primer:
>> Ab=72;
>> Ab=9;
>> Ab
Ab =
9
3.3. OPERATORI 45
R
Imena promenljivih u MATLAB u mogu imati do 63 znaka, mogu sadržati
R
slova, cifre i podvlake, i moraju počinjati slovom. MATLAB pravi razliku
izmed-u velikih i malih slova, na primer, AA, Aa, aA i aa su imena četiri različite
promenljive.
Tekst iza % uzima se kao komentar.
Ako je jednačina predugačka napiše se “...” i pritisne <Enter>, a zatim se
nastavi pisanje u novom redu. Prekid izvod-enja programa se ostvaruje pritiskom
na taster <Ctrl> + c.
Treba izbegavati korišćnje imena rezervisanih reči, tj. nazive ugrad-enih
funkcija za promenljive (cos, sin, exp, sqrt itd.). Funkcija čije je ime upotre-
bljeno za definisanje promenljive, više se ne može koristiti.
Pojedine često korišćene promenljive automatski su definisane čim se
MATLAB pokrene. Med-u njima su:
R
ans Promenljiva kojoj se dodeljuje vrednost poslednjeg izraza koji nije dodeljen
nekoj drugoj promenljivoj. Ako korisnik ne dodeli vrednost izraza nekoj
R
promenljivoj, MATLAB ga automatski dodeljuje promenljivoj ans.
pi Broj π
R
eps Najmanja razlika izmedu dva broja koju MATLAB još uvek može da pre-
pozna. Jednaka je 2−52 , što je približno 2.2204e-0161 .
inf Označava beskonačno veliku vrednost (∞).
i Definisano kao imaginarna jedinica, što je: 0 + 1.0000i.
j Isto što i promenljiva i.
R
NaN Skraćno od Not-a-Number (nije broj). Upotrebljava se kada MATLAB ne
može da izračuna numeričku vrednost. Na primer, rezultat operacije 0/0.
jednaki jedinici.
3.4. MATRIČNA IZRAČUNAVANJA 47
Množenje matrica je mnogo složenije nego aritmetičko množenje, zato što svaka
matrica može da sadrži veliki broj elemenata. Podsetimo se da je kod množenja
vektora postojanje niza elemenata u vektoru dovelo do dva koncepta množenja,
skalarnog i vektorskog proizvoda. Množenje matrica takod-e ima niz svojih speci-
jalnih pravila.
Pod proizvodom matrice A i broja k podrazumevamo matricu sa oznakom kA
ili Ak, čiji se elementi dobijaju tako, što se svaki element matrice A pomnoži sa
skalarom k.
Kod množenja matrica, elementi proizvoda, matrica C, dve matrice A i B,
izračunavaju se po formuli: C(i,j)=A(i,k)*B(k,j)
Da bi se matrice mogle množiti broj kolona prve ili leve matrice A mora biti
jednak broju vrsta druge ili desne matrice B. Proizvod, matrica C, ima broj vrsta
koji je jednak broju vrsta prve (leve) matrice A, a broj kolona koji je jednak broju
kolona druge (desne) matrice B. Jasno je da ne mora biti A*B jednako B*A. Takod-e,
jasno je da A*B i B*A postoje samo kod kvadratnih matrica.
Zadajmo matrice:
3.4. MATRIČNA IZRAČUNAVANJA 49
3.5 Polinomi
R
Polinomi se u MATLAB u predstavljaju preko vektora koga čine koeficijenati, pri
ćemu se koeficijent uz najveći stepen nalazi na prvoj poziciji vektora, a slobodni
član na poslednjoj. Na primer, polinom x3 + 3x2 + 2x + 1 se predstavlja vektorom
[1, 3, 2, 1].
Polinomi se mogu direktno sabirati, odnosno oduzimati, pod pretpostavkom da
su vektori kojima su predstavljeni iste dimenzije (u slučaju da nisu, uvek je moguće
kraći vektor proširiti vodećim nulama do dimenzije većeg). Za množenje polinoma
može se koristiti funkcija conv. Slično, za deljenje dva polinoma, moguće je
koristiti funkciju deconv, koja vraća količnik i ostatak pri deljenju. Naglasimo,
da se za dodavanje broja a polinomu p ne sme koristiti konstrukcija p = p +
a, jer podsetimo se, ovo dodaje broj a svakom koeficijentu polinoma p. Umesto
ovoga, potrebno je koristiti p(end) = p(end) + a.
R
3.6. PROGRAMIRANJE U MATLAB U 53
R
Za rad sa polinomima, MATLAB sadrži skup efikasnih funkcija.
R
MATLAB je programski jezik u kojem je moguće napisati sopstvene programske
delove. Pomoću ugrad-enih funkcija i programskih paketa moguće je pisati nove
R
programe. Svaki skup MATLAB naredbi napisan korišćenjem tekst editora koji je
R
zapamćen u datoteci sa nastavkom-m predstavlja jedan MATLAB program.
Postoje dve vrste m datoteka: skript datoteka (engl. script files) i funkcijska
datoteka (engl. function files). Glavna razlika je u prihvatanju promenljivih.
R
R
MATLAB ove funkcije se sastoje od kombinacije MATLAB ovih različitih
funkcija, povezanih tako da kao celina obavljaju predvid-eni zadatak. Funkcijske
datoteke mogu prihvatiti ulazne argumente i vratiti izlazne. Skriptne datoteke ne
uzimaju ulazne argumente ali vraćaju izlazne. Skriptne datoteke sadrže niz ko-
mandi koje se uobičajeno unose u komadnu liniju. Jednostavno zamjenjuju unos iz
komadne linije. Na taj način izbegava se ponavljanje unosa naredbi pri složenijim
proračunima.
R
Postoji i drugačiji (bolji) način izvršavanja komandi u MATLAB u komande
(program) najpre se upišu u zasebnu datoteku, zapamti se, a zatim pokrene (izvrši).
Kada se pokrene takva datoteka, njene komande se izvršavaju redom kojim su
navedene. Ako treba, može se izmeniti ili ispraviti komanda u datoteci, zapamti
se i ponovo pokrene. Takvu datoteku nazivamo skript datoteka (engl. script
R
file). Svi MATLAB programi su tekstualne datoteke a najjednostavnije ih je pisati
-
korišćenjem ugrad enog editora koji se poziva komandom edit.
Na primer, u komandnom prozoru se otkuca komanda edit i nakon pritiska
R
tastera < Enter > otvara se editor u kome se ispisuju MATLAB komande. Na
primer upišimo sledeće komande
sin(pi/2)+cos(pi)*tan(3*pi/4)
R
a zatim ih zapamtimo pod imenom proba, MATLAB će dodati nastavak m. Ako u
komandnom prozoru orkucamo proba kao izlaz dobićemo 2, što je tačna vrednost
navedenog izraza.
Razni programski jezici nude mnoštvo struktura koje omogućuju kontrolu toka
R
programa. MATLAB nudi tri vrste ovakvih petlji:
• For petlja
• While petlja
• If-else-end struktura
• Switch-case struktura.
Zbog njihovog čestog koriščenja one se smeštaju u m fajlove, jer je na taj način
izbegnuta potreba za stalnim ponovnim unošenjem ovih struktura.
For petlja. Ovaj tip petlji omogućuje da se neka grupa naredbi izvrši unapred
definisan broj puta. for petlja se završava naredbom end. Sintaksa ove petlje je
sledeća:
for x=a:korak:b,
blok naredbi
end
R
Na primer, MATLAB skript za generisanje vektora korišćenjem funkcije sin
i petlje for.
>> for n=1:10,
x(n)=sin(n*pi/10);
end
3.7. SKRIPT DATOTEKE 55
>> x
x =
Columns 1 through 5
0.3090 0.5878 0.8090 0.9511 1.0000
Columns 6 through 10
0.9511 0.8090 0.5878 0.3090 0.0000
For petlje treba izbegavati kad god je do rešenja moguće doći korišćenjem vek-
torizovanog pristupa. Oba pristupa vode istom rešenju, ali je drugi brži i zahteva
često manje kucanja po tastaturi. Na primer, faktorijel broja 10 može se izračunati
ovako
>>p=1;
>>for i=1:10,
p=p*i
end
>>p
p=
3628800
Faktorijel 10 mnogo brže se izračunava preko p=prod(1:10). U ovom
slučaju kôd je napisan u programskom jeziku C i radi mnogo brže. Postupak elim-
inacije petlji poznat je pod imenom vektorizacija.
R
Primer 3.1. Napisati MATLAB skript za izračunavanje funkcije:
x1 + x2 ,
za x1 < x2 ,
y = x1 x2 , za x1 = x2 ,
x1 − x2 , za x1 > x2 .
3.7. SKRIPT DATOTEKE 57
R
MATLAB skript.
disp(’Unesite x1 i x2’);
x1=input(’x1=’); x2=input(’x2=’);
if x1 < x2,
y=x1+x2
elseif x1 == x2,
y=x1*x2
else
y=x1-x2
end
R
Primer 3.2. Napisati MATLAB skript za izračunavanje funkcije:
x1 + x2 ,
za k = 1,
y = x1 x2 , za k = 2,
x1 − x2 , za k = 3.
R
MATLAB skript:
disp(’Unesite x1, x2 i k’);
x1=input(’x1=’);
x2=input(’x2=’);
k=input(’k=’);
switch k
case 1
y=x1+x2
case 2
y=x1*x2
case 3
y=x1-x2
otherwise
DISP(’Pogresno uneta vrednost za k’)
end
Primer 3.3. U sledećem primeru jedan slučajni celi broj x iz grupe brojeva
{1, 2, . . . , 10} je generisan. Ako je x = 1 ili x = 2, tada se poruka Verovatnoća=20%
prikazuje na ekranu. Ako je x = 3 ili 4 ili 5, onda se prikazuje poruka
Verovatnoća=30% , inače se generiše poruka Verovatnoća=50%. Sledeći skript
fajl koristi switch kao alat za upravljnje tokom programa.
x=ceil(10*rand)
switch x
case {1,2}
disp(’Verovatnoca=20%’)
case {3,4,5}
disp(’Verovatnoca=30%’)
otherwise
disp(’Verovatnoca=50%’)
end
Treba obratiti pažnju na upotrebu vitičastih zagrada iza reči case. To stvara
tzv. polje niza bolje nego jednodimenzionalno polje, koje zahtjeva upotrebu
R
uglatih zagrada. MATLAB komandom rand generiše se ravnomerno raspode-
R
ljen slučajni broj u intervalu [0, 1]. MATLAB komandom ceil zokružuje se taj
broj na prvu veću celobrojnu vrednost.
R
3.8. EFIKASNOST IZVRŠAVANJA PROGRAMA U MATLAB U 59
R
MATLAB pripada grupi interpreterskih programskih jezika. Kada se naredba uno-
si kucanjem u komandnom prozoru, ona se prvo interpretira a zatim izvršava. Ako
se radi o programu, onda se naredbe redom učitavaju, interpretiraju i izvršavaju.
Ukoliko u programu postoje petlje, svaka instrukcija u petlji se u svakom pro-
lazu učitava, interpretira i izvršava. U slučaju kada se radi sa velikim količinama
podataka, kakav je slučaj u obradi govora ili slike, to može ozbiljno povećati
vreme izvršenja programa. Stoga je od interesa razmotriti mehanizme za procenu
složenosti programa i načine za popravljanje efikasnosti programa.
tic;
for t=1:1000000,
y=sin(2*pi*t/10);
end;
toc
Elapsed time is 0.080880 seconds.
Brže izvršenje komandi se može postići potpunim izbegavanjem izračunavanja
u petlji - vektorizacijom.
tic;
t=1:1000000,
y=sin(2*pi*t/10);
toc
Elapsed time is 0.020582 seconds.
−0.5
−1
0 2 4 6 8
Vrednost promenljive x
0.5
0.4
0.3
0.2
0.1
−0.1
−0.2
−0.3
−0.4
−0.5
−6 −4 −2 0 2 4 6 8
2
Sl. 3.2: Grafik funkcije y = xe−x nacrtan u 500 tačaka.
62 GLAVA 3. OSNOVE MATLAB-A
Pored vektora x i y komanda plot sadrži podatak da je grafik crvene boje (’r’)
i da je debljina linije (’LineWidth’) dva pointa.
daje
>>ans=
4609/2520
Rezultat, naravno, može da se dodeli nekoj promenljivoj. Na primer, neka je to
promenljiva x.
x=sin(pi/4)+cos(po/3);
Ako u komandnoj liniji otkucamo x dobićemo vrednost promenljive x.
>>x=
1.2071
R
MATLAB sadrži komandu za rad sa brojevima proizvoljne preciznosti (engl
variable precision arithmetic). Ovo se postiže komandom vpa. Na primer, broj π
se može izračunati na 50 cifara korišćenjem komande vpa.
>>vpa(pi,50)
>>ans=
3.141592653589793115997963468544185161590576171875
Rezultat je simbolička promenljiva. Ukoliko želimo da koristimo ovaj rezul-
R
tat u MATLAB izrazima koji zahtevaju dvostruku preciznost u fomatu pokretne
tačke, tip promenljive se menja komandom double(x), gde je x simbolička
promenljiva.
>>syms a b c d
>>ans=
[ d/(a*d - b*c), -b/(a*d - b*c)]
[ -c/(a*d - b*c), a/(a*d - b*c)]
>> vpa(ans,4)
ans =
0.562
-3.562
sin(x + y) − ex−y =0
cos(x + 6) − x2 y2 =0
>>syms x omega t
>>y=2*sin(x)*cos(omega*t);
>>diff(y,’x’)
ans=
2*cos(omega*t)*cos(x)
Drugi izvod funkcije y u odnosu na argument t iznosi
>>diff(y,’t’,2)
ans=
(-2)*omegaˆ2*cos(omega*t)*sin(x)
Za integraljenje koristi se komanda int. Kao opcioni argumenti mogu se za-
dati promenjiva po kojoj se vrši integraljenje, kao i interval integracije u slučaju
kada se izračunava odred-eni integral. Granice mogu biti brojevi ili simbolički ob-
jekti. Za izračunavanje integrala
Z x
sin2 tdt (3.1)
0
postupak je sledeći
>>int(’sin(t)ˆ2’,0,x)
ans=
-1/2*cos(x)*sin(x)+1/2*x
Izračunavanje numeričke vrednost odred-enog integrala
Z 2
x cos(x)d x
1
>>int(’x*cos(x)’,1,2)
ans=
cos(2) - cos(1) - sin(1) + 2*sin(2)
Komanda eval može se koristiti za izračunavanje numeričke vrednosti odred-enog
integrala.
>>eval(ans)
ans=
0.0207
Integral (3.1) može se izračunati tako što se najpre izračuna njegova simbolička
vrednost, a zatim se izvrši smena granica integrala uz korišćenje komande subs
>>syms a b x
>>F=int(’x*cos(x)’,a,b);
>>subs(F,{a,b},[1,2])
ans=
0,0207
3.13. CRTANJE SIMBOLIČKIH FUNKCIJA 71
x+2
f (x) =
x2 + x
u intervalu [−3, 3]. Grafik funkcije prikazan je na Slici 3.3. Upotrebljene su sledeće
R
MATLAB komande:
>>h=ezplot(’(x+2)/(xˆ2+x)’,[-3,3])
>>set(h,’LineWidth’,2)
>>set(gca,’FontSize’,15)
>>xlabel(’x’,’FontSize’,16)
>>ylabel(’y’,’FontSize’,16)
>>title(’(x+2)/(xˆ2+x)’,’FontSize’,17); grid on
72 GLAVA 3. OSNOVE MATLAB-A
(x+2)/(x2+x)
10
0
y
−5
−10
−15
−3 −2 −1 0 1 2 3
x
x+2
Sl. 3.3: Grafik funkcije .
x2 + x
x2 + y2 − 1 = 0
x2+y2−1 = 0
0.8
0.6
0.4
0.2
0
y
−0.2
−0.4
−0.6
−0.8
−1
x =t,
y =t cos(t),
y =t sin(t).
R
MATLAB kôd
h=ezplot3(’t’,’t*cos(t)’,’t*sin(t)’,[0,30]);
set(h,’LineWidth’,2)
set(gca,’FontSize’,15)
xlabel(’x’,’FontSize’,16)
ylabel(’y’,’FontSize’,16)
zlabel(’z’,’FontSize’,16)
title(’x=t, y=tcos(t), y=tsin(t)’,’FontSize’,17)
axis square
74 GLAVA 3. OSNOVE MATLAB-A
30
20
10
0
z
−10
−20
−30
40
20 30
0 20
−20 10
y −40 0
x
(a) A=G(:,2),
(b) B=G(4,:),
(c) C=G(10:15),
(d) D=G(4:9,1:6),
(e) E=G(4:5,1:3)
(f) F=G(1:2:5,:).
5. Kreirati matricu A, dimenzija 3×3 čiji svi elementi imaju vrednost 1. Uraditi
zadatak bez eksplicitnog unošenja vrednosti svakog elementa. Kretirati ma-
tricu B = [1 2 3; 4 5 6; 7 8 9]. Izračunati matrične proizvode
A*B i B*A, i proizvode po elementima A.*B B.*A. Objasniti razlike u
rezultatima.
3x + 3y + z = 23
2x + 6y + 8z = 18
x + 2y + 10z = 14
76 GLAVA 3. OSNOVE MATLAB-A
8. Izračunati determinantu
1 2 3
4 −5 6
7 8 9
>> A(1:2,:)=zeros(2,5);
>> A(3:4,:)=ones(2,5);
>> A=zeros(6);
>> A(3:4,:)=ones(2,6);
>> A(:,3:4)=ones(6,2);
(a) X1=diag(A);
(b) X2=diag(diag(A));
x2 + y2 − 1 = 0
0.75x3 + 0.9 = 0
17. Odrediti:
18. Za matricu
a 1 0
A = 0 a 1
0 0 a
21. Broj 345672 napisati kao proizvod prostih brojeva. Koristiti komandu
factor.
78 GLAVA 3. OSNOVE MATLAB-A
25. Neka je
1 1 1
an = + +···+
2 3 n
Rešiti nejednačinu an < 0.8 (po n) koristeći komandu while.
x = sint
y = cost
z =t
81
82 LITERATURA
[18] M. S TOJ ČEV. Računarske mreže i prenos podataka. Elektrinski fakultet u Nišu,
Niš, 2005.
[19] M. S TOJ ČEV I B. P ETROVI Ć. Arhitekture i programiranje mikroračunarskih sistema
zasnovanih na familiji procesora 80x86. Elektrinski fakultet u Nišu, Niš, 1999.
[20] N. BALABAN I DR . Principi Informatike. Savremena administracija, Beograd,
1996.
[21] N. M ILENKOVI Ć. Arhitektura i organizacija računara. Elektronski fakultet, Niš,
2004.
[22] R. C ONLON AND L. J ONSON. The Land-Grant Training Alliamce
- On Line PowerPoint2000 Lesson, 2004. http://www.lgta.org/
ppt2000.contents.htm.
[23] R. J OVANOVI Ć , Ž. T OSHI Ć I M. S TANKOVI Ć. Informatika za ekonomiste. Ekonom-
ski fakultet, Univerzitet u Nišu, 1999.
[24] R. P ERLMAN. Interconnections - bridges, routers, switches and interworking, sec