Univerzitet u Beogradu Maxinski fakultet. Matlab i Simulink. u automatskom upravljanju. Radixa Ж. Jovanovi. Beograd, 2016.

Seotud dokumendid
my_lauluema

Funktsionaalne Programmeerimine

PHP

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

12. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Algfunktsioon ja määramata integraal Sisukord 12 Algfunktsioon ja määramata integraal 1

ACU ACU ACU ACU ACU ACU ACU ACU ACU ACU ACU ACU ACU ACU ACU

Relatsiooniline andmebaaside teooria II. 6. Loeng

untitled

untitled

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

KUULA & KORDA INGLISE KEEL 1

Pealkiri

(loeng3-ohtlikud_koodiloigud)

loeng2

MTAT Operatsioonisüsteemid - Turvalisus

untitled

Microsoft Word - Referaat.docx

untitled

Komisjoni teatis dumpinguvastaste tollimaksude tagasimaksmise kohta

Miksikese_e_tanukiri_2017_sugissprint_klassid_2

Scala ülevaade 1 Meetodid, muutujad ja väärtused. Süntaks 2 Lihtsad tüübid ja väärtused. 3 OOP, case-klassid ja mustrisobitus. 4 Puhta Scala väärtusta

IMO 2000 Eesti võistkonna valikvõistlus Tartus, aprillil a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a 2, a 3,

untitled

untitled

MTAT Operatsioonisüsteemid - Turvalisus

ISS0010_5osa_2018

Print\A4\RaceLandscape.pmt

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo

AWK Aho Weinberger Kernighan struktuurse teksti töötlemise keel rikkalikult tekstitöötlusvahendeid omal alal suhteliselt lihtne ja kiiresti realiseeri

Print\A4\LMergeQualify.PMT

untitled

(Tõrked ja töökindlus \(2\))

1. AKE Ajalise keerukuse empiiriline hindamine

Microsoft Word - Praks1.doc

untitled

untitled

Andmed arvuti mälus Bitid ja baidid

Matemaatilised meetodid loodusteadustes. I Kontrolltöö I järeltöö I variant 1. On antud neli vektorit: a = (2; 1; 0), b = ( 2; 1; 2), c = (1; 0; 2), d

untitled

SK-3MD

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

D1003_EXTERIOR_DOOR_UK_SE_NO_DK_FI_EE_LV_LT_RU_02_WEB

untitled

PowerPointi esitlus

Outlookist dokumendi registreerimine Plugina seadistamine Dokumendi registreerimine Outlookist Vastusdokumendi registreerimine Outlookist Outlooki plu

untitled

X Window System tuntud kui: X11 X X-Windows akendussüsteem/akendesüsteem rastergraafikat toetavatele ekraanidele UNIX-maailmas väga levinud mitmesugus

Targocid Art 30 - CHMP Opinion

Microsoft Word - polkaudio 2010 hinnakiri

E-õppe tehnoloogiad kõrgkoolis E-learning Technologies in Higher Education MTAT

Microsoft PowerPoint - K ja Kr L 16a.pptx

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

untitled

Funktsionaalne Programmeerimine

Programmeerimiskeel APL Raivo Laanemets 17. mai a.

Väljaandja: Keskkonnaminister Akti liik: määrus Teksti liik: terviktekst Redaktsiooni jõustumise kp: Redaktsiooni kehtivuse lõpp:

Kokku Nimi jrk Võistkond Punkte AVK Punkte AVK Punkte AVK Punkte AVK Punkte AVK Punkte AVK Punkte AVK Punkte AVK Punkte AVK Punkt

Põhiekraani mõistmine Põhiekraanil kuvatakse sonari andmed, mida on tõlgendanud Deeperi rakenduses. Ekraani ülaosa vastab teie Deeperi lähimale osale.

Sügis 2018 Kõrgema matemaatika 2. kontrolltöö tagasiside Üle 20 punkti kogus tervelt viis üliõpilast: Robert Johannes Sarap, Enely Ernits, August Luur

Esitluspäev Eesti Taimekasvatuse Instituudis 10. juuli 2018 Talirukki sordi ja aretiste tavaviljeluse võrdluskatse 2018 (10 katsevarianti) Asukoht: Võ

Asendab akusid: Sobib mudelitele: COMPAQ COMPAQ COMPAQ Presario A Presario C700EM HSTNN-DB42 Presario C700ET Presa

Manual PC 9 D,GB,F

untitled

untitled

Sissejuhatus Informaatikasse Margus Niitsoo

Microsoft PowerPoint - Tartu_seminar_2008_1 [Read-Only]

Conseil UE Euroopa Liidu Nõukogu Brüssel, 30. november 2016 (OR. en) 14723/16 PROTOKOLLI KAVAND 1 Teema: LIMITE PUBLIC PV/CONS 61 EDUC 391 JEUN 103 CU

Euroopa Liidu Nõukogu Brüssel, 20. juuli 2015 (OR. en) 10173/15 ADD 1 PV/CONS 36 ECOFIN 531 PROTOKOLLI KAVAND Teema: Euroopa Liidu Nõukogu istun

untitled

Microsoft PowerPoint - Loeng2www.ppt [Compatibility Mode]

MATEMAATILINE ANALÜÜS I. ESIMESE KONTROLLTÖÖ NÄITEÜLESANDED (1) Leida funktsiooni y = sin x + ln(16 x 2 ) määramispiirkond. (2) Leida funktsiooni y =

Slide 1

Pealkiri

untitled

Image segmentation

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et

D1003_EXTERIOR_DOOR_UK_SE_NO_DK_FI_EE_LV_LT_RU_02_NEUTRAL_WEB

Statistiline andmetöötlus 1997

untitled

AJAKAVA Reede, 6. märts :00 Üleriigilise vokaalansamblite konkursi avamine 13:30 Lõunasöök 14:30 I kontsert IV V kl 1 Erahuvialakool Meero Muus

Väljavõte:

Univerzitet u Beogradu Maxinski fakultet Matlab i Simulink u automatskom upravljanju Radixa Ж. Jovanovi Beograd, 2016.

Dr Radixa Ж. Jovanovi, dipl. inж. max., docent Univerzitet u Beogradu, Maxinski fakultet Matlab i Simulink u automatskom upravljanju I izdanje Recenzenti: Prof. dr Zoran Ribar, Univerzitet u Beogradu, Maxinski fakultet Prof. dr Zoran Buqevac, Univerzitet u Beogradu, Maxinski fakultet Izdavaq: Maxinski fakultet Univerziteta u Beogradu ul. Kraljice Marije 16, 11120, Beograd 35 tel. (011) 3302-384 faks (011) 3370-364 Za izdavaqa: Prof. dr Radivoje Mitrovi, dekan Glavni i odgovorni urednik: Prof. dr Milan Leqi Odobreno za xtampu odlukom dekana Maxinskog fakulteta u Beogradu br. 3/16 od 12.04.2016. godine Dizajn korica: Mina Mihailovi Tiraж: 300 primeraka Xtampa: PLANETA PRINT ISBN 978-86-7083-896-3 Sva prava zadrжavaju izdavaq i autor. Zabranjeno prextampavanje i umnoжavanje.

Sadrжaj I UVOD U MATLAB 1 1 Uvod u Matlab................................... 3 1.1 Radno okruжenje Matlaba 3 1.1.1 Komandni prozor..................................... 4 1.1.2 Prozor s prethodnim naredbama........................ 5 1.1.3 Radni prostor Matlaba............................... 5 1.1.4 Prozor radnog direktorijuma.......................... 5 1.1.5 Korisne naredbe za rad u komandnom prozoru............. 5 1.1.6 Editor m-datoteka................................... 6 2 Promenljive i tipovi podataka................. 7 2.1 Promenljive 7 2.1.1 Operator dodele..................................... 7 2.1.2 Izrazi i operatori................................. 10 2.1.3 Podrazumevane promenljive i rezervisane reqi........... 10 2.2 Numeriqki tipovi podataka 11 2.2.1 Celobrojni tipovi.................................. 11 2.2.2 Brojevi u pokretnom zarezu........................... 12 2.2.3 Kompleksni brojevi................................. 13 2.3 Logiqki tip podataka 13 2.4 Znakovni tip podatka 14

ii 3 Nizovi i operacije nad nizovima.............. 15 3.1 Vrste nizova 15 3.2 Matrice i vektori 16 3.2.1 Pojam i vrste matrica............................... 16 3.2.2 Kreiranje vektora................................... 17 3.2.3 Kreiranje matrica.................................. 19 3.2.4 Specijalne matrice................................. 20 3.2.5 Transponovana matrica.............................. 22 3.2.6 Inverzna matrica................................... 23 3.2.7 Determinanta...................................... 23 3.2.8 Operacije nad matricama............................ 24 3.2.9 Matriqno mnoжenje.................................. 25 3.2.10 Stepenovanje matrica................................ 27 3.2.11 Pristup elementima vektora i matrica................. 28 3.2.12 Elementne operacije nad vektorima i matricama......... 30 3.2.13 Funkcije za analizu nizova........................... 33 3.2.14 Funkcija meshgrid()................................ 34 3.2.15 Vektori i matrice kao argumenti funkcija.............. 35 3.2.16 Promena tipa matrice............................... 36 3.3 Nizovi karaktera 39 3.3.1 Spajanje stringova.................................. 42 3.3.2 Kreiranje i podexavanje stringova..................... 43 3.3.3 Komparacija stringova.............................. 44 3.3.4 Konverzija između stringova i drugih tipova podataka.... 45 3.4 Nizovi elija 45 4 Programiranje u Matlabu...................... 49 4.1 Algoritmi 49 4.2 Matlab skript 50 4.2.1 Dokumentovanje..................................... 51 4.3 Ulaz i izlaz 52 4.3.1 Ulazne funkcije.................................... 53 4.3.2 Izlazne funkcije................................... 54 4.3.3 Funkcija disp()..................................... 55 4.3.4 Funkcija fprintf()................................... 55 4.4 Skript sa ulazom i izlazom 58 4.4.1 Snimanje podataka u datoteku......................... 59 4.4.2 Dodavanje podataka u datoteku........................ 59 4.4.3 Uqitavanje podataka iz datoteke....................... 60

iii 4.5 Funkcije 60 4.5.1 Kreiranje funkcijske datoteke........................ 61 4.5.2 Radni prostor funkcije.............................. 64 4.5.3 Lokalne promenljive................................ 64 4.5.4 Globalne promenljive................................ 65 4.5.5 Perzistentne promenljive............................ 66 4.5.6 Podfunkcije....................................... 67 4.5.7 Ugneжdene funkcije................................. 68 4.5.8 Anonimne funkcije.................................. 70 4.5.9 Primena pokazivaqa funkcija......................... 72 4.5.10 Funkcije sa funkcijama kao argumentima................ 72 5 Simboliqka matematika........................ 73 5.1 Simboliqke promenljive i izrazi 73 5.1.1 Rad sa simboliqkim izrazima......................... 74 5.1.2 Prikazivanje izraza................................. 76 5.1.3 Rexavanje algebarskih jednaqina...................... 76 5.1.4 Simboliqka matematiqka analiza...................... 78 5.2 Rexavanje diferencijalnih jednaqina 79 5.2.1 Rexavanje skalarne diferencijalne jednaqine............ 80 5.2.2 Rexavanje sistema diferencijalnih jednaqina........... 81 5.2.3 Definisanje poqetnih i graniqnih uslova............... 81 5.2.4 Rexavanje nelinearnih diferencijalnih jednaqina........ 82 6 Operatori i kontrola toka programa.......... 85 6.1 Relacioni operatori 85 6.2 Logiqki operatori 87 6.3 Uslovno grananje 89 6.3.1 If uslov........................................... 89 6.3.2 Switch struktura................................... 91 6.4 Petlje 92 6.4.1 For petlja......................................... 93 6.4.2 Vixestruke petlje................................... 95 6.4.3 Kombinacija vixestrukih for petlji i if naredbi......... 96 6.4.4 Petlja while....................................... 97 6.4.5 While petlja sa ulaznom funkcijom..................... 98 6.4.6 Brojaq u while petlji................................ 99 6.4.7 Provera grexke sa ulaznom funkcijom u while petlji...... 99 6.4.8 Naredbe break i continue............................ 100 6.4.9 Izbegavanje petlji, vektorizacija i prealokacija......... 101

iv 7 2-D grafika.................................... 105 7.1 Funkcija plot() 105 7.1.1 Grafik eksperimentalnih podataka.................... 105 7.1.2 Grafik funkcije.................................... 106 7.1.3 Argumenti funkcije plot()............................ 106 7.1.4 Crtanje vixe grafika................................ 107 7.1.5 Vixe grafika u jednom grafiqkom prozoru.............. 107 7.2 Formatiranje grafika 109 7.2.1 Naslov, natpisi, mreжa.............................. 109 7.2.2 Linije, boje, markeri................................ 109 7.2.3 Podgrafici........................................ 111 7.2.4 Grafici sa logaritamskom podelom osa................. 111 7.2.5 Pristup parametrima grafika........................ 114 II NUMERIQKE METODE U MATLABU 115 8 Sistemi linearnih jednaqina................. 117 8.1 Osnovni pojmovi i broj rexenja 117 8.2 Rexavanje sistema linearnih jednaqina 119 8.2.1 Sistem jednaqina sa m = n........................... 120 8.2.2 Sistemi linearnih jednaqina: sluqaj m > n............. 121 8.2.3 Sistemi linearnih jednaqina: sluqaj m < n............. 122 8.3 Sopstvena vrednost i sopstveni vektor matrice 123 8.3.1 Sopstvene vrednosti i sopstvene matrice u Matlabu...... 125 9 Aproksimacija i interpolacija............... 129 9.1 Opxti problem aproksimacije 129 9.2 Interpolacija 130 9.3 Interpolacija polinomima 131 9.4 Interpolacija polinomima po delovima 132 9.4.1 Linearni splajn.................................... 132 9.4.2 Kubni splajn....................................... 133 9.4.3 Funkcije za interpolaciju u Matlabu.................. 134 9.5 Metoda najmanjih kvadrata 136 9.5.1 Linearni model najmanjih kvadrata.................... 137 9.5.2 Metoda najmanjih kvadrata u Matlabu.................. 137

v 10 Nelinearne algebarske jednaqine............. 139 10.1 Nelinearna jednaqina jedne promenljive 139 10.1.1 Rexavanje nelinearnih jednaqina u Matlabu............. 140 10.1.2 Funkcija fzero() i jednaqina sa vixe korenova........... 142 10.1.3 Taqke prekida i funkcija fzero()...................... 143 10.1.4 Nule polinoma i funkcija roots()..................... 144 10.2 Optimizacija funkcije jedne promenljive 145 11 Numeriqko diferenciranje i integraljenje... 147 11.1 Numeriqko diferenciranje 147 11.1.1 Aproksimacija prvog izvoda.......................... 148 11.1.2 Aproksimacija drugog izvoda......................... 150 11.1.3 Matlab funkcije za numeriqko diferenciranje........... 150 11.2 Numeriqko integraljenje 153 11.2.1 Trapezno pravilo................................... 154 11.2.2 Matlab funkcija trapz()............................. 155 11.2.3 Simpsonova metoda.................................. 156 11.2.4 Matlab funkcije quad() i integral()................... 157 12 Numeriqko rexavanje obiqnih diferencijalnih jednaqina...................................... 159 12.1 Pojam diferencijalne jednaqine 159 12.2 Koxijev problem 160 12.3 Jednokoraqne metode 161 12.3.1 Ojlerova metoda.................................... 162 12.3.2 Poboljxanje Ojlerove metode.......................... 163 12.3.3 Metode Runge Kuta.................................. 165 12.3.4 Lokalna grexka numeriqke metode..................... 167 12.3.5 Globalna grexka i stabilnost numeriqke metode......... 168 12.4 Vixekoraqne metode 168 12.4.1 Adams-Baxfortova metoda........................... 168 12.4.2 Adams-Moltonova metoda............................. 169 12.5 Adaptivne metode 170 12.6 Metode u Matlabu za numeriqko rexavanje 171 12.7 Funkcija ode..() u Matlabu 172

vi III UVOD U SIMULINK 179 13 Uvod u Simulink.............................. 181 13.1 Kako radi Simulink 182 13.2 Poqetak rada u Simulinku 183 13.2.1 Pokretanje Simulinka............................... 183 13.2.2 Kreiranje novog modela.............................. 183 13.2.3 Otvaranje postoje eg modela.......................... 183 13.3 Osnovni elementi Simulink modela 183 13.3.1 Blokovi........................................... 184 13.3.2 Linije............................................ 184 13.3.3 Kreiranje modela sistema............................ 184 13.3.4 Unoxenje blokova u model............................ 185 13.3.5 Modifikovanje blokova.............................. 185 13.3.6 Povezivanje blokova................................. 186 13.3.7 Pokretanje simulacije i parametri simulacije.......... 186 14 Osnovni blokovi............................... 187 14.1 Bibilioteka ulaza 187 14.1.1 Constant blok...................................... 187 14.1.2 Signal Generator blok............................... 187 14.1.3 Pulse Generator blok................................ 188 14.1.4 Step blok.......................................... 188 14.1.5 Ramp blok........................................ 189 14.1.6 Sine wave blok..................................... 189 14.1.7 Clock blok......................................... 190 14.1.8 Ground blok....................................... 190 14.2 Biblioteka izlaza 191 14.2.1 Display blok....................................... 191 14.2.2 Scope blok........................................ 191 14.2.3 Terminator blok.................................... 192 14.2.4 Stop simulation blok................................ 192 14.2.5 To Workspace blok................................. 192 14.2.6 To File blok....................................... 193 14.3 Biblioteka signala 193 14.3.1 Bus Creator i Bus Selector blok...................... 193 14.3.2 Mux i Demux blokovi.............................. 194 14.3.3 Switch blok........................................ 194 14.3.4 Prikaz signala u modelu............................. 195 14.3.5 Gain blok......................................... 195

vii 14.4 Matematiqka biblioteka 195 14.4.1 Sum, Add i Subtract blokovi......................... 195 14.4.2 Math Function blok................................. 196 14.4.3 Trigonometric Function blok......................... 197 14.5 Biblioteka blokova kontinualnih sistema 197 14.5.1 Integrator blok..................................... 197 14.6 Biblioteka blokova sa nelinearnostima 198 14.6.1 Saturation blok.................................... 198 14.6.2 Dead Zone blok.................................... 199 15 Simulacija dinamiqkih sistema.............. 201 15.1 Simulacija sistema prvog reda 201 15.1.1 Kreiranje Simulink modela sistema................... 201 15.1.2 Simulacija sistema za odskoqnu promenu ulaza.......... 202 15.1.3 Simulacija sistema za promenu ulaza u obliku pulsa....................................... 203 15.1.4 Simulacija sistema za nagibnu promenu ulaza........... 204 15.1.5 Simulacija sistema za nagibnu promenu ulaza sa zasi enjem 205 15.2 Simulacija sistema drugog reda 207 15.2.1 Kreiranje Simulink modela.......................... 207 15.3 Simulacija iz komandnog prozora 209 15.4 Podsistemi 211 15.5 Algebarske petlje 213 15.6 Numeriqki postupci u Simulinku 217 IV MATEMATIQKI MODELI DINAMIQKIH SISTEMA 219 16 Matematiqko modelovanje dinamiqkih sistema 221 16.1 Matematiqko modelovanje sistema 221 16.1.1 Primeri matematiqkog modelovanja sistema............. 222 16.2 Matematiqki modeli UI sistema 231 16.3 Matematiqki modeli USI sistema 231 16.4 Linearni stacionarni dinamiqki sistemi 232 16.4.1 Linearni stacionarni dinamiqki UI sistemi........... 232 16.4.2 Linearni stacionarni dinamiqki USI sistemi.......... 233 16.4.3 Izbor veliqina stanja............................... 233 16.5 Matematiqki modeli po odstupanjima 237

viii V LINEARNI SISTEMI 239 17 Laplasova transformacija.................... 241 17.1 Definicija Laplasove transformacije 241 17.2 Inverzna Laplasova transformacija 241 17.3 Osobine Laplasove transformacije 242 17.4 Laplasova transformacija u Matlabu 242 17.5 Hevisajdov razvoj 243 17.5.1 Funkcije sa jednostrukim polovima.................... 244 17.5.2 Funkcije sa vixestrukim polovima.................... 245 17.6 Hevisajdov razvoj u Matlabu 245 18 Predstavljanje linearnih sistema u Matlabu. 249 18.1 Prenosna funkcija i prenosna matrica 249 18.1.1 TF oblik prenosne funkcije.......................... 250 18.1.2 Zero-Pole-Gain oblik prenosne funkcije.................. 251 18.1.3 TF i ZPK oblici prenosnih matrica................... 252 18.1.4 Prenosna funkcija u Simulinku....................... 256 18.2 Model sistema u prostoru stanja 257 18.2.1 Model sistema u prostoru stanja u Simulinku........... 258 18.3 Pretvaranja između razliqitih modela 258 18.3.1 Pretvaranje u TF model.............................. 258 18.3.2 Pretvaranje u ZPK model............................. 262 18.3.3 Realizacija u prostoru stanja......................... 263 18.3.4 Dobijanje SS i TF modela iz Simulink modela........... 264 18.3.5 Dobijanje parametara iz LTI objekata................... 266 18.4 Blok dijagrami 267 18.4.1 Ekvivalentni blok dijagrami za osnovne sprege.......... 268 18.4.2 Sloжene sprege..................................... 270 19 Analiza linearnih sistema................... 279 19.1 Tipiqne promene ulaznih veliqina 279 19.1.1 Znaqaj i vrste tipiqnih promena ulaznih veliqina....... 279 19.1.2 Odskoqna funkcija.................................. 280 19.1.3 Jediniqna impulsna funkcija......................... 281 19.1.4 Nagibna funkcija................................... 283 19.1.5 Eksponencijalna funkcija............................ 283 19.1.6 Sinusna funkcija................................... 284

ix 19.2 Određivanje odziva UI sistema 284 19.2.1 Određivanje odziva sistema primenom Laplasove transformacije........................... 284 19.2.2 Određivanje odziva primenom simboliqkog paketa........ 288 19.3 Određivanje odziva i kretanja USI sistema 289 19.3.1 Kretanje i odziv u slobodnom radnom reжimu............ 290 19.3.2 Kretanje i odziv u prinudnom radnom reжimu............ 290 19.3.3 Primena Laplasove transformacije u određivanju kretanja i odziva USI sistema................................ 291 19.3.4 Određivanje kretanja i odziva USI sistema u Matlabu... 292 19.4 Numeriqka analiza linearnih sistema 294 19.4.1 Jediniqni odskoqni odziv............................ 294 19.4.2 Impulsni odziv.................................... 299 19.4.3 Određivanje odziva sistema na proizvoljan ulaz.......... 300 19.4.4 Odziv na poqetne uslove............................. 303 19.5 Pokazatelji prelazne funkcije 308 19.5.1 Pokazatelji kvaliteta prelazne funkcije u Matlabu......................................... 310

x

PREDGOVOR Knjiga Matlab i Simulink u automatskom upravljanju je koncipirana tako da obuhvata oblasti predviđene nastavnim planom i programom predmeta Programiranje u automatskom upravljanju, koji se sluxa na Osnovnim akademskim studijama na Maxinskom fakultetu u Beogradu. Međutim, uzimaju i u obzir aktuelnost i znaqaj upoznavanja sa nekim od softverskih alata za razliqite vrste inжenjerskih proraquna i analiza (a Matlab je jedan od najzastupljenijih, gotovo nezaobilazan), knjiga je napisana tako da mogu da je koriste i studenti sa drugih fakulteta u qijim nastavnim planovima i programima je zastupljenja ova problematika. U tom smislu, programski jezik Matlab (u daljem tekstu Matlab) i njegov paket Simulink (u daljem tekstu Simulink) predstavljeni su u prva tri dela knjige. Qetvrti i peti deo knjige se odnose na primenu Matlaba i Simulinka u oblasti sistema automatskog upravljanja, i dobrim delom predstavljaju podrxku nastavi iz predmeta Osnove automatskog upravljanja koji je obavezan predmet na osnovnim akademskim studijama na Maxinskom fakultetu u Beogradu. Konaqno, knjiga moжe da posluжi kao osnova za budu e napredno korix enje Matlaba i Simulinka. Kompozicija knjige je organizovana u pet delova. Osnova programiranja u Matlabu je izloжena u prvom delu. Prvo poglavlje donosi uvod o Matlabu kao mo nom programskom jeziku, opis njegovog razvojnog okruжenja i osnovnih operacija. Promenljive i osnovni tipovi podataka tema su drugog poglavlja. U tre em poglavlju uvodi se koncept niza, koji predstavlja fundamentalni element u Matlabu, i detaljno se obrađuju numeriqki nizovi (vektori i matrice), znakovni nizovi i nizovi elija, kao i osnovne operacije nad njima. Prvi deo se nastavlja qetvrtim poglavljem koje se bavi pisanjem programa u Matlabu, poqev od jednostavnih skriptova i logiqkih instrukcija do razliqitih tipova funkcija i funkcijskih datoteka. U petom poglavlju se razmatraju simboliqki paket Matlaba i metode za simboliqko rexavanje algebarskih i diferencijalnih jednaqina. Xesto poglavlje je posve eno relacionim i logiqkim operatorima i kontroli toka programa. Paжnja je u sedmom poglavlju posve ena i delu

xii grafiqkih mogu nosti Matlaba a koje se odnose na dvodimenzionalnu grafiku. U drugom delu knjige se izlaжu osnovne numeriqke metode koje su sadrжane i implementirane u ugrađenim funkcijama Matlaba. Sistemi linearnih jednaqina i problemi sopstvenih vrednosti matrica su tema osmog poglavlja. Deveto poglavlje je posve eno problemu aproksimacije funkcije jedne promenljive, pri qemu znaqajno mesto zauzima i interpolacija algebarskim polinomima i splajnovima, kao i metoda najmanjih kvadrata kao jedna od metoda za aproksimaciju funkcija. U desetom poglavlju se ilustruju metode za rexavanje nelinearnih algebarskih jednaqina. Sadrжaj jedanestog poglavlja qine osnove metoda numeriqkog diferenciranja i integraljenja, pri qemu je posebna paжnja posve ena metodama na kojima se zasnivaju ugrađene funkcije Matlaba za numeriqko diferenciranje i integraljenje. U dvanaestom poglavlju se razmatraju metode za rexavanje obiqnih diferencijalnih jednaqina i njihova implementacija u Matlabu. Tre i deo knjige se odnosi na Simulink, gde se u trinaestom i qetrnaestom poglavlju izlaжu osnovni elementi Simulink modela i osnovni blokovi iz biblioteke blokova. Petnaesto poglavlje je posve eno primeni Simulinka u simulaciji dinamiqkih sistema, linearnih i nelinearnih. Qetvrti deo knjige kroz xesnaesto poglavlje donosi osnovne pojmove iz modelovanja dinamiqkih sistema, sa posebnim osvrtom na osobine i oblike modela linearnih stacionarnih dinamiqkih sistema. Primena Laplasove transformacije u određivanju odziva linearnih stacionarnih sistema tretira se u petom delu knjige, u sedamnaestom poglavlju. Osamnaesto poglavlje se detaljno bavi predstavljanjem linearnih sistema u Matlabu i njihovim razliqitim modelima. Analiza linearnih sistema, analitiqka i numeriqka, teme su devetnaestog poglavlja. Izloжeni materijal je ilustrovan brojnim primerima. Tamo gde je neophodno, dati su i rezultati izvrxavanja određenih naredbi, skriptova, a određeni broj primera, posebno u petom delu, urađen je i analitiqkim putem. Recenzentima na korisnim sugestijama, kao i svima onima koji su na neki naqin pomogli u toku pisanja ove knjige, autor se najtoplije zahvaljuje. Beograd, mart 2016. godine Radixa. Ж. Jovanovi

POGLAVLjE 2 Promenljive i tipovi podataka 2.1 Promenljive Koncept promenljivih, qije se vrednosti menjaju u toku izvrxavanja programa, predstavlja sastavni deo svih programskih jezika. Pojam promenljive u Matlabu (i u programskom jeziku uopxte) oznaqava apstraktan pojam memorijske elije raqunara ili skupa memorijskih elija. Drugim reqima, promenljive predstavljaju u neku ruku imena (simboliqka) memorijskih lokacija, i svakako je programerima lakxe i prirodnije da rade sa takvim, simboliqkim imenima, nego sa njihovim apsolutnim adresama. Definisanje promenljive se u Matlabu vrxi naredbom dodele. 2.1.1 Operator dodele U Matlabu se znak = naziva operatorom dodele. On ovde ima drugaqije znaqenje od znaka jednakosti poznatog iz matematike. Kada se otkuca na primer x = 5, to govori Matlabu da dodeli vrednost 5 promenljivoj x. Prema tome, ovaj operator dodeljuje vrednost promenljivoj: ImeP romenljive = numeriqka vrednost ili izraz Prethodna upotreba se ne razlikuje od one poznate iz matematike. Međutim, u Matlabu je mogu e imati i ovakav oblik: x = x + 2. Ova naredba govori Matlabu da doda broj 2 trenutnoj vrednosti promenljive x i zamenjuje trenutnu vrednost od x sa tom novom vrednox u. Ukoliko originalno x ima vrednost 5, njegova nova vrednost e biti 7. Ova primena operatora = je razliqita od njegove primene u matematici. Na primer, u matematici jednaqina x = x + 2 nema smisla, jer ona implicira da je 0 = 2. Na levoj strani operatora dodele moжe biti jedna i samo jedna promenljiva. Stoga se u Matlabu ne moжe koristiti, na primer, ovako nexto: 6 = x, jer bi to znaqilo da numeriqkoj vrednosti treba da se dodeli sadrжaj

8 Promenljive i tipovi podataka neke memorijske lokacije. Naredna posledica ovog ograniqenja je da se u Matlabu ne mogu pisati izrazi kao: >> x + 6 = 10 Odgovaraju a jednaqina x + 6 = 10 je prihvatljiva u algebri i ona ima rexenje x = 4, ali Matlab ne moжe da rexi ovaku jednaqinu bez dodatnih naredbi (ove naredbe su dostupne u Simboliqkom paketu, i bi e reqi o tome u petom poglavlju. Jox jedno ograniqenje je da desna strana operatora dodele mora imati vrednost koja se moжe izraqunati. Na primer, ako promenljivoj y nije dodeljena vrednost, slede i izraz e generisati grexku u Matlabu: >> x = 5 + y Levo od operatora dodele moжe biti ime samo jedne promenljive. Desno moжe biti broj ili izraz koji sadrжi brojeve i/ili promenljive kojima su prethodno dodeljene numeriqke vrednosti. Kada se pritisne taster Enter, numeriqka vrednost sa desne strane dodeljuje se promenljivoj, a Matlab u slede a dva reda prikazuje promenljivu i njoj dodeljenu vrednost. Nove promenljive se mogu definisati korix enjem prethodno definisanih promenljivih. Ako se na kraj reda naredbe dodele upixe operator ; (taqka sa zapetom) i pritisne Enter, Matlab ne e prikazati promenljivu i njoj dodeljenu vrednost, ali e joj vrednost ipak dodeliti i snimiti je u memoriju. Kada se otkuca ime postoje e promenljive i pritisne Enter, u slede a dva reda prikaza e se ime i vrednost te promenljive. U isti red moжe se upisati nekoliko naredbi dodele. Razdvajaju se zapetama (posle zapete moжe se otkucati vixe 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 zapete otkuca taqka sa zapetom, vrednost promenljive ne e biti prikazana. Uopxteno, moжe se re i da promenljivu karakterixe niz atributa (slika 2.1) i o svakom od njih e se ukratko nexto re i, a tokom daljeg izlaganja mnogi od ovih atributa e biti detaljnije objaxnjeni. promenªiva ime adresa tip vrednost vidªivost traja e Slika 2.1: Atributi promenljive Imena promenljivih Ime promenljive je niz znakova upotrebljen kao njen identifikator u programu. Xtavixe, imena se u programu ne upotrebljavaju samo za promenljive nego i za neke druge elemente (entitete) u programu (funkcije, formalne parametre). Imena promenljivih, maksimalne duжine do 63 znaka,

60 Programiranje u Matlabu Ovo rezultuje da datoteka,,testdat.dat sada sadrжi slede e podatke: 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975 0.2785 0.9649 0.9572 0.5469 0.1576 0.4854 0.9575 0.9706 0.8003 4.4.3 Uqitavanje podataka iz datoteke Uqitavanje podataka iz datoteke se postiжe korix enjem naredbe load. Kada se datoteka jednom kreira (kao u prethodno navedenom sluqaju), njen sadrжaj se moжe uqitati u neku matriqnu promenljivu. Ukoliko je to datoteka sa numeriqkim podacima, funkcija load() e uqitati podatke iz datoteke,,imedatoteke.ext (na primer, ekstenzija moжe biti.dat) i kreirati matricu sa istim imenom kao xto je ime datoteke. Na primer, ako se iskoristi datoteka ranije kreirana,,,testdat.dat, slede im naredbama e se uqitati podaci iz nje, i smestiti rezultat u matriqnu promenljivu koja se naziva testdat: >> clear >> load testdat.dat >> who Your variables are: testdat >> testdat testdat = 0.8147 0.1270 0.6324 0.9058 0.9134 0.0975 0.2785 0.9649 0.9572 0.5469 0.1576 0.4854 0.9575 0.9706 0.8003 Funkcija load() radi jedino ako postoji isti broj vrednosti u svakoj liniji tako da podaci mogu biti smexteni u matricu, i naredba save jedino upisuje podatke iz matrice u datoteku. Ukoliko to nije sluqaj, moraju se koristiti ulazno/izlazne naredbe niжeg nivoa, koje nisu predmet ovih izlaganja. 4.5 Funkcije Matlab poseduje bogatu biblioteku ugrađenih funkcija, i one se mogu koristiti u matematiqkim izrazima jednostavno kucanjem njihovih imena i vrednosti njihovih argumenata, kao xto su primeri sin(x), sqrt(x), itd. Najqex e u raqunarskim programima postoji potreba da se izraqunavaju vrednosti funkcija koje nisu unapred definisane u Matlabu. Kada je izraz funkcije jednostavan, i ako je potrebno izraqunati je samo jednom, ta funkcija moжe biti deo programa. Međutim, ukoliko je neku funkciju potrebno izraqunavati mnogo puta, i pri tome i sa razliqitim vrednosti-

4.5 Funkcije 61 ma njenih argumenata, uobiqajeno je da se kreira tzv. korisniqki definisana funkcija. Jednom kada se kreira i saquva, ona se kasnije moжe koristiti na isti naqin kao i ugrađene funkcije Matlaba. Dakle, korisniqki definisana funkcija predstavlja program koji kreira korisnik, snima ga kao funkcijsku datoteku koja se potom koristi kao xto se koriste i ugrađene funkcije. Funkcija moжe da predstavlja jedan matematiqki izraz, ili da sadrжi niz komplikovanih izraqunavanja i izraza. U mnogim sluqajevima to je u stvari jedan potprogram unutar programa. Glavna karakteristika funkcijske datoteke je da ona ima ulaz i izlaz. To znaqi da se izraqunavanja u funkcijskoj datoteci vrxe koriste i ulazne podatke, i rezultat izraqunavanja se prenosi izvan funkcije pomo u njenog izlaza. Ulaz i izlaz mogu biti jedna ili vixe promenljivih, i svaka od njih moжe biti skalar, vektor, ili niz bilo koje veliqine. 4.5.1 Kreiranje funkcijske datoteke Funkcijske datoteke se kreiraju i edituju kao i skript datoteke u prozoru Editora, koji se otvara iz komadnog prozora. Izborom opcije New, potom Function, pojavljuje se prostor datoteke. Editor sadrжi nekoliko podrazumevanih linija koje predstavljaju strukturu funkcijske datoteke. Prva linija predstavlja definicionu liniju funkcije, iza koje se nalaze komentari koji opisuju funkciju. Nakon toga slede izraqunavanja, i poslednja linija je end naredba, koja nije obavezna. Definiciona linija funkcije Prva izvrxna linija u funkcijskoj datoteci mora da bude definiciona linija funkcije. U suprotnom, datoteka se tretira kao skript. Definiciona linija funkcije: ˆ definixe datoteku kao funkcijsku datoteku, ˆ definixe ime funkcije, ˆ definixe broj i redosled ulaznih i izlaznih argumenata. Opxti oblik definicione linije funkcije je: function [izlazni argument] = ime f unkcije (ulazni argumenti) Req function otkucana malim slovima mora biti prva req u definicionoj liniji funkcije. Ime funkcije sledi nakon operatora dodele, znaka =. Pravila za ime funkcije su identiqna pravilima koja vaжe za izbor imena promenljivih. Dobra praksa je izbegavanje imena ve postoje ih, ugrađenih funkcija, kao i imena promenljivih definisanih od strane korisnika, ili podrazumevanih u Matlabu.

62 Programiranje u Matlabu Ulazni i izlazni argumenti funkcije Ulazni i izlazni argumenti se koriste za prenos podataka u funkciju i iz funkcije, sledstveno. Obiqno, funkcija ima najmanje jedan ulazni argument, mada je mogu e definisati i funkciju koja nema ulazne argumente. Ukoliko ih ima vixe, ulazni argumenti su razdvojeni zapetom. Programski kôd koji izvrxava izraqunavanja u funkciji se pixe uz korix enje upravo tih ulaznih argumenata, uz pretpostavku da su im dodeljene numeriqke vrednosti. To znaqi da se matematiqki izrazi u funkcijama moraju pisati u skladu sa dimenzijama ulaznih argumenata, koji mogu biti skalari, vektori ili matrice. Trenutne vrednosti argumenata se dodeljuju prilikom poziva funkcije. Funkcija moжe imati jedan ili vixe izlaznih argumenata, ili nijedan. U sluqaju jednog izlaznog argumenta on se moжe koristiti bez zagrade. Da bi se funkcija mogla koristiti, u telu funkcije mora postojati naredba koja dodeljuje vrednosti izlaznim promenljivim, tj. izlaznim argumentima. Ako funkcija nema izlazni argument, operator dodele u definicionoj liniji moжe se izostaviti. Na primer, funkcija bez izlaznog argumenta moжe biti neka funkcija koja crta dijagrame, xtampa ili upisuje podatke u datoteku itd. Uobiqajeno je da se svi ulazi u funkcijsku datoteku, kao i izlazi iz nje, prenose preko ulaznih i izlaznih argumenata. Pored toga, međutim, sve ulazno-izlazne karakteristike skript datoteke se mogu koristiti i u funkcijskoj datoteci. To znaqi da e se svaka promenljiva kojoj je dodeljena vrednost u telu funkcije prikazati na ekranu komandnog prozora ukoliko se na kraju naredbe dodele ne nalazi znak ;. Takođe, funkcija input() se moжe koristi za interaktivni unos podataka, a funkcije disp(), fprintf() i plot() se mogu koristiti za prikaz informacija na ekranu, snimanje u datoteku ili crtanje dijagrama, bax kao i u skript datotekama. Na primer, neka je potrebno da se napixe funkcija koja raquna obim i povrxinu kruga za zadati polupreqnik. To se moжe uraditi na slede i naqin: function [Obim, Povrsina] = krug_op(radijus) % Funkcija vraca obim i povrshinu kruga. % Ulazni argument: radijus (skalar) % Izlazni argumenti: Obim i Povrsina (skalari) Obim = 2*radijus*pi; Povrsina = radijus^2*pi; end Dakle, funkcija ima jedan ulazni i dva izlazna parametra, i svi oni predstavljaju skalare. Primer poziva funkcije bi bio: >> [O,P] = krug_op(3) O = 18.8496 P = 28.2743

4.5 Funkcije 63 Vaжno je voditi raquna o tome da se funkcija pozove sa odgovaraju im brojem argumenata, i da su oni odgovaraju eg tipa. Na primer, poziv >> [O,P] = krug_op Error using krug_op (line 6) Not enough input arguments. rezultuje grexkom, zbog izostavljanja argumenta. Sa druge strane, ukoliko se funkcija pozove na slede i naqin: >> krug_op(3) ans = 18.8496 oqito je da je informacija o drugom izlaznom argumentu izgubljena. U pozivu funkcije ne postoji promenljiva u koju bi se rezultat smestio i saquvao. Prethodni primer se moжe modifikovati tako da funkcija raquna obim i povrxinu za niz ulaznih vrednosti, tj. za vektor ulaznih podataka, tako xto se u izrazu za izraqunavanje povrxine upotrebi elementni operator mnoжenja. function [Obim, Povrsina] = krug_opv(radijus) % Funkcija vraca obim i povrshinu kruga. % Ulazni argument: radijus (vektor) % Izlazni argumenti: Obim i Povrsina (vektori) Obim = 2*radijus*pi; Povrsina = radijus.^2*pi; end Izvrxavanjem naredbi: >> x = 1:5; >> [O,P] = krug_opv(x) O = 6.2832 12.5664 18.8496 25.1327 31.4159 P = 3.1416 12.5664 28.2743 50.2655 78.5398 rezultat izraqunavanja funkcije su dva vektora, istih dimenzija kao i ulazni vektor. Zapaжanje 4.1. Kada se poziva neka funkcija, vaжno je znati kakav oblik njenog izlaza se oqekuje, tj. da li je u pitanju skalar, vektor ili matrica; naravno, vaжno je znati i broj izlaznih veliqina. H1 linija i komentari H1 linija i tekst pomo i su linije komentara (linije koje poqinju sa znakom procenta), a koje slede nakon definicione linije funkcije. H1 linija je prva linija komentara i obiqno sadrжi ime i kratak opis funkcije. Kada korisnik u komandnom prozoru otkuca naredbu lookfor neka rech, Matlab traжi req neka rech u H1 linijama svih funkcija, i ako je nađe,

64 Programiranje u Matlabu prikazuje H1 liniju u kojoj je req nađena. Linije teksta pomo i su linije komentara koje slede nakon H1 linije. Ove linije sadrжe objaxnjenje funkcije i bilo kakve instrukcije koje se odnose na ulazne i izlazne argumente funkcije. Linije komentara koje se nalaze između definicione linije funkcije i prve linije koja ne predstavlja komentar se prikazuju kada korisnik otkuca u komandnom prozoru help ImeFunkcije. Ovo vaжi i za ugrađene i za korisniqki definisane funkcije. Funkcijska datoteka moжe da sadrжi dodatne linije komentara u telu funkcije, koje se takođe ignorixu pri pozivu naredbe help. 4.5.2 Radni prostor funkcije U prethodnom izlaganju pomenuta je ideja radnog prostora u kome se quvaju promenljive kreirane u komandnom prostoru i skriptovima. Funkcije takođe imaju svoj memorijski (radni) prostor. Radni prostor funkcije je prostor u memoriji raqunara koji se rezervixe za promenljive koje se kreiraju unutar te funkcije. Ovaj radni prostor nije deo radnog prostora komandnog prozora. To znaqi da nekoj promenljivoj u funkciji moжe biti dodeljeno ime, a da pri tome postoji promenljiva sa istim imenom izvan posmatrane funkcije. Radni prostor funkcije se otvara svaki put kada se funkcija koristi. Zaxto postoje posebni radni prostori za svaku funkciju, a ne jedan, zajedniqki? Iako moжda deluje nelogiqno, postojanje posebnog radnog prostora je svrsishodno za velike projekte, koji se sastoje od velikog broja funkcija. Na primer, ako je jedan programer odgovoran za pisanje funkcije fun_1, a drugi za pisanje funkcije fun_2, nijedan od njih ne mora da zna niti da vodi raquna o imenima promenljivih koje koristi. Namera i jeste da oni rade nezavisno i da ne utiqu jedan na drugog. Prema tome, posebni radni prostori xtite funkciju od spoljaxnjeg uticaja. Iz spoljaxnjosti radnog prostora neke funkcije uticaj na ono xto se u njoj dexava jedino imaju ulazni argumenti funkcije. I obratno, radni prostor funkcije utiqe na spoljaxnjost svojim izlaznim argumentima, kada se funkcija izvrxi. 4.5.3 Lokalne promenljive Podruqje vaжnosti neke promenljive je radni prostor u kome ona postoji. Sve promenljive u funkcijskoj datoteci (ulazni i izlazni argumenti i bilo koje promenljive kojima se dodeljuju vrednosti u funkcijskoj datoteci) su lokalne promenljive. To znaqi da su ove promenljive definisane i prepoznaju se jedino unutar funkcije. Lokalne promenljive postoje samo dok se funkcija izvrxava: kada se funkcija zavrxi, one prestaju da postoje. Na primer, u slede oj funkciji koja izraqunava sumu elemenata vektora, postoji lokalna promenljiva k. % suma_vect.m function suma = suma_vect(vektor) % suma_vect vraca sumu elemenata datog vektora % Format: suma_vect(vektor)

POGLAVLjE 5 Simboliqka matematika Simboliqka matematika podrazumeva bavljenje matematikom nad simbolima, a ne nad brojevima, kao na primer, a + a = 2a. Simboliqke matematiqke funkcije deo su Matlabovog Simboliqkog paketa, koji koristi poseban i nov proizvod MuPAD. Pre njegove pojave i njegovog razvijanja Matlab je kroz stotine razvijenih funkcija koristio Maple za podrxku simboliqkim izraqunavanjima. Danas, funkcionalnost MuPAD jezika, zajedno sa ukljuqenim bibliotekama je znaqajno ispred prvobitnog simboliqkog matematiqkog paketa. Imena i funkcionalnost mnogih funkcija dostupnih u ovom paketu su identiqni funkcijama koje postoje u Matlabu, ali je razlika upravo u tome xto funkcije u simboliqkom paketu rade sa simboliqkim objektima, za razliku od onih u Matlabu, koje rade sa numeriqkim vrednostima. Osnovni element za simboliqke operacije je simboliqki objekt. Simboliqki objekti se sastoje od promenljivih i brojeva koji kada se koriste u matematiqkim izrazima govore Matlabu da izvrxi operacije simboliqki. Ukoliko je potrebno simboliqki izrazi se mogu koristiti i u numeriqkim operacijama. 5.1 Simboliqke promenljive i izrazi Simboliqki objekt moжe biti promenljiva (bez prethodno dodeljene numeriqke vrednosti), broj, ili izraz sastavljen od numeriqkih promenljivih i brojeva. Za kreiranje simboliqkog objekta koristi se funkcija sym() i/ili naredba syms. Ako je ulazni argument funkcije sym() string, rezultat je simboliqki broj ili promenljiva. Za sluqaj da je ulazni argument numeriqki skalar ili matrica, rezultat je simboliqka prezentacija datih numeriqkih vrednosti. Na primer, naredba x=sym( x ) kreira simboliqku promenljivu pod imenom x i smexta rezultat u x. Naredba y=sym( 1/7 ) ili y=sym(1/7) kreira jedan simboliqki broj, qime se izbegava aproksi-

78 Simboliqka matematika >> [X Y Z] = solve(4*x-2*y+z==7,'x+y+5*z==10','-2*x+3*y-z==2') X = 124/41 Y = 121/41 Z = 33/41 5.1.4 Simboliqka matematiqka analiza Diferenciranje Funkcija diff() se koristi za simboliqko određivanje izvoda funkcija. Iako ova funkcija ima isto ime kao funkcija koja se koristi za numeriqko izraqunavanje konaqnih razlika, Matlab prepoznaje koju funkciju e koristiti u konkretnom sluqaju. Osnovna sintaksa funkcije je diff(f ), pri qemu se vra a izvod izraza funkcije F u odnosu na podrazumevanu nezavisnu promenljivu. >> syms x f >> f = x^3 + 2*x^2-4*x +3 ; >> diff(f) % ili direktno diff(x^3+2*x^2-4*x+3) ans = 3*x^2 + 4*x - 4 Ukoliko funkcija zavisi od vixe promenljivih, onda funkcija raquna parcijalni izvod reda n po izabranoj promenljivoj var, i tada je sintaksa poziva oblika diff(f,var,n). >> syms a x, f = sin(a*x^2); >> dfdx = diff(f) dfdx = 2*a*x*cos(a*x^2) >> dfda = diff(f,a) dfda = x^2*cos(a*x^2) >> d2fdx2 = diff(f,2) d2fdx2 = 2*a*cos(a*x^2) - 4*a^2*x^2*sin(a*x^2) Integraljenje Funkcija int() se pozivom oblika int(expr,var) koristi za određivanje neodređenog integrala simboliqkog izraza expr u odnosu na simboliqku promenljivu var. Funkcija pokuxava da nađe simboliqki izraz I tako da je diff(i,var)=expr. Parametar var je opcioni, i ako se ne navede, funkcija vra a integral izraza expr u odnosu na podrazumevanu nezavisnu promenljivu. Ukoliko integral ne postoji u zatvorenom obliku, ili Mat-

5.2 Rexavanje diferencijalnih jednaqina 79 lab ne moжe da ga izraquna iako on postoji, tada se naredba vra a neizvrxena (dakle, onako kako je uneta). Na primer, neodređeni integral funkcije f(x) = 3x 2 1 moжe se na i na slede i naqin: >> syms x >> int(3*x^2-1) ans = x^3 - x Sa druge strane, određeni integral ove funkcije u granicama x = 2 do x = 4 moжe se dobiti sa: >> int(3*x^2-1,2,4) ans = 54 Graniqne vrednosti Graniqne vrednosti funkcije mogu se na i funkcijom limit(), qija je opxta sintaksa limit(expr,x,a), i kojom se raquna graniqna vrednosti izraza expr kada promenljiva x teжi promenljivoj a, tj. lim expr. Parametar x se moжe izostaviti, i onda se koristi podrazumevana promenljiva. x a Na primer, graniqne vrednosti: lim x 2 x 2 x 2 4 = 1 4, lim cos(x + h) cos(x) = sin(x) h 0 h se dobijaju na slede i naqin: >> syms h x >> limit((x-2)/(x^2-4),2) ans = 1/4 >> limit((cos(x+h)-cos(x))/h,h,0) ans = -sin(x) Ukoliko se parametar a izostavi, graniqna vrednost se određuje kada promenljiva teжi nuli. 5.2 Rexavanje diferencijalnih jednaqina Funkcija dsolve() se koristi za rexavanje obiqnih diferencijalnih jednaqina. Razliqiti oblici poziva funkcije određeni su dimenzionalnox- u problema koji se rexava, tj. u zavisnosti da li je u pitanju skalarna diferencijalna jednaqina ili sistem jednaqina, kao i postojanjem ili nepostojanjem poqetnih i graniqnih uslova. Funkcija dsolve() podrazumeva da je unapred definisana nezavisna promenljiva t a ne x, kao kod drugih simboliqkih funkcija.

5.2 Rexavanje diferencijalnih jednaqina 81 5.2.2 Rexavanje sistema diferencijalnih jednaqina Sistem diferencijalnih jednaqina moжe se rexiti funkcijom dsolve(), a odgovaraju a sintaksa je: dsolve( eqn1, eqn2,...) Funkcija vra a simboliqko rexenje sistema jednaqina definisanih simboliqkim izrazima eqn1, eqn2, itd. Na primer, sistem jednaqina: ẋ 1 = 3x 1 + 4x 2, ẋ 2 = 4x 1 + 3x 2 ima rexenje x 1 = C 2 e 3t cos 4t + C 1 e 3t sin 4t, x 2 = C 1 e 3t cos 4t C 2 e 3t sin 4t: >> [x1,x2] = dsolve('dx1 = 3*x1 + 4*x2','Dx2 = -4*x1 + 3*x2') x1 = C2*cos(4*t)*exp(3*t) + C1*sin(4*t)*exp(3*t) x2 = C1*cos(4*t)*exp(3*t) - C2*sin(4*t)*exp(3*t) 5.2.3 Definisanje poqetnih i graniqnih uslova Poqetni i graniqni uslovi jednaqine se mogu uzeti u obzir pozivom funkcije na slede i naqin: dsolve(eqn,cond1,cond2,...) Ovako pozvana, funkcija vra a simboliqko rexenje diferencijalne jednaqine definisane simboliqkim izrazom eqn, a koje zadovoljava uslove definisane u izrazima cond1, cond2 itd. Ukoliko je zavisna promenljiva na primer x, tada se uslovi definixu na slede i naqin: x(a) = b, Dx(a) = c, D2x(a) = d i sliqno. Ovi uslovi odgovaraju vrednostima x(a), ẋ(a), ẍ(a), itd. Ukoliko je broj uslova manji od reda jednaqine, rexenje e sadrжati i proizvoljne konstante C 1, C 2 itd. Na primer, problem ẋ = sin(at), x(0) = b ima rexenje x = 1 a 1 cos at + b, koje se moжe odrediti na slede i naqin: a >> dsolve('dx = sin(a*t)','x(0) = b') ans = b - cos(a*t)/a + 1/a Dakle, u jednaqini i poqetni uslovi mogu biti simboliqke promenljive. Osim poqetnih uslova, kao u prethodnom primeru, mogu biti definisani i graniqni uslovi, tj. vrednosti zavisnih promenljivih u bilo kom vremenskom trenutku t. Na primer, ẍ + 4x = 0, x(0) = 1, ẋ(π) = 1.

POGLAVLjE 6 Operatori i kontrola toka programa Programi razmatrani u prethodnim poglavljima bili su strukturno jednostavni, jer su se naredbe izvrxavale jedna za drugom, onako kako su pisane, bez ikakvog grananja i ponavljanja. Međutim, ve ina programerskih problema nije tako jednostavna. Qinjenica je u stvari, da velika mo programskih jezika dolazi iz njihove mogu nosti da daju instrukcije raqunaru da izvrxi isti zadatak vixe puta, sa ponavljanjem, ili da izvrxi razliqite zadatke ako se određeni parametri menjaju ili su zadovoljeni određeni uslovi. U vixim programskim jezicima ovo se postiжe uz pomo naredbi za kontrolu toka programa. Naredbe za kontrolu toka programa se mogu podeliti u dve osnovne grupe: naredbe za uslovno grananje, i naredbe petlji. Uslovno grananje predstavlja mogu nost odluke da li se određeni kôd izvrxava ili ne, a u zavisnosti od vrednosti nekog izraza. Petlje, ili drugim reqima iteracije, predstavljaju sposobnost da se izvrxi skup istih operacija vixe puta, dok se specijalni zahtev ne zadovolji. U naredbama odluqivanja, grananja, i uopxte u kontroli toka programa, jednu od vaжnih uloga igraju logiqki i relacioni operatori, i o njima e takođe biti reqi u daljem tekstu. 6.1 Relacioni operatori Relacioni operatori (ili operatori poređenja) su operatori odnosa između dveju promenljivih ili izraza, a kao rezultat daju logiqki tip podatka. Oni dozvoljavaju bilo koju varijantu operanada, xto znaqi da se mogu primenjivati između skalara, vektora i matrica, ali i između skalara i matrice (vektora). Takođe, relacioni operatori se mogu primenjivati i na kompleksne brojeve, i u tom sluqaju se upoređuju samo njihovi realni delovi. Dakle, rezultat poređenja skalara primenom relacionih operatora je ili 0 (ako poređenje nije taqno) ili 1 (ako je poređenje taqno), i rezultat

6.3 Uslovno grananje 89 poruka o grexkama kod izraza kod kojih bi se u nekim okolnostima to moglo pojaviti (na primer, deljenje nulom). Logiqki operatori se mogu koristiti sa svim numeriqkim tipovima podataka, uzimaju i u obzir da se sve numeriqke vrednosti razliqite od nule tretiraju kao logiqka vrednost true, a vrednost nula se tretira kao logiqka vrednost false. 6.3 Uslovno grananje Uslovno grananje je najosnovniji element za kontrolu toka u bilo kom programskom jeziku. On omogu ava programu da donosi odluke i d odluquje da li e se izvrxiti ili ne e niz naredbi, a na osnovu vrednosti nekog izraza. Kako se vrednost ovog izraza moжe razlikovati sa razliqitim izvrxavanjima programa, pomenuta karakteristika omogu ava da program reaguje dinamiqki na razliqite podatke. U Matlabu se uslovno izvrxavanje programa postiжe kljuqnim reqima if, else i elseif. 6.3.1 If uslov Oblik jedne if naredbe je veoma jednostavan. Nakon kljuqne reqi if sledi jedan logiqki izraz, koji se drugaqije i naziva uslov if iskaza. Ukoliko uslov ima vrednost true (1), izvrxava se niz naredbi koje slede iza iskaza if, sve do iskaza end (grupa naredbi iz sintakse). U suprotnom, ako je logiqka vrednost izraza uslov false, program preskaqe grupu naredbi između if i end, i izvrxavanje programa se nastavlja prvom naredbom iza kljuqne reqi end. if uslov grupa naredbi end Izraz uslov nakon kljuqne reqi if moжe biti sloжen izraz koji se sastoji od relacionih i/ili logiqkih operatora. Xto se tiqe dimenzija, moжe biti skalar, vektor ili matrica. Struktura if-else omogu ava izvrxavanje jedne od dve mogu e grupe naredbi, a u zavisnosti od istinitosne vrednosti uslova if iskaza i njen opxti oblik je (slika 6.1): if uslov grupa naredbi 1 else grupa naredbi 2 end Ako izraz uslov nakon kljuqne reqi if ima vrednost true, izvrxava se niz naredbi oznaqen sa grupa naredbi 1, koji se nalazi između kljuqnih reqi if i else, a zatim se preskaqu ostale naredbe do iskaza end. Ukoliko je vrednost izraza uslov false, program preskaqe naredbe do iskaza else, a zatim izvrxava niz naredbi oznaqen sa grupa naredbi 2 između else i end.

6.4 Petlje 93 definixe kada petlja poqinje. Nasuprot tome, kod while petlje broj prolaza nije poznat unapred i proces ponavljanja petlje se nastavlja sve dok se specificirani uslov ne zadovolji. Obe vrste petlje mogu se prekinuti u bilo kom trenutku naredbom break. 6.4.1 For petlja For petlja izvrxava naredbu ili niz naredbi unapred određeni broj puta. Struktura for petlje je jednostavna i njen opxti oblik je: for indeks petlje = vrednosti grupa naredbi end Prva linija identifikuje petlju i definixe promenljivu indeks petlje, koja se naziva promenljiva petlje ili indeks petlje, a predstavlja broj qija se vrednost menja tokom prolaska kroz petlju. Izraz vrednosti, koji moжe biti vektor ili matrica, predstavlja skup vrednosti koje promenljiva indeks petlje uzima dok se petlja izvrxava. Suxtinski, broj elemenata u vektoru vrednosti (ili broj kolona, ukoliko je u pitanju matrica) određuje broj prolazaka kroz petlju. Naredba ili grupa naredbi koja sledi, oznaqena sa grupa naredbi, naziva se telo petlje, i ono se izvrxava pri svakom prolazu. Kljuqna req end identifikuje kraj for petlje. Petlja se izvrxava jedanput za svaku vrednost promenljive indeks petlje. U primeru: for k = [1 3 7 2] x = k^2; fprintf(' %d', x) end fprintf('\n') promenljiva k predstavlja indeks petlje, a vektor [ 1 3 7 2 ] predstavlja skup vrednosti. Tokom prvog prolaza kroz petlju promenljiva k ima vrednost 1, xto je prva vrednost iz vektora vrednosti. U telu petlje se raquna kvadrat promenljive k i dodeljuje promenljivoj x, a potom se vrednost promenljive x xtampa na ekranu. Tokom slede eg prolaza vrednost k se menja na vrednost 3, xto je druga vrednost u vektoru vrednosti, i izvrxava se ponovo telo petlje. Pri svakom prolasku kroz petlju vrednost promenljive k se menja i dodeljuju joj se slede a vrednost iz promenljive vrednosti. Izvrxavanjem skripta dobija se: 1 9 49 4 U prethodnom primeru indeks petlje je uzimao vrednosti iz vektora, između qijih elemenata ne postoji nikakva uoqljiva zavisnost. Međutim, najqex e je primena for petlje u slede em obliku (slika 6.3): for k = m:s:n grupa naredbi end Dakle, vektor vrednosti ovde predstavlja vektor sa osobinom da je razlika između dva susedna elementa konstantna i jednaka s. Izraz m:s:n dodeljuje

94 Operatori i kontrola toka programa indeksu petlje k poqetnu vrednost m koja se tokom svakog prolaza pove ava za s, pa se veliqina s naziva korak petlje. Petlja se zavrxava kada vrednost indeksa k dostigne vrednost n. U tom sluqaju, program se ne vra a vixe na naredbu for, ve nastavlja sa izvrxavanjem prve slede e naredbe iza kljuqne reqi end. Na primer, ako je k = 1 : 3 : 10, bi e 4 prolaza kroz petlju, a vrednosti indeksa k u prolazima kroz petlju su 1, 4, 7 i 10, sledstveno. Korak petlje k moжe biti i negativan. Tako, na primer, k = 20 : 5 : 10 rezultuje sa 3 prolaza u kojima je k = 20, 15, 10. Ukoliko nije zadat korak petlje, podrazumeva se da je on jednak 1. Ako je for (ulaz) k = m m = n, petlja e se izvrxiti samo jednom. U sluqaju da je m > n i s > 0, ili pak k > n m < n i s < 0, petlja se ne e izvrxiti k = k + s nijednom. Specijalno, ako su vrednosti false true k, s i n takve da k ne moжe biti jednako n, ukoliko je korak s pozitivan, poslednji grupa naredbi prolaz e se izvrxiti kada k ima najve u vrednost koja je manja od n. Na primer, k = 1 : 2 : 6 daje 3 prolaza u kojima je k = 1, 3, 5. Ako s ima negativnu vrednost, end (izlaz) poslednji prolaz e se izvrxiti kada k Slika 6.3: Dijagram toka for petlje ima najmanju vrednost koja je ve a od n. I treba napomenuti svakoj naredbi for u programu mora biti dodeljena odgovaraju a kljuqna req end. Kada se petlja zavrxi, indeks petlje ima poslednju dodeljenu mu vrednost. Matrica kao indeks petlje Indeks petlje moжe biti i matrica, za razliku od prethodnih primera gde je to bio vektor. Na primer, neka je data matrica A tipa m n. Naredbe for k = A grupa naredbi end dodeljuje indeksu k vektor A(:, i), gde i predstavlja teku i broj iteracije petlje, odnosno prolaza petlje. U prvom prolazu, k je jednako A(:, 1), u drugom k = A(:, 2), u i-tom k = A(:, i) i sve do k = A(:, n). Dakle, broj prolaza je jednak broju kolona matrice A, a u svakom prolazu indeks k predstavlja odgovaraju u kolonu matrice A. Jedan takav primer je: >> A = [1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> for k = A, y = 2*k, end y = 2 8

POGLAVLjE 9 Aproksimacija i interpolacija 9.1 Opxti problem aproksimacije Neka je funkcija f : X R, X R funkcija realne promenljive. Problem aproksimacije funkcije f( ) svodi se na određivanje neke druge funkcije ϕ(x) = ϕ(x; a 0, a 1,..., a m ) koja zavisi od m + 1 parametara a 0, a 1,..., a m, tako da vaжi ϕ(x) f(x). Funkcija ϕ( ) se naziva aproksimaciona funkcija. U praksi se problem aproksimacije moжe javiti iz dva razloga. Prvi je xto analitiqki oblik funkcije f( ), iako je poznat, moжe biti veoma komplikovan, pa je izraqunavanje njenih vrednosti sloжeno. Sa druge strane, analitiqki oblik funkcije nije poznat, ve su poznate samo vrednosti funkcije na nekom skupu taqaka. To je qest sluqaj u mnogim nauqnim i inжenjerskim primenama, kada se podaci prikupljaju u eksperimentima pri raznim merenjima razliqitih fiziqkih veliqina, na primer kod eksperimentalnih određivanja statiqkih karakteristika, kao xto je sluqaj kod krive sila-izduжenje u postupku određivanja krutosti opruge, i sliqno. Jedan od osnovnih problema aproksimacije je kako odrediti, odnosno izabrati funkciju aproksimacije. U principu, sve aproksimacione funkcije se mogu podeliti na linearne i nelinearne. Opxti oblik linearne aproksimacione funkcije je ϕ(x) = a 0 ϕ 0 (x) + a 1 ϕ 1 (x) +... + a m ϕ m (x), (9.1) pri qemu sistem funkcija ϕ k ( ) zadovoljava određene osobine. Ovde se pojam linearne funkcije odnosi na linearnost po parametrima a i, i = 0, 1,..., m, a dobra strana ovog oblika aproksimacije je xto se određivanje parametara svodi na sisteme linearnih jednaqina.