166
PRIMENA SPECIFIČNIH SOFTVERA U PROCESNOM INŽENJERSTVU 2020/2021

PRIMENA SPECIFIČNIH SOFTVERA U PROCESNOM ...LITERATURA 1. Gilat A., Uvod u MATLAB 7 sa primerima, Mikro knjiga, 2005. 2. D. Xue, J. Chen, Solving applied mathematical problems with

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • PRIMENA SPECIFIČNIH SOFTVERA

    U PROCESNOM INŽENJERSTVU 2020/2021

  • SADRŽAJ PREDMETA

    Predavanja

    1. Nelinearne jednačine 2. Optimizacioni problemi 3. Interpolacija funkcija 4. Aproksimacija (fitovanje) funkcija 5. Neuronske mreže i njihova primena u izračunavanjima

    Vežbe – Laboratorija za kompjuterski podržano procesno inženjerstvo (316, III sprat)

    Primena MATLABa u rešavanju različitih inženjerskih problema

  • Fond časova nastave

    2 časa nedeljno predavanja

    3 časa nedeljno vežbe

    Predispitne obaveze studenta i završni ispit Ocenjivanje vrši se prema sledećoj tabeli

    Poeni Minimum

    1. Prisustvo na predavanjima 5

    2. Prisustvo na vežbama 5

    3. Kolokvijum 1 45

    4. Seminarski rad 15

    Ukupno predispitne obaveze (1-4)

    70 30

    5. Završni ispit 30

    Ukupno (1-5) 100 51

    Poeni Ocena

    51-60 6

    61-70 7

    71-80 8

    81-90 9

    91-100 10

  • LITERATURA

    1. Gilat A., Uvod u MATLAB 7 sa primerima, Mikro knjiga, 2005. 2. D. Xue, J. Chen, Solving applied mathematical problems with Matlab,

    CRC Press, 2009. 3. Y. K. Yeo, Chemical Engineering Computation with MATLAB, CRC Press,

    2018. 4. Stojanović S., Matlab – uputstvo, skripta, Tehnološki fakultet Leskovac. 5. Stojanović S., Prezentacije sa predavanja. 6. Matlab Documentation Set, www.mathworks.com

  • 1 OSNOVE MATLAB-A 1.1 IZGLED PROZORA MATLABA

  • 1.2 SKRIPTE I FUNKCIJE U MATLABU 1.2.1 SKRIPTE U MATLABU

    • Skripte se koriste za automatizaciju niza MATLAB naredbi koje se moraju uneti sa komandne linije i izvršiti više puta.

    • Postoje dve vrste skripti:

    − skripte,

    − Live skripte

    Skripte

    • Skripte su najjednostavnija datoteke tipa .m

    • Skripte:

    − sadrže isključivi programski kod i

    − nemaju ulazne ili izlazne argumente.

    • Skripte se kreiraju u Editoru:

    − na Home kartici sa palete alata bira se New Script.

  • • Live skripte su datoteke tipa .mlk, koje u interaktivnom okruženju (Live Editor) sadrže zajedno:

    − programski kod,

    − formatirani tekst,

    − grafiku,

    − hiperlinkove,

    − jednačine i

    − izlaze, tj. rezultate programskog koda

    • Live skripta se kreira u Live Editoru

    − na Home kartice sa palete alata bira se New Live Script.

  • Izlazni prozor (desna strana) sadrži izlazni rezultat programskog koda

    Izlazni prozor je isključen.

    Izlazni rezultati se prikazuju neposredno iza programskih naredbi u okviru samog Live Editora.

    LIVE EDITOR

  • 1.2.2 FUNKCIJE U MATLABU

    • Funkcije, kao i skripte, omogućavaju ponovnu upotrebu sekvenci naredbi koje su smeštene u programskim datotekama.

    • Pored toga, funkcije pružaju veću fleksibilnost, pre svega zato što je omogućeno

    − prosleđivanje ulaznih vrednosti funkciji i

    − vraćanje izlaznih vrednosti iz funkcije.

    • Pored toga, za funkcija važi:

    − izbegava se čuvanje privremenih promenljivih u osnovnom radnom prostoru

    − pokreću se brže od skripti.

    • U Matlabu razlikujemo sledeće tipove funkcija

    − funkcije definisane u funkcijskom fajlu,

    − lokalne funkcije i ugnježdene funkcije u funkcijskom fajlu ili skripti,

    − privatne funkcije u funkcijskom fajlu,

    − anonimne funkcije.

  • 1.2.2.1 FUNKCIJE DEFINISANE U FUNKCIJSKOM FAJLU

    • To su funkcije koje se definišu unutar posebnog funkcijskog (.m) fajla, van skript programa. Opšti oblik ovog tipa funkcije je

    function [y1,...,yN] = myfun(x1,...,xM) % telo funkcije end

    gde su:

    y1,...,yN izlazi funkcije,

    x1,...,xM ulazi funkcije,

    myfun – ime funkcije koje mora da odgovara imenu .m fajla.

    Primer. Definistai dunkciju u fajlu stat.m koja vraća srednju vrednost i standardnu devijaciju ulaznog vektora.

    function [m,s] = stat(x) n = length(x); m = sum(x)/n; s = sqrt(sum((x-m).^2/n)); end

  • • Ako funkcija ne vraća ni jedan izlaz, opšti oblik je

    function myfun(x1,...,xM) % telo funkcije

    end

    ili

    function [] = myfun(x1,...,xM) % telo funkcije

    end

    • Ako funkcija nema ulaza onda se zagrade () mogu izostaviti

    function [y1,...,yN] = myfun % telo funkcije end

  • 1.2.2.2 LOKALNE (LOCAL) FUNKCIJE

    • Lokalne funkcije se mogu naći u:

    − funkcijskom fajlu ili

    − skripti.

    Lokalne funkcije u funkcijskom fajlu

    • U funkcijskom fajlu, prva funkcija u fajlu naziva se glavna funkcija.

    − Glavna funkcija je vidljiva iz funkcija u drugim fajlovima, a takođe se možete pozvati i sa komandne linije.

    • Ostale funkcije u .m fajlu nazivaju se lokalne funkcije i mogu se pojaviti u bilo kojem redosledu nakon glavne funkcije.

    • Lokalne funkcije su najčešći način razbijanja programskog koda glavne funkcije na manje programske delove.

    • Lokalne funkcije su vidljive samo u drugim funkcijama u istom fajlu.

  • Primer. Napisati funkciju za izračunavanje srednje vrednosti i medijane niza podataka. Funkciju smestiti u fajl funstats.m. Pri tome, u ovom fajlu koristiti lokalne funkcije za izračunavanje srednje vrednosti i medijane.

    function [avg, med] = fstats(x) n = length(x); % niz slučajnih podat. avg = mymean(x,n); % poziv lok. fun. med = mymedian(x,n); % poziv lok. fun. end function a = mymean(v,n) % MYMEAN local function. a = sum(v)/n; end function m = mymedian(v,n) % MYMEDIAN local function. w = sort(v); if rem(n,2) == 1 m = w((n + 1)/2); else m = (w(n/2) + w(n/2 + 1))/2; end end

    fajl funstats.m sa

    funkcijama

    glavna funkcija:

    fstats

    lokalna funkcija:

    mymean

    lokalna funkcija:

    mymedian

  • Lokalne funkcije u skripti

    • Počevši od Matlab verzije R2016b pa nadalje, skripte i live skripte mogu da sadrže i lokalne funkcije.

    • Lokalne funkcije se pišu na kraju skripte!

    • Razlog korišćenja lokalnih funkcija:

    − ako se unutar skripte isti programski kod više puta koristi, onda upotrebom lokalnih funkcija smanjuje se programski kod,

    − korišćenjem lokalnih funkcija programski kod je pregledniji i lakši za održavanje,

    − lokalne funkcije su korisne za eksperimentisanje sa funkcijama koje se po potrebi mogu dodavati, menjati i brisati iz programskog koda (ako ne bismo koristili lokalne funkcije, morali bi da koristimo funkcije sa .m fajlovima, što znatno otežava rad s obzirom da se radi sa fajlovima).

  • Primer. Napisati skriptu stats.m za izračunavanje srednje vrednosti i medijane niza podataka. Pri tome koristiti lokalne funkcije za izračunavanje srednje vrednosti i medijana

    x = 5*randn(1,100)+10; % niz sluč. pod. plot(x) n = length(x); avg = mymean(x,n) % poziv lok. fun. med = mymedian(x,n) % poziv lok. fun. function a = mymean(v,n) % MYMEAN Lokalna funkcija za srednju vr. a = sum(v)/n; end function m = mymedian(v,n) % MYMEDIAN Lokalna funkcija za medijanu. w = sort(v); if rem(n,2) == 1 m = w((n + 1)/2); else m = (w(n/2) + w(n/2 + 1))/2; end end

    fajl stats.m sa

    skriptom

    skripta

    lokalna funkcija na kraju skripte:

    mymean

    lokalna funkcija na kraju skripte:

    mymedian

  • 1.2.2.3 UGNJEŽDENE (NESTED) FUNKCIJE

    • Ugneždena funkcija je funkcija koja je u potpunosti sadržana u roditeljskoj funkciji.

    • Ugnežđene funkcije mogu pristupiti i menjati promenljive u radnim prostorima funkcija koje ih sadrže.

    Primer. mymain.m

    function mymain

    x = 5;

    nestfun

    function nestfun

    x = x + 1; % x je sada 6

    end

    end

    roditeljska funkcija

    ugnježdena funkcija

  • 1.2.2.4 PRIVATNE FUNKCIJE

    • Privatne funkcije su korisne kada želimo da ograničimo opseg funkcije.

    • Funkciju se označavaju kao privatne čuvanjem u poddirektorijumu sa imenom private.

    • Privatna funkcija je dostupna samo funkcijama u roditeljskom direktorijumu neposredno iznad private direktorijuma

  • 1.2.2.5 ANONIMNE FUNKCIJE

    • Anonimna funkcija je MATLAB funkcija zasnovana na jednorednom izrazu koja ne zahteva programsku datoteku.

    • Anonimna funkcija nema ime.

    • Za anonimnu funkciju se kreira funkcijski handl (referenca) koji se potom koristi umesto same funkcije.

    Funkcijski handl

    Za funkcije u .m fajlu funkcijski handl se kreira tako što se ispred imena funkcije doda znak @.

    Primer. Kreiranje handla za funkciju u .m fajlu

    function y = computeSquare(x) % Funkcija u .m fajlu y = x.^2; end

    f = @computeSquare; % Kreiranje funk. handla f za fun. computeSquare() a = 4; b = f(a) % Korišćenje funkcijskog handla f za poziv % funkcije computeSquare()

  • Za anonimne funkcije handl se kreira na sledeći način:

    h = @(arglist)anonymous_function

    Primer. Kreiranje handla za anonimnu funkciju

    sqr = @(n) n.^2; % Kreiranje handla anonimne funkcije

    x = sqr(3) % Upotreba handla anonimne funkcije

    • Ako funkcija ne zahteva ulaz koristi se prazna zagrada

    h = @()anonymous_function

    • Ako funkcija zahteva više ulaza, oni se navode u listi argumenata. Npr. u slučaju dva argumenta:

    myfunction = @(x,y) (x^2 + y^2 + x*y);

    z = myfunction(10,20)

    • Anonimna funkcija vraća samo jedan izlaz (funkcijski handl).

    • Ako izraz u anonimnoj funkciji vraća više izlaza, tada je pri pozivu handla funkcije potrebno sa leve strane „=“ navesti listu izlaznih vrednosti.

  • Primer.

    c = 10;

    mygrid = @(x,y) ndgrid((-x:x/c:x),(-y:y/c:y)); % anonimna funk.

    [X,Y] = mygrid(pi,2*pi); % anonimna fun. vraća dva izlaza X i Y

    Funkcija ndgrid vraća onoliko izlaza koliko ima ulaznih vektora:

    [X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)

    Anonimna funkcija koja poziva ndgrid vraća samo jedan izlaz (funkcijski handl mygrid). Pozovom mygrid i navođenjem liste od dve promenlive [x,y] sa leve strane „=“ prihvataju se izlazne vrednosti koje vraća funkcija ndgrid i smeštaju u promenljive x i y.

    • Tipične upotrebe funkcijskog handla:

    − Prosleđivanje funkcije kao argumenta nekoj drugoj funkciji. Na primer, funkciji za integraciju treba kao argument proslediti funkciju koja treba da se integrali.

    − Konstruisanje handlova za anonimne funkcije.

    − Pozivanje lokalnih funkcija izvan glavne funkcije.

  • 1.3 RADNI PROSTORI U MATLABU

    • U Matlabu razlikujemo

    − osnovni radni prostor (ORP) i

    − radni prostor funkcija (RPF).

    • Osnovni radni prostor čuva promenljive koje se kreiraju sa komandne linije i/ili skripte, pod pretpostavkom da se skripta pokreće iz komandne linije ili iz editora.

    Promenljive u osnovnom radnom prostoru postoje dok se ne obrišu ili dok se sesija MATLABa ne završi.

    • Svaka funkcija ima svoj radni prostor koji se naziva radni prostor funkcije.

    − Funkcije ne mogu da pristupe promenljivim iz ORP.

    − Radni prostor neke funkcije odvojen je od osnovnog radnog prostora i radnih prostora svih ostalih funkcija radi zaštite integriteta podataka.

    − Čak i lokalne funkcije u zajedničkoj datoteci imaju svoje posebne radne prostore.

    • Promenljive koje se nalaze u radnom prostoru funkcije nazivaju se lokalne promenljive. Lokalne promenljive se brišu iz memorije nakon završetka funkcije.

  • Primer. Osnovni radni prostor (ORP) i radni prostor funkcija (RPF)

    x = 5*randn(1,100)+10; % niz slučajnih podataka plot(x) n = length(x); % poziv lokalne funkcije za srednju vrednost avg = mymean(x,n); % poziv lokalne funkcije za medijanu med = mymedian(x,n); function a = mymean(v,n) % MYMEAN Lokalna funkcija za izračunavanje % srednje vrednosti niza. a = sum(v)/n; end function m = mymedian(v,n) % MYMEDIAN Lokalna funkcija za izračunavanje % medijane niza. w = sort(v); if rem(n,2) == 1 m = w((n + 1)/2); else m = (w(n/2) + w(n/2 + 1))/2; end end

    ORP sa promenljivim:

    x, n, avg, med

    Prosleđivanje argumenata funkciji:

    x, n

    RPF mymean sa lokalnim promenljivim:

    v, n, a

    Kopiranje argumenata u parametre:

    v=x, n=n

    RPF mymedian sa lokalnim promenljivim:

    v, n, w, m

    Kopiranje argumenata u parametre:

    v=x, n=n

  • 1.4 STANDARDNI INŽENJERSKI PROBLEMI

    NESTANDARDNI PROBLEMI:

    1. evolucioni algoritmi i njihova primena u optimizacionim problemima (genetički algoritam, algoritam roja, simulirano kaljenje) *

    2. neuronske mreže i njihova primena u izračunavanjima*

    STANDARDNI PROBLEMI:

    1. granične vrednosti funkcija

    2. diferenciranje funkcija

    3. integracija funkcija

    4. nizovi i redovi

    5. problemi iz linearne algebre (matrice i operacije sa matricama, transformacije matrica, matrične jednačine)

    6. integralne transformacije (Laplasova transformacija i njena primena u izračunavanjima)

    7. nelinearne jednačine*

    8. optimizacioni problemi*

    9. diferencijalne jednačine

    10. interpolacija funkcija* (jednodimenzionalna, dvodimenzionalna, spline)

    11. aproksimacija (fitovanje) funkcija*

    * Problemi koji će biti razmatrani. Ostali problemi su razmatrani u ranijim kursevima na osnovnim studijama.

    Za rešavanje navedenih problema koristićemo softverski paket MATLAB sa odgovarajućim dodacima (Toolbox)

  • 2 NELINEARNE JEDNAČINE

    2.1 NUMERIČKO REŠAVANJE NELINEARNIH JEDNAČINA SA JEDNOM PROMENLJIVOM

    • U inženjerskim proračunima čest problem je nalaženje rešenja opšte nelinearne jednačine

    ( ) 0f x = (1)

    • Rešavanje nelinearnih jednačina može biti:

    − analitičko (u većini slučajeva nije moguće) koje je egzaktno

    − numeričko (približno)

  • TEOREMA 1. Ako je funkcija ( )f x

    neprekidna u zatvorenom intervalu [ , ]a b i ako je ( ) ( ) 0f a f b , tada u intervalu

    ( , )a b postoji bar jedno realno rešenje

    (koren) jednačine (1).

    TEOREMA 2. Ako je pored uslova u Teoremi 1, zadovoljen i uslov da je funkcija

    ( )f x monotona u posmatranom intervalu,

    onda na ovom intervalu postoji jedinstveno realno rešenje (koren) jednačine (1).

  • • Približno (numeričko) rešenje jednačine ( ) 0f x = može se dobiti primenom

    iterativnog procesa na sledeći način:

    U tekućem 1k + koraku iteracije procenjuje se nova vrednost rešenja 1k

    x+

    koja

    može da zavisi od:

    − jedne ( )k

    x ili više 1

    ( , ,...)k k

    x x−

    procenjenih vrednosti iz prethodnog

    (prethodnih) koraka iteracije i

    − vrednosti funkcije ( )f za te prethodne procene: ( )k

    f x ili 1

    ( , ,...)k k

    f x x−

    .

    • Primenom iterativnog procesa dobija se niz uzastopnih procena realnih rešenja jednačine ( ) 0f x = :

    0 1 2 1, , , , , ,

    k kx x x x x

    + (2)

    tj. niz vrednosti , 0,1,2,k

    x k = koje nazivamo iteracioni niz.

    • Početna vrednost 0

    x je polazna procena traženog rešenja koja je neophodna za dalja

    izračunavanja vrednosti k

    x .

  • • Formula kojom se iz jedne ili više prethodnih procena dobija nova procena naziva se iteraciona formula.

    1 1

    ( , ,...), 0,1,2,...k k k

    x F x x k+ −= = (3)

    • Specijalno, ako se nova procena (aproksimacija) dobija samo na bazi prethodne procene, iteraciona formula ima oblik:

    1

    ( ), 0,1,2,...k k

    x F x k+= = (4)

    • Funkcija ( )F x se naziva iteraciona funkcija i njen oblik zavisi od izabrane metode za

    rešavanje nelinearnih jednačina.

    • Ako iteracioni niz konvergira željenom rešenju :

    limk

    kx

    →= (5)

    kaže se da iteracioni proces konvergira ka traženom rešenju jednačine ( ) 0.f x =

    • Tada, za konvergentni proces važi:

    ( )F = (6)

  • 2.1.1 KRITERIJUMI ZA ZAVRŠETAK ITERACIONOG PROCESA

    • Za završetak iteracionog procesa koriste se različiti kriterijumi:

    1k k

    x x +− (7)

    1

    1

    k k

    k

    x x

    x+

    +

    + (8)

    1

    ( )k f

    f x +

    (9)

    gde su:

    − i f

    zadate granice apsolutnih odstupanja po proceni rešenja ili vrednosti

    funkcije u procenjenom korenu

    − zadate granice relativnog odstupanja po proceni rešenja (tolerancija) − - mali broj kojim se sprečava deljenje nulom u slučaju kada se za procenu

    1kx

    +

    dobije nula.

    • Kada je odabrani kriterijum konvergencije zadovoljen, kao (približno) rešenje jednačine ( ) 0f x = usvaja se poslednja procena,

    1kx

    + .

  • 2.2 METODE ZA REŠAVANJE NELINEARNE JEDNAČINE SA JEDNOM PROMENLJIVOM

    1. Njutnova metoda (Njutn-Rapsonova metoda, metoda tangente) 2. Metoda sečice 3. Metoda regula falsi 4. Metoda polovljenja intervala (bisekciona metoda) 5. …

  • 2.2.1 NJUTNOVA METODA (METODA TANGENTE)

    Nutnova metoda se izvodi iz uslova aproksimacije funkcije njenom tangentom u okolini tekuće tačke kx , koja predstavlja procene korena jednačine ( ) 0f x = ,

    ( ) ( )( )k k ky f x f x x x− = − (10)

    Rešavanjem (10) po x , uz uslov ( ) 0y f x= = dobija ( ) / ( )k k kx x f x f x= −

    Ukoliko se stavi 1kx x+ , za novu procenu korena funkcije dobija se:

    1( )

    ( ) 0,1,2,...( )

    kk k k

    k

    f xx x F x k

    f x+ = − = =

    (11)

    Proces izračunavanja 1kx + se prekida

    kada se koren adekvatno proceni na osnovu usvojenog kriterijuma.

    Geometrijska interpretacija ove metode prikazana je na slici.

  • 2.2.2 METODA SEČICE

    Ako se u Njutnovoj formuli (11) izvod ( )kf x aproksimira sa:

    1

    1

    ( ) ( )( ) k kk

    k k

    f x f xf x

    x x

    dobija se iterativni algoritam metode sečice:

    1 1 11

    ( )( ) ( , ) 0,1,2,...

    ( ) ( )

    kk k k k k k

    k k

    f xx x x x F x x k

    f x f x+ − −

    = − − = =−

    (12)

    Za startovanje algoritma po metodi sečice potrebne su početne vrednosti 0x

    i 1x .

    Geometrijska interpretacija ove metode prikazana je na slici.

  • 2.2.3 METODA REGULA FALSI

    Metod sečice se može modifikovati tako da je

    1 0 0

    0

    ( )( ) ( , ) 1,2,...

    ( ) ( )

    k

    k k k k

    k

    f xx x x x F x x k

    f x f x+= − − = =

    − (13)

    Ovaj metod se često naziva metod regula falsi.

    Za razliku od metoda sečice, gde je dozvoljeno uzeti 1 0x x , kog metode

    regula falsi 1x i 0x treba uzeti sa različitih strana u odnosu na rešenje x =

    nelinearne jednačine.

    Geometrijska interpretacija metode regula falsi prikazana je na slici.

  • 2.2.4 METODA POLOVLJENJA INTERVALA (BISEKCIONA METODA)

    To je najjednostavnija metoda nalaženja korena nelinearne funkcije. Ona funkcioniše za sve neprekidne funkcije, ali zato daje najlošiju procenu korena.

    1. 0k = : selektovati [ , ]a b tako da važi ( ) ( ) 0f a f b i setovati 1x a= , 1y b= .

    2. 1k k= + : Izračunati srednju tačku intervala ( ) / 2k k k

    z x y= + .

    3. a) Ako je ( ) ( ) 0k k

    f x f z , koren jednačine se nalaz u intervalu [ , ]k kx z pa setovati:

    1k kx x+ = , 1k ky z+ = .

    b) Ako je ( ) ( ) 0k k

    f x f z , koren jednačine se nalaz u intervalu [ , ]k kz y pa setovati

    1k kx z+ = , 1k ky y+ = .

    c) Ako je ( ) ( ) 0k k

    f x f z = iterativni proces se prekida i traženo rešenje je kz .

    4. a) Ako je 1 1| |k ky x + +− , preći na korak 2

    b) Ako je 1 1| |k ky x + +− iterativni proces se prekida i traženo rešenje nelinearne jednačine je

    1 1 1( ) / 2k k kz x y+ + += +

    Geometrijska interpretacija ove metode prikazana je na slici.

  • 2.3 PRIMENA MATLABA U REŠAVANJU NELINEARNIH JEDNAČINA 2.3.1 GRAFIČKE METODE ZA REŠAVANJE NELINEARNIH JEDNAČINA

    2.3.1.1 GRAFIČKO REŠAVANJE NELINEARNIH JEDNAČINA

    ezplot - Matlab stara verzija funkcije

    fun – funkcija zadata kao string, simbolički izraz ili funkcijski handl na interval -2pi : 2pi

    Ako je fun funkcija jedne promenljive, f(x), onda se crta eksplicitna funkcija f(x)

    Ako je fun funkcija dva promenljive f(x,y), onda se crta implicitna funkcija f(x,y) = 0

    [xmin, xmax] – crta eksplicitnu funkciju f(x) na ovom intervalu po x

    [xymin, xymax] – crta eksplicitnu funkciju f(x) na ovom interval i po x i po y

    [xmin, xmax, ymin, ymax] – crta iplicitnu funkciju f(x,y) = 0 na ovim intervalima

    funx, funy – crta parametarski zadatu funkciju funx(t) i funy(t) na itervalu 0 : 2pi po t

    funx, funy, [tmin, tmax] – kao prethodno na interval tmin : tmax po t

  • fplot – Matlab nova verzija funkcije

    f - funkcija zadata eksplicitno, f(x), kao string, simbolički izraz ili funkcijski handl; crta se na interval -5 : 5.

    xinterval – interval u obliku [xmin xmax]

    funx, funy – crta parametarski zadatu funkciju definisanu funkcijama funx(t) i funy(t) na itervalu -5 : 5 po t

    funx, funy, tinterval – kao prethodno na intervalu [tmin tmax]

    LineSpec – specificira tip linije (npr. 'r--o' određuje crvenu isprekidanu liniju sa markerima u vidu kružića)

    Name, value – svojstvo grafika i njegova vrednost

    [x,y] = vraća x i y koordinate grafika

  • fimplicit - Matlab

    f - funkcija zadata implicitno kao f(x,y) = 0 na intervalu [-5 5].

    interval – interval u obliku [min max] po x i y;

    ili interval u obliku [xmin xmax ymin ymax]

    LineSpec – specificira tip linije (npr. '-r' je crvena linija)

    Name, value – svojstvo grafika i njegova vrednost

  • Primer 1. Rešiti jednačinu 3 0.5sin(4 2) 4 cos2 0.5t te t e t− −+ + = koristeći grafički metod.

    % Resenje 1. Pomocu funkcije ezplot

    % 1.1. Funkcija zadata kao string

    ezplot('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5',[0 5])

    line([0,5],[0,0])

    grid

    % 1.2. Funkcija zadata kao simbolicki izraz

    syms t

    y1=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;

    ezplot(y1,[0 5])

    line([0,5],[0,0])

    grid

    % 1.3. Funkcija zadata kao anonimna funkcija

    f1=@(t)exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;

    ezplot(f1,[0 5])

    line([0,5],[0,0])

    grid

  • % Resenje 2. Pomocu funkcije fplot

    % 2.1. Funkcija zadata kao string

    fplot('exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5',[0 5])

    line([0,5],[0,0])

    grid

    % 2.2. Funkcija zadata kao simbolicki izraz

    syms t

    y2=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;

    fplot(y2,[0 5])

    line([0,5],[0,0])

    grid

    % 2.3. Funkcija zadata kao anonimna funkcija

    f2=@(t)exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5

    fplot(f2,[0 5])

    line([0,5],[0,0])

    grid

  • Primer 2. Rešiti grafičkom metodom jednačine 22 /2 /2

    2 2 2

    sin( ) 0

    cos( ) 0

    xy x

    x y

    x e e xy

    y x y x e

    − −

    +

    + =

    + + =

    Rešenje.

    % Resenje 1. Pomocu funkcije ezplot

    ezplot('x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y)')

    hold on; ezplot('y^2 *cos(y+x^2) +x^2*exp(x+y)')

    hold off

    grid

    % Resenje 2. Pomocu funkcije fimplicit

    syms x y

    f1 = @(x,y) x^2*exp(-x*y^2/2)+exp(-x/2)*sin(x*y);

    f2 = @(x,y) y^2 *cos(y+x^2)+x^2*exp(x+y);

    fimplicit(f1, [-6 6 -6 6]), hold on

    fimplicit(f2, [-6 6 -6 6]), hold off

  • Primer 3. Rešiti grafičkom metodom jednačine 2 2

    3

    1 0

    0.75 0.9 0

    x y

    x y

    + − =

    − + =

    Rešenje.

    ezplot(’x^2+y^2-1’); hold on

    ezplot(’0.75*x^3-y+0.9’)

    Zamenom y iz druge jednačine u prvu dobija

    se jedna jednačina 6-tog reda po x , koja ima 6 korena. Dva realna korena se mogu odrediti sa grafika, a preostala 4 korena su kompleksna.

  • 2.3.2 NUMERIČKO REŠAVANJE NELINEARNE JEDNAČINE f(x) = 0

    fun – defineše funkciju koja može biti data u obliku M-funkcije i anonimne funkcije

    x0 –granice pocetnog intervala između kojih se nalazi rešenje: ako je x0 skalar on predstavlja jednu granicu pocetnog intervala, a algoritam odredjuje drugu granicu ovog intervala; ako je x0 = [x01 x02] vektor onda njegovi elementi predstavljaju donju i gornju granicu pocetnog intervala, a algoritam proverava da li je ispunjen uslov f(x01)*f(x02)

  • Primer. Numericko resavanje nelinearne funkcije sin 0x = pomoću funkcije fzero

    fun = @sin; % kreira handl ugradjene funkcije sinx.

    x0 = 3; % initial point

    x = fzero(fun,x0) % funkciji fzero je prosledjen % handl funkcije sinx

    Primer. Numericko resavanje nelinearne funkcije 3 2 5 0x x− − = pomoću funkcije fzero

    fun = @(x) x.^3 - 2*x - 5; % anonimna funkcija

    x0 = 2; % pocetno resenje

    z = fzero(fun,x0)

    Primer. Numericko resavanje nelinearne funkcije 0xee x

    −− − = pomoću funkcije fzero

    fun = @(x) exp(-exp(-x)) - x; % funkcija

    x0 = [0 1]; % početni interval

    options = optimset('Display','iter'); % prikazuje iteracije

    [x fval exitflag output] = fzero(fun,x0,options)

  • 2.3.3 NUMERIČKO REŠAVANJE SISTEMA NELINEARNIH JEDNAČINA F(X) = 0

    fun – defineše funkciju koja predstavlja sistem jednačina i može biti data u obliku M-funkcije i anonimne funkcije

    x0 – početne vrednosti rešenja

    options – služi za selektovanje metode i kontrolu tačnosti prilikom pretraživanja rešenja; zadaje se pomoću optimset ili optimoptions

    x – rešenje sistema nelinearnih jednačina

    fval – vrednost funkcije za nađeno rešenje x

    exitflag – defineše tip nađenog izlaza

    output - sadrži informacije o procesu optimizacije

    fsolve – Optimization toolbox Numerički rešava sistem nelinearnih jednačina

  • eqn – jednačina data u simboličkom zapisu

    var – promenljiva po kojoj se traži rešenje

    init_param – početno pogađanja

    eqns – sistem jednačina dat u simboličkom zapisu

    vars – promenljive po kojima se traži rešenje

    S – Rešenja jedne jednačine

    Z – Rešenja sistema jednačina

    y1,…,yN – rešenja sistema jednačina

    vpasolve – Symbolic toolbox Numerički rešava sistem nelinearnih jednačina F(X)=0

  • Primer. Odrediti numeričko rešenje sistema nelinearnih jednačina koristeći fsolve

    2 2

    3

    1 0

    0.75 0.9 0

    x y

    x y

    + − =

    − + =

    % Resenje.

    % [x y] = [p(1) p(2)]

    f=@(p)[p(1)*p(1)+p(2)*p(2)-1; 0.75*p(1)^3-p(2)+0.9];

    OPT=optimset; % uzima podrazumevane vrednosti za options

    OPT.Display='iter'; % Prikazuje vrednosti tokom iteracija

    [x,y,flag,izlaz]=fsolve(f,[1; 2],OPT)

    Primer. Odrediti resenje jednacine sistema nelinearnih jednacina koristeci vpasolve 3 0.5sin(4 2) 4 cos2 0.5t te t e t− −+ + =

    % Resenje.

    syms t;

    eq=exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5 ==0;

    s1=vpasolve(eq,t,0.5) % za pocetni uslov t=0.5

    s2=vpasolve(eq,t,2.5) % za pocetni uslov t=2.5

    s3=vpasolve(eq,t,3.8) % za pocetni uslov t=3.8

  • Primer. Rešiti sistem jednačina

    1

    2

    1 2

    1 2

    2

    2

    x

    x

    x x e

    x x e

    − =

    − + =

    Rešenje. Napišimo sistem u formi ( ) 0F x = :

    1

    2

    1 2

    1 2

    2 0

    2 0

    x

    x

    x x e

    x x e

    − − =

    − + − =

    Neka je početno rešenje x0 = [-5 -5].

    F = @(x) [2*x(1) - x(2) - exp(-x(1)); -x(1) + 2*x(2) - exp(-x(2))];

    x0 = [-5;-5];

    options = optimoptions('fsolve','Display','iter');

    [x,fval] = fsolve(F,x0,options)

  • 2.3.4 ANALITIČKO REŠAVANJE SISTEMA NELINERANIH JEDNAČINA F(X) = 0

    eqn, eqns – simbolički zapis jednačine(a) koje koriste simboličke promenljive

    var, vars – promenljiva po kojoj se vrši izračunavanje

    Name, Value – ime svojstva i vrednost svojstva. Npr ('Real', true) tra#i isključivo realno rešenje

    S – Rešenja jedne jednačine

    Z – Rešenja sistema jednačina

    y1,…,yN – rešenja sistema jednačina

    solve – Symbolic toolbox Analitički rešava sistem nelinearnih jednačina F(X)=0. Ukoliko to nije moguće, rešenje daje u numeričkom obliku

  • Primer. Resiti analitički sledeći sistem jednačina

    0

    1

    2

    x y

    x y =

    − =

    +

    % Resenje.

    % Prvi nacin prihvatanja rezultata funkcije solve eqns = [2*x + y == 0, x - y == 1]; [X, Y] = solve(eqns,[x y])

    % Drugi nacin prihvatanja rezultata funkcije solve S=solve(eqns,[x y]); S.x, S.y

    Primer. Resiti analitički sledeći sistem jednačina 2 22 0

    1

    x y

    x y

    + =

    − =

    syms x y eqns = [2*x^2 + y^2 == 0, x - y == 1]; [X, Y] = solve(eqns,[x y])

  • Primer. Resiti analitički sledeći sistem jednačina sa parametrima a i b 2 2 26 3 0

    3

    x ax b y

    y a x

    + + + =

    = + +

    % Resenje. syms a b x y; [x,y]=solve([x^2+a*x^2+6*b+3*y^2==0,y==a+(x+3)],[x,y])

  • Primer. Odrediti rešenje sledeće jednačine koristeći funkciju solve. 3 0.5sin(4 2) 4 cos2 0.5t te t e t− −+ + =

    Rešenje.

    1. korišćenjem solve

    syms t x;

    solve(exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5)

    Warning: Unable to solve symbolically. Returning a numeric solution using vpasolve.

    ans =

    0.67374570500134756702960220427474

    Dakle, rešenje nije analitički rešavano, već je dobijeno numerički. Kako odrediti preostala rešenja?

  • 2. korišćenjem fsolve uz grafički prikaz radi postavljanja početnog rešenja

    y=@(t)exp(-3*t).*sin(4*t+2)+4*exp(-0.5*t).*cos(2*t)-0.5;

    ff=optimset; ff.TolX=1e-16; ff.TolFun=1e-30;

    [t1,f1]=fsolve(y,0.5,ff)

    [t2,f2]=fsolve(y,2.5,ff)

    [t3,f3]=fsolve(y,3.8,ff)

  • 3 OPTIMIZACIONI PROBLEMI Optimizacija predstavlja problem određivanje ekstremnih vrednosti (minimuma ili maksimuma) neke realne funkcije.

    3.1 GLOBALNI I LOKALNI MINIMUMI FUNKCIJE

    Globalni minimum funkcije y = f (x) na intervalu [ , ]a b je najveća vrednost koju funkcija y = f (x) postiže na tom intervalu. Analogno se definiše i globalni maksimum.

    Lokalni minimum je minimum funkcije u nekom intervalu koji ne mora, ali može biti globalni minimum. Analogno se definiše i globalni maksimum.

  • 3.2 PRIMENA STANDARDNOG MATEMATIČKOG POSTUPKA ZA ODREĐIVANJE EKSTREMNIH VREDNOSTI FUNKCIJE

    Iz matematike je poznato da dovoljni uslovi za neograničeni optimizacioni problem

    glase: u optimalnoj tački x prvi izvodi funkcije cilja po optimizacionim promenljivima jednaki su nula

    Rešavanjem prethodnih jednačina dobijaju se ekstremne tačke od kojih neke mogu biti optimalne (minimum ili maksimum).

    Rešavanje ovih jednačina može biti teško u slučaju optimizacionih problema sa većim brojem promenljivih.

    Grafičkim metodama mogu se rešiti optimizacioni problemi sa jednom i dve promenljive, dok sa tri i više promenljivih ne mogu.

  • Primer. Koristeći standardne matematičke postupke odrediti optimalne vrednosti funkcije.

    3 0.5sin(4 2) 4 cos2 0.5t te t e t− −+ + =

    Rešenje. syms t

    y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;

    y1=diff(y,t); % odredjuje prvi izvod

    figure, ezplot(y1,[0,4]), grid % crta prvi izvod

    t1=vpasolve(y1,t,1.5); % odredjuje prvu nulu prvog izvoda

    t2=vpasolve(y1,t,3); % odredjuje drugu nulu prvog izvoda

    y2=diff(y1); % odredjuje drugi izvod

    y2_1=subs(y2,t,t1); % odredjuje vrednost 2. izvoda u prvoj

    % ekstemnoj tacki

    y2_2=subs(y2,t,t2); % odredjuje vrednost 2. izvoda u drugoj

    % ekstemnoj tacki

    if y2_1 < 0

    fprintf('Maksimum: (%6.2f,%6.2f)\n',t1, subs(y,t,t1))

    else

  • fprintf('Minimum: (%6.2f,%6.2f)\n',t1, subs(y,t,t1))

    end

    if y2_2 < 0

    fprintf('Maksimum: (%6.2f,%6.2f)\n',t2, subs(y,t,t2))

    else

    fprintf('Minimum: (%6.2f,%6.2f)\n',t2, subs(y,t,t2))

    end

    figure, fplot(y,[0,4]), grid % crta funkciju

    hold on

    plot(t1,subs(y,t,t1),'o',t2,subs(y,t,t2),'o') % oznacava tacke %

    minimuma i maksimuma

    hold off

  • 3.3 TIPOVI OPTIMIZACIONIH PROBLEMA

    Standardni optimizacioni problem se može opisati na sledeći način:

    minimizirati: )

    uz ograničenja: ) 0, 1, ,

    ) 0, 1

    (

    (

    ,( ,

    i

    i

    f

    g i p

    h i q

    =

    = =

    x

    x

    x

    (14)

    : n mf R R→ nazivamo ciljna funkcija (engl. objective function) ili kriterijumska funkcija

    1 2T n

    nx x x R= x argument ciljne funkcije

    : nih R R→ nazivamo ograničenja jednakosti (engl. equality constraints),

    : nig R R→ nazivamo ograničenja nejednakosti (engl. inequality constraints).

    Tačke koje zadovoljavaju ograničenja nazivamo ostvarivim tačkama (engl. feasible points) ili ostvarivim područjem (engl. feasible region).

    U nastavku ograničićemo se na minimizaciju funkcije. To međutim ne predstavlja nikakvo ograničenje, budući da maksimizaciju funkcije )(f x uvek možemo izraziti kao

    minimizaciju funkcije )(f− x .

    Takođe, primetite da se svako ograničenje jednakosti ili nejednakosti može izraziti u obliku kako smo to učinili gore. Konkretno, ograničenje jednakosti )( h c=x možemo

    napisati kao ( ) 0h c− =x , dok ograničenja nejednakosti )( g cx ili )(g cx možemo

    napisati kao ( ) 0g c− x odnosno ) 0 .(c g− x

  • Optimizacione probleme možemo podeliti prema:

    1. broju m ciljnih funkcija

    • jednokriterijumska ( 1m = ) i višekriterijumska ( 1m ) optimizacija

    2. tipu promenljivih x

    • skalarna ( 1n = ) i vektorska ( 1n ) optimizacija

    3. domenu promenljivih x u optimizaciji

    • diskretna, kontinualna i mešovita optimizacija

    4. obliku ciljne funkcije

    • linearna i nelinearna (kvadratna, …) optimizacija

    5. tipu ograničenja

    • optimizacija bez ograničenja i sa ograničenjima (linearna, nelinearna)

    6. tipu problema koji se rešava

    • linearno programiranje, kvadratno programiranje i nelinearno programiranje (sa i nez gradijenta)

  • 3.4 OPTIMIZATION TOOLBOX

    Optimization Toolbok je dodatak Matlab-a koji sadrži funkcije za pronalaženje parametara koji minimiziraju ili maksimiziraju ciljnu funkciju uz određena ograničenja. Ovaj Toolbox uključuje različite solvere za:

    1. linearno programiranje (LP), 2. mešovito celobrojno linearno programiranje (MILP), 3. kvadratno programiranje (KP), 4. nelinearno programiranje (NLP), 5. linearni metod najmanjih kvadrata sa ograničenjima, 6. nelinearni metod najmanjih kvadrata i 7. nelinearne jednačine.

    Da bise se u Optimization Toolbox-u rešio optimizacioni problem, potrebno je izvršiti sledeće korake:

    1. Izaberati solver za rešavanje optimizacionog problema.

    2. Kreirati funkciju cilja koju treba minimizirati.

    3. Kreirati ograničenja, ako postoje.

    4. Podesiti opcije (options) ili koristiti podrazumevane opcije.

    5. Pozoviti odgovarajući solver.

  • Tipovi solvera u Optimization Toolbox-u u odnosu na tip ograničenja i tip funkcije cilja

  • 3.5 OPTIMIZACIONI PROBLEMI BEZ OGRANIČENJA

    Matematički zapis neograničenog nelinearnog optimizacionog problema glasi

    min ( )fx

    x (15)

    gde vektor 1 2T

    nx x x=x predstavlja optimizacione promenljive, a ( )f

    predstavlja u opštem slučaju nelinearnu ciljnu (kriterijumsku) funkciju.

    Cilj je da se odredi vektor x tako da je vrednost kriterijumske funkcije minimalna. Ovaj optimizacioni problem predstavlja minimizacioni problem.

    Maksimizacioni problem (funkcija ( )f treba da dosegne maksimalnu vrednost)

    rešava se preko minimizacionog problema koristeći funkciju ( )f− .

  • U optimization Toolbox-u podržane su redom sledeći solveri za neograničenu optimizaciju:

    1. fminsearch, fminunc (nelinearne kriterijumske funkcije): min ( )fx

    x

    2. quadprog (kvadratno programiranje): 1

    min2

    T TH +x

    x x f x

    3. lsqcurvefit (najmanji kvadrati)

    2 2

    2min ( , ) min ( ( , ) )i idata data data data

    i

    F x x y F x x y− = −x x

    4. lsqnonlin (najmanji kvadrati): 2 2

    2min ( ) min ( )j

    i

    f x f x= x x

  • 3.5.1 NELINEARNI OPTIMIZACIONI PROBLEMI BEZ OGRANIČENJA

    fminsearch – Optimization toolbox

    Nalazi minimum nelinearne multivarijabilne funkcije bez ograničenja i bez korišćenja izvoda funkcije

    min ( )fx

    x

    Algoritmi: Nelder-Mead simplex algorithm

    fminunc – Optimization toolbox

    Nalazi minimum nelinearne multivarijabilne funkcije bez ograničenja sa gradijentom

    min ( )fx

    x

    Algoritmi:

    'quasi-newton' (default)

    'trust-region'

  • Primer. Odrediti minimum funkcije 2 22( 2 ) x y xyz x x e− − −= −

    Rešenje.

    1. Korišćenje fminsearch()

    syms x

    % Anonimna funkcija

    f=@(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2));

    % Pocetni uslov

    x0=[2; 1];

    % Rešavanje optimizacije

    OPT=optimset; % uzima podrazumevane vrednosti za options funkcije fminsearch

    OPT.Display='iter'; % Prikazuje vrednosti tokom iteracija

    [xmin,fmin,flag,output] = fminsearch(f,x0)

  • 2. Korišćenje fminunc()

    syms x

    % Anonimna funkcija

    f=@(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2));

    % Pocetni uslov

    x0=[2; 1];

    % Rešavanje optimizacije

    OPT=optimset; % uzima podrazumevane vrednosti za options

    OPT.Display='iter'; % Prikazuje vrednosti tokom iteracija

    [xmin,fmin,flag,output] = fminunc(f,x0,OPT)

  • Primer 9. Data je vremenska zavisnost 2 3 6( ) cos10 sin 2t tf t e t e t− − −= +

    Nacrtati ovu funkciju i izračunati prve četiri minimalne i maksimalne vrednosti funkcije na intervalu [0, 3].

    Rešenje. syms t f1=@(t)exp(-2*t).*cos(10*t)+exp(-3*(t+2)).*sin(2*t); f2=@(t)-(exp(-2*t).*cos(10*t)+exp(-3*(t+2)).*sin(2*t)); fplot(f1,[0 3]) t0=0.2; [tmin1,fmin1]=fminsearch(f1,t0) % min t0=0.8; [tmin2,fmin2]=fminsearch(f1,t0) % min t0=1.5; [tmin3,fmin3]=fminsearch(f1,t0) % min t0=2.2; [tmin4,fmin4]=fminsearch(f1,t0) % min t0=0.6; [tmax1,fmax1]=fminsearch(f2,t0) % max t0=1.2; [tmax2,fmax2]=fminsearch(f2,t0) % max t0=2; [tmax3,fmax3]=fminsearch(f2,t0) % max t0=2.5; [tmax4,fmax4]=fminsearch(f2,t0) % max hold on plot(tmin1,fmin1,'o',tmin2,fmin2,'o',tmin3,fmin3,'o',tmin4,fmin4,'o', ... tmax1,-fmax1,'x',tmax2,-fmax2,'x',tmax3,-fmax3,'x',tmax4,-fmax4,'x') hold off

  • Zaključak: Za različite početne vrednosti, dobijeni su različiti lokalni minimumi i maksimumi koji su prikazani na slici.

  • 3.5.2 NELINEARNI OPTIMIZACIONI PROBLEMI BEZ OGRANIČENJA SA UKLJUČENIM

    GRADIJENTOM I HESIANOM U KRITERIJUMSKOJ FUNKCIJI

    • Kada brzina konvergencije optimizacionog problema postane spora, mogu se koristiti informacije o gradijentu funkcije kako bi se ovaj proces ubrzao.

    • U ciljnu funkciju solvera fminunc može se uključiti analitički izraz za gradijent, pri čemu solver tada postaje robusniji i brže se izvršava. Slično, pored gradijenta, u ciljnu funkciju se može uključiti i analitički izraz za drugi izvod (Hesian).

    • Ako se gradijent izostavi iz kriterijumske funkcije, solver fminunc procenjuje njegovu numeručku vrednost pomoću konačnih razlika. Ako se gradijente navede, tada solver ne vrši procenu njegove numeričke vrednosti, tako da se štedi na vremenu i dobija na tačnosti, iako procena konačne razlike može biti brža za složene izvode.

    • Dalje, ukoliko se Hesian ne uključi u kriterijumsku funkciju, solver fminunc koristi približni Hesian koji može biti daleko od pravog Hesiana. Uključivanje Hesiana dovodi do rešenja u manji broj iteracija.

  • Primer. Za datu funkciju naći minimum. 2 2 2

    1 2 2 1 1( , ) 100( ) (1 )f x x x x x= − + −

    Rešenje. % Grafik funkcije [x,y]=meshgrid(0.5:0.01:1.5); z=100*(y.^2-x).^2+(1-x).^2; mesh(x,y,z), zlim([0,300])

    % Poziv funkcije bez uključivanja gradijenta u kriterijumsku funkciju syms x y fun = @(x,y) 100*(y - x^2)^2 + (1-x)^2; options = optimoptions('fminunc','SpecifyObjectiveGradient',false,'Display','iter'); % Poziv funkcije za optimizaciju [xmin,fmin,flag,output] =fminunc(fun,x0,options) % Odredjivanje analitickog izraza za gradijent syms x1 x2; f=100*(x2-x1^2)^2+(1-x1)^2; J=jacobian(f,[x1,x2]) % Dobijeni izraz za gradijent treba ubaciti u

    % kriterijumsku funkciju fun_sa_grad

  • % Poziv funkcije sa analitickim izrazom za gradijent options = optimoptions('fminunc','Algorithm','trust-region','SpecifyObjectiveGradient',true,'Display','iter'); % Poziv funkcije za optimizaciju x0 = [-1,2]; fun = @fun_sa_grad; [xmin,fmin,flag,output] = fminunc(fun,x0,options)

    % Kriterijumska funkcija kao lokalna funkcija u skripti

    function [f,g] = fun_sa_grad(x) f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2; if nargout > 1 % zahteva se gradijent g = [-400*(x(2)-x(1)^2)*x(1) - 2*(1-x(1)); 200*(x(2)-x(1)^2)]; end end

  • 3.5.3 KVADRATNO PROGRAMIRANJE BEZ OGRANIČENJA

    quadprog – Optimization toolbox

    Nalazi minimum kvadratne multivarijabilne funkcije bez ograničenja

    1min

    2

    T T+x

    x Hx f x

    Algoritmi: 'interior-point-convex' (default)

    'trust-region-reflective'

    'active-set'

  • 3.6 OPTIMIZACIONI PROBLEMI SA OGRANIČENJIMA 3.6.1 NELINEARNI OPTIMIZACIONI PROBLEMI FUNKCIJE JEDNE PROMENLJIVE ČIJI JE

    ARGUMENT OGRANIČEN NA INTERVALU

    1 2 : min ( ) :

    xCiljna funkcija f x Ograničenja x x x

    gde su sa x , 1

    x i 2

    x označeni skalarne vrednosti, a ( )f x je skalarna funkcija.

    Primer. Odrediti tačku gde funkcija sin(x) poprima minimalnu vrednost u opseg 0 2x .

    fun = @sin; x1 = 0; x2 = 2*pi; x = fminbnd(fun,x1,x2)

    fminbnd – Optimization toolbox

    Nalazi minimum funkcije jedne promenljive čiji argument leži na datom intervalu.

    Algoritmi: 'golden section search, parabolic interpolation'

  • 3.6.2 NELINEARNI OPTIMIZACIONI PROBLEMI SA OGRANIČENJIMA

    Opšti oblik nelinearnog optimizacionog problema sa ograničenjima je:

    Ciljna funkcija: min ( )

    Ograničenja: ( ) 0

    ( ) 0

    =

    =

    x

    eq

    eq eq

    f x

    c x

    c x

    Ax b

    A x b

    lb x ub

    gde su:

    x vektor promenljivih,

    ,eq

    b b vektori,

    ,eq

    A A matrice,

    ( ), ( )eq

    c x c x nelinearne vektorske funkcije

  • lb, ub – ograničenja po promenljivim nonlcon - m-funkcija za opisivanje nelinearnih ograničenja:

    • prvi izlaz ove funkcije predstavlja nelinearna ograničenja tipa nejednakosti,

    • drugi izlaz ove funkcije predstavlja nelinearna ograničenja tipa jednakosti.

    fmincon – Optimization toolbox

    Nalazi minimum nelinearne multivarijabilne funkcije sa ograničenjima

    Algoritmi: 'interior-point' (default), 'trust-region-reflective', 'sqp', 'sqp-legacy' (optimoptions only), 'active-set'

    fun - m-funkcija ili anonimna funkcija kojom se opisuje funkcija cilja.

    x0 - početna vrednost za rešenje.

    A, b – linearna ograničenja tipa nejednakosti

    Aeq, beq - linearna ograničenja tipa jednakosti

  • Primer. Rešiti sledeći problem nelinearnog programiranja 2 2 2

    1 2 3 1 2 1 3

    2 2 2

    1 2 3

    1 2 3

    1 2 3

    min (1000 2 )

    25 0

    8 14 7 56 0

    , , 0

    x x x x x x x

    x x x

    x x x

    x x x

    − − − − −

    + + − =

    + + − =

    x

    Rešenje 1.

    f=@(x)1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3); x0=[1;1;1];

    xm=[0;0;0]; xM=[];

    A=[]; B=[];

    Aeq=[]; Beq=[];

    [x,f_opt,c,d]=fmincon(f,x0,A,B,Aeq,Beq,xm,xM,@opt_con1)

    function [c,ceq]=opt_con1(x)

    % Nelinearna ogranicenja

    % Ogranicenja tipa jednakosti

    ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25; …

    8*x(1)+14*x(2)+7*x(3)-56];

    c=[]; % Ogranicenja tipa nejednakosti

    end

  • Rešenje 2. Pošto je drugo ograničenje tipa jednakosti linearno, ono se može izbaciti iz nelinearnih ograničenja

    ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25; 8*x(1)+14*x(2)+7*x(3)-56];

    i pridružiti linearnim ograničenjima.

    f=@(x)1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);

    x0=[1;1;1];

    xm=[0;0;0]; xM=[];

    A=[]; B=[];

    Aeq= [8,14,7]; Beq= 56;

    [x,f_opt,c,d]=fmincon(f,x0,A,B,Aeq,Beq,xm,xM,@opt_con2)

    function [c,ceq]=opt_con2(x) % Nelinearna ogranicenja

    % Ogranicenja tipa jednakosti

    ceq=x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25;

    c=[]; % Ogranicenja tipa nejednakosti

    end

  • 3.6.3 NELINEARNI OPTIMIZACIONI PROBLEMI SA OGRANIČENJIMA: KORIŠĆENJE ANALITIČKOG IZRAZA ZA GRADIJENT

    Primer. Rešimo nelinearni problem iz prethodnog primera koristeći analitički izraz za gradijent.

    Rešenje. Odredimo Jakobijan za funkciju cilja

    syms x1 x2 x3;

    f=1000-x1*x1-2*x2*x2-x3*x3-x1*x2-x1*x3;

    J=jacobian(f,[x1,x2,x3])

    % Rezultat je: J = [ - 2*x1 - x2 - x3, - x1 - 4*x2, - x1 - 2*x3]

    x0=[1;1;1]; xm=[0;0;0]; xM=[]; A=[]; B=[]; Aeq=[]; Beq=[]; x,f_opt,c,d]=fmincon(@opt_fun2,x0,A,B,Aeq,Beq,xm,xM,@opt_con1, options) function [c,ceq]=opt_con1(x) % Nelinearna ogranicenja % Ogranicenja tipa jednakosti ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25; 8*x(1)+14*x(2)+7*x(3)-56]; c=[]; % Ogranicenja tipa nejednakosti end function [y,Gy]=opt_fun2(x) % funkcija i njen Jakobijan y=1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3); Gy=[-2*x(1)-x(2)-x(3); -4*x(2)-x(1); -2*x(3)-x(1)]; end

  • 3.6.4 PROBLEMI KVADRATNOG PROGRAMIRANJA

    Kod kvadratnog programiranja kriterijumska funkcija je kvadratna po x , dok su ograničenja linearna.

    Opšta forma kvadratnog programiranja je

    1Ciljna funkcija: min

    2

    Ograničenja:

    T T+

    =

    x

    eq eq

    x Hx f x

    Ax b

    A x b

    lb x ub

    Ovde se sa Tx Hx opisuju kvadratni i unakrsni članovi 2i

    x i i j

    x x .

    U Matlabu postoji funkcija quadprog() koja rašava problem kvadratnog programiranja.

  • fmincon – Optimization toolbox

    Rešava problem kvadratnog programiranja sa ograničenjima

    Algoritmi: 'interior-point-convex' (default), 'trust-region-reflective', 'active-set'

    H – simetrična realna matrica

    fun - m-funkcija ili anonimna funkcija kojom se opisuje kriterijumska funkcija.

    x0 - početna vrednost za rešenje.

    A, b – linearna ograničenja tipa nejednakosti

    Aeq, beq - linearna ograničenja tipa jednakosti

    lb, ub – ograničenja po promenljivim

    options – parametri solvera

  • Primer. Rešiti sledeći problem kvadratnog programiranja 2 2 2 2

    1 2 3 4

    1 2 3 4

    1 2 3 4

    1 2 3 4

    min ( 1) ( 2) ( 3) ( 4)

    5

    3 3 2 10

    , , , 0

    x x x x

    x x x x

    x x x x

    x x x x

    − + − + − + −

    + + +

    + + +

    x

    Rešenje. Najpre zapisujemo funkciju cilja u pogodnom obliku 2 2 2 2

    1 1 2 2 3 3 4 4

    2 2 2 2

    1 2 3 4 1 2 3 4

    ( ) 2 1 4 4 6 9 8 16

    2 4 6 8 30

    f x x x x x x x x

    x x x x x x x x

    = − + + − + + − + + − +

    = + + + − − − − +

    x

    % Uzimamo dvostruke koeficijente zbog (1/2)x’*H*x

    H=diag([2,2,2,2]);

    f=[-2,-4,-6,-8];

    A=[1,1,1,1; 3,3,2,1];

    B=[5;10];

    Aeq=[]; Beq=[];

    lb=[0 0 0 0];

    [x,f_opt]=quadprog(H,f,A,B,Aeq,Beq,lb,[],[])

  • 3.6.5 PROBLEMI LINEARNOG PROGRAMIRANJA

    Kod linearnog programiranja kriterijumska funkcija i ograničenja su linearne funkcije po x .

    Opšti oblik linearnog programiranja:

    Ciljna funkcija: min

    Ograničenja:

    T

    =

    x

    eq eq

    f x

    Ax b

    A x b

    lb x ub

    Ograničenja su podeljena na:

    • linearna ograničenja tipa jednakosti eq eq

    A x B= ,

    • linearna ograničenja tipa nejednakosti Ax B

    • ograničenja po promenljivim m M

    x x x

    Postoji veliki broj algoritama za ovu vrstu optimizacije. Simpleks algoritam je jedan od najefikasnijih i implementiran je u Matlab funkciji linprog().

  • linprog – Optimization toolbox

    Rešava problem linearnog programiranja sa ograničenjima

    Algoritmi: 'dual-simplex' (default), 'interior-point-legacy', 'interior-point'

    fun - m-funkcija ili anonimna funkcija kojom se opisuje kriterijumska funkcija.

    x0 - početna vrednost za rešenje.

    A, b – linearna ograničenja tipa nejednakosti

    Aeq, beq - linearna ograničenja tipa jednakosti

    lb, ub – ograničenja po promenljivim

    options – parametri solvera

  • Primer. Rešiti sledeći problem linearnog programiranja

    1 2 3 4 5

    2 3 4 5

    1 2 3 4 5

    1 2 3 4 5

    min( 2 4 3 )

    2 4 2 54

    3 4 5 62

    , 0, 3.32, 0.678, 2.57

    x x x x x

    x x x x

    x x x x x

    x x x x x

    − − − − −

    + + +

    + + − −

    x

    Rešenje.

    f=[-2 -1 -4 -3 -1];

    A=[0 2 1 4 2; 3 4 5 -1 -1];

    B=[54; 62];

    Ae=[]; Be=[];

    xm=[0, 0, 3.32, 0.678, 2.57];

    xM=[inf, inf, inf, inf, inf];

    ff=optimset;

    ff.TolX=1e-15;

    ff.TolFun=1e-10;

    ff.TolCon=1e-9;

    [x,f_opt,flag,izlaz]=linprog(f,A,B,Ae,Be,xm,xM,ff)

  • 3.7 OPTIMIZACIJA UZ POMOĆ GRAFIČKOG INTERFEJSA

    Da bi pokrenuli grafičku aplikaciju za optimizaciju koristimo funkciju optimtool. Kao rezultat izvršavanja ove funkcije kreira se grafički prozor

    tip solvera

    algoritam

    ciljna funkcija

    gradijent cilnje funkcije početno pogađanje

    linearna ograničenja

    granice promenljivih

    funkcija nelinearnih ograničenja

    START optimizacije

    rezultat optimizacije

    kriterijum za zaustavljanje iteracija

  • Primer. Odrediti minimuma sledeće funkcije 2 2

    1 2min ( )f x x= +

    xx

    pod uslovima

    1

    0.5 x opseg

    1 2

    1 0x x− − + linearna ograničenja tipa nejednakosti 2 2

    1 2

    2 2

    1 2

    2

    1 2

    2

    2 1

    1 0

    9 9 0

    0

    0

    x x

    x x

    x x

    x x

    − − +

    − − +

    − + − +

    nelinearna ograničenja tipa nejednakosti

    koristeći grafički alat optimtool. Početno pogađanje je 1

    3x = i 2

    1x = .

  • Rešenje.

    1. Korak: Kreiramo kriterijumsku funkciju u obliku m-funkcije objecfun.m:

    function f = objecfun(x)

    f = x(1)^2 + x(2)^2; end

    2. Korak: Kreiramo linearna ograničenja i ograničenje tipa opsega

    1 2 1 21 0 1x x x x− − + − − − A=[-1 -1]; b = -1;

    Ae=[]; Be=[];

    10.5 x xm=[0, -inf]; xM=[inf, inf];

    3. Korak: Kreiramo m-funkciju nelinearnih ograničenja nonlconstr.m (sadrži ograničenja tipa nejednakosti i jednakosti):

    function [c,ceq] = nonlconstr(x)

    % Nelinearna ogranicenja

    % Ograničenja tipa nejednakosti (

  • 4. Korak: Podešavamo i izvršavamo optimizacioni problem pomoću grafičkog interfejsa

  • 5. Korak: Izborom opcije iz menija File/Generate Code može se snimiti Matlab programski kod koji je optimtool automatski generisao prilikom optimizacije u obliku m-funkcije (npr. primerOptimTool.m) koju kasnije možemo po potrebo da koristimo:

    function [x,fval,exitflag,output,lambda,grad,hessian] =

    primerOptimTool(x0,Aineq,bineq,lb)

    %% This is an auto generated MATLAB file from Optimization Tool.

    %% Start with the default options

    options = optimoptions('fmincon');

    %% Modify options setting

    options = optimoptions(options,'Display', 'off');

    [x,fval,exitflag,output,lambda,grad,hessian] = ...

    fmincon(@objecfun,x0,Aineq,bineq,[],[],lb,[],@nonlconstr,options);

  • 3.8 GLOBALNA OPRIMIZACIJA

    Optimizacione metode možemo podeliti na lokalne i globalne optimizacione metode.

    Lokalne optimizacione metode određuju neki od lokalnih minimuma kriterijumske funkcije, dok globalne optimizacione metode pokušavaju da pronađu njen najmanji lokalni minimum.

    Problemi koji se javljaju kod lokalnih metoda:

    • zarobljavanje rešenja u lokalnom ekstremu • loša konvergencija u oblastima sa malim gradijentima • problemi sa konvergencijom kada se gradijenti razlikuju za red veličine • nepoznata priroda funkcije i njeni analitički izvodi

    Metode globalne optimizacije naširoko pretražuju prostor mogućih rešenja na kontrolisano slučajan način, a ne lokalno u okolini nekog ekstrema, kao što to rade lokalne metode optimizacije.

    Metode globalne optimizacije su zasnovane na ideji da se, imitiranjem prirode po principu preživljavanja najsposobnijih, pokuša sa pronalaženjem optimuma složenih funkcija više promenljivih, koje predstavljaju matematičku apstrakciju složenog inženjerskog problema.

  • U prirodi se sa optimizacijom susrećemo na svakom koraku:

    − od fenomena koji se odvijaju na nivou mikrosveta (npr. kristalizacija u kojoj molekuli zauzimaju položaj minimuma energije),

    − do procesa evolucije u kojoj se kroz princip preživljavanja najsposobnijih dolazi do jedinki koje su sve bolje adaptirane na uslove u “okruženju”.

    Globalne optimizacione metode se dele na determinističke i stohastičke.

    Prve metode koriste deterministička izračunavanja kako bi odredili optimalnu vrednost, dok druge metode koriste generatore slučajnih brojeva.

  • Global optimization toolbox je dodatak Matlaba namenjen za rešavanje problema globalne optimizacije.

    Sadrži sledeće solvere za determinističku, odnosno stohastičku globalnu optimizaciju:

    Solver Convergence Characteristics

    GlobalSearch Fast convergence to local optima for smooth problems

    Deterministic iterates

    Gradient-based

    Automatic stochastic start points

    Removes many start points heuristically

    MultiStart Fast convergence to local optima for smooth problems

    Deterministic iterates

    Can run in parallel

    Gradient-based

    Stochastic or deterministic start points, or combination of both

    Automatic stochastic start points

    Runs all start points

    Choice of local solver: fmincon, fminunc, lsqcurvefit, or lsqnonlin

    patternsearch Proven convergence to local optimum; slower than gradient-based solvers

    Deterministic iterates

    Can run in parallel

    No gradients

    User-supplied start point

  • Solver Convergence Characteristics

    surrogateopt Proven convergence to global optimum for bounded problems; slower than gradient-based solvers; generally stops by reaching a function evaluation limit or other limit

    Stochastic iterates

    Can run in parallel

    Best used for time-consuming objective functions

    Requires bound constraints, accepts nonlinear inequality constraints

    Allows integer constraints

    No gradients

    Automatic start points or user-supplied points, or a combination of both

    particleswarm No convergence proof Stochastic iterates

    Can run in parallel

    Population-based

    No gradients

    Automatic start population or user-supplied population, or a combination of both

    Only bound constraints

    ga No convergence proof Stochastic iterates

    Can run in parallel

    Population-based

    No gradients

    Allows integer constraints

    Automatic start population or user-supplied population, or a combination of both

    simulannealbnd Proven to converge to global optimum for bounded problems with very slow cooling schedule

    Stochastic iterates

    No gradients

    User-supplied start point

    Only bound constraints

  • Solveri GlobalSearch i MultiStart primenjuju se na probleme sa glatkim funkcijama cilja i ograničenja.

    Ovi solveri traže globalni minimum ili skup lokalnih minimuma.

    GlobalSearch i MultiStart rade pokretanjem lokalnog solvera, kao što je fmincon, sa različitim početnim pogađanjima.

    U opštem slučaju početna pogađanja su slučajna. Specijalno, za MultiStart može se zadati skup početnih pogađanja.

  • 3.8.1 DETERMINISTIČKA GLOBALNA OPTIMIZACIJA

    GlobalSearch, MultiStart, patternsearch, createOptimProblem, run

  • Primer. Odrediti globalni minimum funkcije 2( ) 4sin(5 )f x x x= + za 5 5x− .

    Rešenje.

    fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

    Pomoću solvera GlobalSearch

    rng default % Setuje generator slučajnih brojeva na podrazumevano stanje

    1. Setovanje lokalnog optimizacionog solvera (npr. fmincon)

    opts = optimoptions(@fmincon);

    2. Kreiranje optimizacionog problema

    problem = createOptimProblem('fmincon','objective', fun, ... ,'x0',3,'lb',-5,'ub',5,'options',opts);

    3. Kreiranje globalnog solvera sa podrazumevanim vrednostima

    gs = GlobalSearch;

    4. Izvršavanje GlobalSearch solvera za nalaženje rešenja ili više lokalnih rešenja optimizacionog problema

    [x,f] = run(gs,problem)

  • Pomoću solvera MultiStart

    rng default % Setuje generator slučajnih brojeva na podrazumevano stanje

    1. Setovanje lokalnog optimizacionog solvera (npr. fmincon)

    opts = optimoptions(@fmincon);

    2. Kreiranje optimizacionog problema

    problem = createOptimProblem('fmincon','objective',... fun,'x0',3,'lb',-5,'ub',5,'options',opts);

    3. Kreiranje globalnog solvera sa podrazumevanim vrednostima

    ms = MultiStart;

    4. Izvršavanje GlobalSearch solvera za nalaženje rešenja ili više lokalnih rešenja optimizacionog problema

    [x,f] = run(ms,problem,20)

  • 3.8.2 STOHASTIČKA GLOBALNA OPTIMIZACIJA

    ga, particleswarm, simulannealbnd, surrogateopt

  • Primer. Odrediti globalni minimum funkcije 2( ) 4sin(5 )f x x x= + za 5 5x−

    Rešenje 1. Pomoću solvera ga (genetički algoritam)

    1. Kriterijumska funkcija

    fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

    2. Ograničenja

    lb = [-5]; ub = [5]; A = []; b = []; Aeq = []; beq = [];

    3. Rešavanje optimizacionog problema pomoću ga sa ograničenjima.

    rng default % Setuje generator slučajnih brojeva na podrazumevano stanje opts = optimoptions(@ga,'Display','iter'); nvars = 1; [x,f,flag,output,population,scor] = ... ga(fun,nvars,A,b,Aeq,beq,lb,ub,[],opts)

  • Rešenje 2. Pomoću solvera particleswarm ("roj čestica")

    1. Kriterijumska funkcija

    fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

    2. Ograničenja

    lb = [-5]; ub = [5];

    3. Rešavanje optimizacionog problema pomoću particleswarm sa ograničenjima.

    rng default % Setuje generator slučajnih brojeva na podrazumevano stanje opts = optimoptions(@particleswarm,'Display','iter'); nvars = 1; x = particleswarm(fun,nvars,lb,ub)

  • Rešenje 3. Pomoću solvera simulannealbnd ("simulirano kaljenje")

    1. Kriterijumska funkcija

    fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

    2. Ograničenja

    lb = [-5]; ub = [5];

    3. Početno pogađanje

    x0=4;

    3. Rešavanje optimizacionog problema pomoću simulannealbnd sa ograničenjima.

    opts = optimoptions(@simulannealbnd,'Display','iter'); x = simulannealbnd(fun,x0,lb,ub)

  • Rešenje 4. Pomoću solvera surrogateopt

    1. Kriterijumska funkcija

    fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

    2. Ograničenja

    lb = [-5]; ub = [5];

    3. Rešavanje optimizacionog problema pomoću surrogateopt sa ograničenjima.

    rng default % Setuje generator slučajnih brojeva na podrazumevano stanje opts = optimoptions(@surrogateopt,'Display','iter'); x = surrogateopt(fun,lb,ub,[],opts)

  • 4 INTERPOLACIJA

    Interpolacija je metoda izračuna vrednosti funkcije u novim tačkama koje se nalaze unutar intervala definiranog diskretnim skupom podataka.

    Interpolacija se koristi kada imamo:

    − skup vrednosti u nekom intervalu, ali nas zanima da izračunamo i ostale vrednosti unutar tog intervala,

    − merenja, ali želimo proceniti još neka merenja koja nismo stigli izmeriti, a nalaze se unutar tog intervala

    Dakle, interpolacijom se mogu popuniti nedostajući podaci, ujednačiti postojeći podaci, napraviti predviđanja i dr.

    U MATLAB®-u postoje dva pristupa interpolacije:

    − interpolacija gridovanim podacima,

    − interpolacija raspršenih podataka.

    Interpolacija gridovanim podacima Gridovani podaci su raspoređeni

  • Raspršeni podaci se sastoje od skupa tačaka x i odgovarajućih vrednosti v, pri čemu tačke nemaju strukturu ili poredak između njihovih relativnih lokacija.

  • U interpolaciji zasnovanoj na mreži, podaci koji se interpoliraju predstavljeni su uređenom mrežom.

    Na primer, raspored merenja temperature preko pravougaone ravne površine u intervalima od 1 cm vertikalno od vrha do dna i horizontalno sleva nadesno smatra se 2-D mrežnim podacima.

    Interpolacija zasnovana na mreži pruža efikasan način za aproksimaciju temperature na bilo kom mestu između tačaka mreže.

    Mrežni vektori. Ulazi koji se prosleđuju mrežnim funkcijama nazivaju se mrežnim vektorima. Mrežni vektori implicitno definišu mrežu. Posmatrajmo dva vektora, x1gv = (1: 3) i x2gv = (1: 5). Ove vektore možemo zamisliti kao skup koordinata u pravcu x1 i skup koordinata u pravcu x2, na sledeći način. Svaka strelica ukazuje na jednu lokaciju.

  • Monotone i nemonotone mreže. Mrežni vektori mogu biti monotoni ili nemonotoni. Monotoni vektori sadrže vrednosti koje se ili povećavaju ili smanjuju u datoj dimenziji. Suprotno tome, nemonotoni vektori sadrže vrednosti koje fluktuiraju. Primer nemonotone mreže:

    [X1,X2] = ndgrid([2 4 6 3 1])

    Razlikujemo uniformne i neuniformne mreže.

  • Vrste prikaza mreža

    MATLAB vam omogućava da predstavite mrežu u jednom od tri prikaza: puna mreža, kompaktna mreža ili podrazumevana mreža.

    Kod pune mreže sve tačke mreže su eksplicitno definisane. Izlazi Matlab funkcija ndgrid i meshgrid definišu punu mrežu.

    Eksplicitna definicija svake tačke u mreži je skupa u smislu memorije. Kompaktna mreža predstavlja način za umanjenje memorijskog troška pune mreže. Kompaktni prikaz mreže smešta mrežne vektore umesto tačke cele mreže.

    Degenerativna mreža je poseban slučaj mreže gde su jedna ili više dimenzija mreže svodi na pojedinačne tačke

    [X1,X2,X3] = ndgrid(1:2:10,7:7,1:3:15);

  • Razlika između interpolacija i fitovanja

    Metode interpolacije dostupne u MATLAB-u kreiraju interpolacione funkcije koje prolaze kroz tačke koje odgovaraju podacima. Suprotno tome, algoritmi za fitovanje krivih i površina ne prolaze nužno kroz ove tačke.

    Metode interpolacije

    Interpolacija zasnovana na mreži nudi nekoliko različitih metoda interpolacije. Kada se bira metod interpolacije, treba imati na umu da neke metode zahtevaju više memorije ili duže vreme računanja od drugih. Zbog toga se pravi kompromis kako bi se postigla željena glatkoća rezultata. Sledeća tabela daje pregled kompromis, kompromisa i zahteve za svaku metodu.

  • Method Description Continuity Requirements

    Nearest Neighbor

    The interpolated value at a query point is the value at the nearest sample grid point.

    Discontinuous • Requires 2 grid points in each dimension.

    Next Neighbor

    The interpolated value at a query point is the value at the next sample grid point.

    Discontinuous • Available for 1D interpolation only.

    • Requires at least 2 grid points.

    Previous Neighbor

    The interpolated value at a query point is the value at the previous sample grid point.

    Discontinuous • Available for 1D interpolation only.

    • Requires at least 2 grid points.

    Linear The interpolated value at a query point is based on linear interpolation of the values at neighboring grid points in each respective dimension.

    C0 • Requires at least 2 grid points in each dimension.

    Pchip The interpolated value at a query point is based on a shape-preserving piece-wise cubic interpolation of the values at neighboring grid points.

    C1 • Available for 1D interpolation only.

    • Requires at least 4 grid points.

    Cubic The interpolated value at a query point is based on cubic interpolation of the values at neighboring grid points in each respective dimension.

    C1 • Grid must have uniform spacing, though the spacing in each dimension does not have to be the same.

    • Requires at least 4 points in each dimension.

    Modified Akima

    The interpolated value at a query point is based on a piecewise function of polynomials with degree at most three evaluated using the values of neighboring grid points in each respective dimension. The Akima formula is modified to avoid overshoots.

    C1 • Requires at least 2 grid points in each dimension

    Spline The interpolated value at a query point is based on a cubic interpolation of the values at neighboring grid points in each respective dimension.

    C2 • Requires 4 points in each dimension.

  • MATLAB pruža podršku za interpolaciju zasnovanu na mreži na nekoliko načina:

    Familija interp funkcija: interp1, interp2, interp3 i interpn.

    Klasa griddedInterpolant.

    Interpolacija sa interp familijom funkcija:

    − interp1 (1-D interpolacija – lookup tabela))

    − interp2 (interpolacija sa 2-D mrežom podataka u meshgrid formatu)

    − interp3 (interpolacija sa 3-D mrežom podataka u meshgrid formatu)

    − interpn (interpolacija sa 1, 2, 3-D i N-D mrežom podataka u ngrid formatu)

  • 4.1 1-D INTERPOLACIJA

    Primer. Neka su pomoću sledećih izraza generisani su podaci

    x = 0:pi/4:2*pi; y = sin(x);

    Koristeći različite funkcije za interpolaciju, izvršiti interpolaciju podataka za sledeće vrednosti promenljive x:

    xq = 0:pi/16:2*pi;

    Rešenje.

    % Linearna interpolacija yq1 = interp1(x,y,xq); plot(x,y,'o',xq,yq1,':.'); xlim([0 2*pi]); legend('podaci','interpolacija') title('(Default) Linear Interpolation');

    % Spline interpolacija

  • yq2 = interp1(x,y,xq,'spline'); plot(x,y,'o',xq,yq2,':.'); xlim([0 2*pi]); legend('podaci','interpolacija') title('Spline Interpolation');

    % Nearest interpolacija yq2 = interp1(x,y,xq,'nearest'); plot(x,y,'o',xq,yq2,':.'); xlim([0 2*pi]); legend('podaci','interpolacija') title('Nearest Interpolation')

  • Primer. Date su vrednosti funkcije bez navođenja vrednosti nezavisne promenljive.

    y = [0 1.41 2 1.41 0 -1.41 -2 -1.41 0];

    Za podrazumevane vrednosti nezavisne promenljive uzimaju se vrednosti od 1 do vrednosti dužine vektora y: x = 1:9 Definišemo skup tačaka koje nedostaju između podrazumevanih tačaka za x:

    xq = 1.5:8.5;

    Izračunavamo y za xq.

    yq = interp1(y,xq);

    i crtamo grafik

    plot((1:9),y,'o',xq,yq,'*'); legend('y','yq');

  • 4.1.1 2-D INTERPOLACIJA

    Primer. Koristeći funkciju sin(x)/x generisani su sledeći podaci

    [X,Y] = meshgrid(-10:0.75:10); R = sqrt(X.^2 + Y.^2)+ eps; V = sin(R)./(R);

    Crta se grafik originalnih podataka

    figure, surf(X,Y,V) title('Original Sampling');

    Kreira se mreža sa korakom od 0.25.

    [Xq,Yq] = meshgrid(-10:0.25:10);

    Interpoliraju se podaci u tačkama mreže koristeći cubic interpolaciju

    Vq = interp2(X,Y,V,Xq,Yq,'cubic');

    Crta se grafik interpoliranih podataka

    figure, surf(Xq,Yq,Vq); title('Cubic Interpolation Over Finer Grid');

  • 4.1.2 N-D INTERPOLACIJA

    Primer. 4-D Interpolacija. Data je

    funkcija 2 2 2

    ( , , , ) x y zf x y z t te− − −= .

    Kreirati podatke u tačkama mreže sa koracima 0.2, 0.2, 0.2 i 2 po x, y, z i t osi. Nakon toga izvršiti interpolaciju podataka u tačkama mreže sa korakom 0.05, 0.05, 0.05 i 0.5 po x, y, z i t osi.

    Rešenje.

    f = @(x,y,z,t) t.*exp(-x.^2 - y.^2 - z.^2); [x,y,z,t] = ndgrid(-1:0.2:1,-1:0.2:1,-1:0.2:1,0:2:10); V = f(x,y,z,t);

    % kreira se mreža za interpolaciju [xq,yq,zq,tq] = ... ndgrid(-1:0.05:1,-1:0.08:1,-1:0.05:1,0:0.5:10);

    % Interpoliraju se podaci Vq = interpn(x,y,z,t,V,xq,yq,zq,tq); size(Vq)

  • 5 FITOVANJE KRIVIH POMOĆU PODATAKA Pod fitovanjem krivih podrazumevamo određivanje (provlačenje) izabranog tipa glatke krive tako da ona optimalno prolazi u blizini datih podataka.

    Matematički gledano fitovanje krivih predstavlja sledeći specijalni problem optimizacije (metod najmanjih kvadrata)

    ( )22

    21 1

    min ( , ) min ( , )N N

    i i i i

    data data data data

    i i

    F x y F x y= =

    − = − x x

    x x

    gde su:

    • ( , )data datay F x= x je izabrana fukcija po vektoru x (podesivi parametri) i

    promenljivoj datax

    • N je broj podataka

    • ( , ),i idata datax y 1, ,i N= su parovi podataka

    Ako je ()F funkcija dve promenljive, ( , , )data data dataz F x y= x onda govorimo o

    fitovanju površine pomoću podataka,

    ( )2

    1

    min ( , , )N

    i i i

    data data data

    i

    F x y z=

    −x

    x

    pri čemu su podaci dati u obliku ( , , ),i i idata data datax y z 1, ,i N=

  • lsqcurvefit – Optimization toolbox

    Rešava problem nelinearnog fitovanja krive u smislu najmanih kvadrata

    Algoritmi: 'trust-region-reflective' (default), 'levenberg-marquardt'

  • Primer. Pretpostavimo da raspolažemo sa mernim podacima o vremenu (xdata) i vrednosti veličine (ydata)

    xdata = [0.9 1.5 13.8 19.8 24.1 28.2 35.2 60.3 74.6 81.3]; ydata = [455.2 428.6 124.1 67.3 43.2 28.1 13.1 -0.4 -1.3 -1.5];

    i želimo da odredimo parametre [ (1) (2)]Tx x=x kako bi fitovali model

    ( )( , ) (1)exp (2)data data datay F x x x x= =x

    Kreiramo model

    fun = @(x,xdata)x(1)*exp(x(2)*xdata);

    Fitujemo model koristeći početnu tačku x0 = [100,-1].

    x0 = [100,-1];

    x = lsqcurvefit(fun,x0,xdata,ydata)

    Crtamo podatke i fitovanu krivu

    vreme = linspace(xdata(1),xdata(end));

    plot(xdata,ydata,'ko', ... vreme,fun(x,vreme),'b-')

    legend('Data','Fitivana kriva')

    title('Podaci i fitovana kriva')

  • fitType – tip krive ili površine za fitovanje:

    Library Model Name Description

    'poly1' Polinom reda 1

    'poly2' Polinom reda 2

    'polyn' Polinom reda n

    'poly11' Linearna polinomna površina

    'polymn' Polinomna površ reda m po x i reda n po y

    'linearinterp' Piecewise linear interpolation

    'cubicinterp' Piecewise cubic interpolation

    'smoothingspline' Smoothing spline (curve)

    'lowess' Local linear regression (surface)

    fit – Curve fitting toolbox

    Fituje krivu ili površ za date podatke

    Algoritmi: 'Trust-Region' (default), 'Levenberg-Marquardt'

  • Primer. Fitovati različite krive nad podacima koji su dobijeni ucitavanjem fajla census:

    cdate=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990]

    pop= [3.9000 5.3000 7.2000 9.6000 12.9000 17.1000 23.1000 31.4000 38.6000 50.2000 62.9000 76.0000 92.0000 105.7000 122.8000 131.7000 150.7000 179.0000 205.0000 226.5000 248.7000]

    Resenje.

    load census % xdate i pop su redom xdata i ydata podaci u ovom fajlu

    xdata=cdate; ydata=pop;

    f1=fit(xdata,ydata,'poly2') % fitovanje poinomom drugog reda figure, plot(f1,xdata,ydata)

    f2=fit(xdata,ydata,'poly3') % fitovanje poinomom drugog reda figure, plot(f2,xdata,ydata) fun=@(p1,p2,p3,x) (p1-p2*exp(p3.*x)); % fitovanje anonimnom funkcijom

    f3=fit(xdata,ydata,fun,'StartPoint',[0,0,0]) figure, plot(f3,xdata,ydata)

  • Primer. Učitati podatke iz fajla franke (x, y, z) i na osnovu njih fitovati površinu polinomskog tipa.

    Rešenje.

    load franke; % podaci: x, y i z surffit = fit([x,y],z,'poly23')

    Grafik fitovane površi

    plot(surffit,[x,y],z)

    Grafik reziduala (grešaka)

    plot(surffit,[x,y],z,'Style','Residuals')

    Linear model Poly23:

    surffit(x,y) = p00 + p10*x + p01*y + p20*x^2 + p11*x*y + p02*y^2 + p21*x^2*y + p12*x*y^2 + p03*y^3

  • 5.1 FITOVANJE KRIVIH POMOĆU APLIKACIJE CFTOOL

    Aplikacija Curve Fitting (cftool) pruža fleksibilan interfejs pomoću koga se može interaktivno prilagoditi kriva ili površina podacima i izvršiti vizuelni pregled.

    Aplikacija se poziva naredbom

    cftool

    Primer. Koristeći aplikaciju cftool fitovati različite krive nad podacima koji su dobijeni ucitavanjem fajla census.

    Rešenje.

    load census % xdate i pop su redom xdata i ydata podaci u ovom fajlu

    cftool

  • 6 NEURONSKE MREŽE I NJIHOVA PRIMENA U INŽENJERSTVU 6.1 OSNOVE NEURONSKIH MREŽA 6.1.1 KONCEPT I STRUKTURA NEURONSKIH MREŽA

    Struktura veštačkog neurona prikazana je na slici, gde su:

    1 2, , ,

    nx x x - ulazni signali neurona ( )f - aktivaciona funkcija neurona

    1 2, , ,

    nw w w - težinski koeficijenti neurona

    1

    ( ) ( )n

    i i

    i

    y f u f w x b=

    = = − - izlaz neurona

    b - prag neurona

  • Aktivacione funkcije u Matlabu:

    • tansig(x), logsig(),

    • hardlims(), radbas(),

    • satlin(), tribas()

    tansig funkcija

    2

    2( ) 1

    1 xf x

    e−= −

    +

    logsig funkcija

    1( )

    1 xf x

    e−=

    +

  • • Više neurona se može povezati u jednu mrežu koja se naziva neuronska mreža.

    • U prikazanoj mreži postoje tri sloja:

    1. jedan ulazni sloj

    2. jedan ili više skrivenih slojeva sa više neurona po sloju

    3. jedan izlazni sloj sa jednim ili više neurona

    Za izlazni sloj se obično usvaja poslednji skriveni sloj.

  • • Razlikujemo više tipova neuronskih mreža.

    1. Prema broju slojeva NM delimo na

    − jednoslojne i

    − višeslojne.

    2. Prema smeru prostiranja signala kroz mrežu, NM delimo na:

    − feedforward mreže (FFN, nerekurentne, nepovratne, statičke), viši slojevi ne vraćaju informacije nižim slojevima

    − feedback mreže (FBN, rekurentne, povratne, dinamičke), viši slojevi mreže vraćaju informacije ka nižim slojevima

    3. Prema vrsti veza između neurona NM se dele na:

    − slojevite, neuroni tako raspoređeni da formiraju slojeve mreže,

    − potpuno povezane mreže, izlaz jednog neurona se vodi ka ulazu svih neurona u mreži,

    − celularne mreže, samo su susedni neuroni međusobno povezani

    4. Prema vrsti podataka koje obrađuju NM se mogu podeliti na:

    − analogne i

    − diskretne.

  • • Svaka neuronska mreža se mora trenirati.

    • Treniranje mreže podrazumeva podešavanje koeficijenta (težina) mreže (w i b) tako da mreža ima zadato ponašanje.

    • Podešavanje koeficijenata mreže se vrži iterativno tako da izlaz mreže (Output) za date ulaze mreže (Input) bude što približniji stvarnim (ciljnim) vrednostima podataka za obučavanje (Target).

    • Prema vrsti učenja i pravcu prostiranje signala neuronske mreže se mogu podeliti na:

    Za feedforward-mreže:

    − Perceptron

    − Adaline, Madaline

    − Backpropagation (BP), ...

    Za feedback mreže

    − Brain-State-in-a-Box (BSB)

    − Fuzzy kongitivne mape - Fuzzy Congitive Map (FCM)

    − Bolcmanova mašina - Boltzmann Machine (BM)

  • Standardni koraci pri projektovanju neuronskih mreža za potrebe fitovanja funkcija, klasifikacije i klasterovanja podataka, kao i analize vremenskih serija:

    1. Prikupljanje podataka

    2. Kreiranje mreže

    3. Konfigurisanje mreže

    4. Inicijalizacija težina i pomeraja (pragova) mreže

    5. Treniranje mreže

    6. Validacija mreže

    7. Korišćenje mreže

  • 6.1.2 PROJEKTOVANJE NEURONSKIH MREŽA POMOĆU APLIKACIJE nnstart

    Koristeći aplikaciju nnstart u Deep Learning Toolbox može se na jednostavan i vuzuelan način projektovati neuronska mreža za potrebe:

    1. fitovanja podataka (nftool), 2. klasifikacije podataka (nprtool), 3. klasterizacije

    podataka (nctool) 4. vremenskih serija

    (ntstool)

    Aplikacija se poziva komandom

    nnstart

    nakon čega se bira jedna od gore navedenih opcija.

  • 6.2 FITOVANJE PODATAKA POMOĆU NEURONSKIH MREŽA (nftool)

    Klasičnu funkciju sa podesivim parametrima kojom se fituju podaci možemo zameniti feedforward neuronskom mrežom (FFN), jer i ona poseduje podesive koeficijente.

    Obučavanjem izabrane konfiguracije FFN mreže vrši se podešavanje njenih koeficijenata tako da izlaz mreže optimalno prolazi u okolini raspoloživih podataka za treniranje (tj. mreža fituje date podatke).

    1. Sa grafičkog prozora nnstart bira se opcija Fitting app

  • Kao rezultat prethodnog izbora, automatski se bira dvoslojna FFN sa jednim skrivenim slojem i jednim izlaznim slojem.

    2. Biramo Next.

  • 3. Zadajemo ulazne (Inputs) i stvarne izlazne (Targets) podatke iz padajuće liste. Ovi podaci se trenutno nalaze u radnom prostoru. Kao alternativa, možemo se poslužiti podacima iz baze unapred pripremljenih podataka izborom opcije Load Example Data Set.

    4. Biramo Next.

  • 5. Selektujemo Chemical a potom biramo Import. U desnom delu prozora su opisani podaci koje učitavamo: chemicalInputs (8x498), chemicalTargets (1x498)

  • 6. Biramo deo podataka za treniranje, validaciju i za testiranje.

    Pomoću ovih podešavanja ulazni podaci i ciljni podaci biće nasumično podeljeni u tri skupa:

    • 70% će se koristiti za treniranje mreže.

    • 15% će se koristiti za validaciju mreže (za ocenu generalizuje mreže i za prekid treniranja pri prekomernom obučavanju mreže).

    • Poslednjih 15% koristiće se kao potpuno nezavisan test za generalizaciju mreže.

    7. Biramo Next

  • 8. Standardna mreža koja se koristi za fitovanje funkcija je dvoslojna FFM mreža sa sigmoidnom akrivacionom funkcijom u skrivenom sloju i linearnom aktivacionom funkcijom u izlaznom sloju.

    Podrazumevani broj skrivenih neurona je podešen na 10.

    Ovaj broj se može povećati kasnije ako su performanse trenrane mrežne loše.

    9. Biramo Next

  • 9. Treniramo izabranu NM. Iz padajuće liste biramo algoritam za treniranje a potom kliknemo na Next. Algoritam Levenberg-Markuardt (trainlm) se preporučuje za većinu problema. Za podatke sa šumom i za male probleme (small problems) koristi se Bajesova regularizacija (trainbr) koja bolje rešenje, ali traje duže. Ta velike probleme preporučuje se skalirani konjugatni gradijent (trainscg) jer on koristi procene gradijenta koje su memorijski efikasnije od Jacobianovih proračuna. U ovom orimeru koristimo podrazumevani Levenberg-Markuardt algoritam.

    Treniranje se nastavlja sve dok greška validacije ne uspeva da se smanji za šest iteracija (zaustavljanje validacije).

    10. Pokrećemo treniranje izborom Train.

  • 11. Automatski se pokreće alat za treniranje mreže (nntraintool) i prikazuje se izveštaj o izvršenom treniranju.

    12. U odeljku Plots kliknite na Regresija. Ovo se koristi za potvrđivanje performansi mreže.

  • 13. Regresioni grafici.

    Sledeći regresioni grafici prikazuju izlaze mreže u odnosu na stvarne vrednosti izlaza u slučaju skupa za treniranje, validaciju i testiranje.

    Za savršeno fitovanje, podaci bi trebalo da leže duž linije nagiba 45 stepeni, gde su izlazi mreže jednaki stvarnim izlaznim podacima.

    Vrednost koeficijenta korelacije R između stvarnih izlaza podataka i izlaza mreže je blizak jedinici.

    Dakle, u našem slučaju, fitovanje je poprilično dobro za sve skupove podataka.

  • 14. Da bi se dodatno verifikovala performansa mreže potrebno je analizirati i histogram greške. U polju Plots na dijagramu treba izabrati Error Histogram.

    Plave trake predstavljaju podatke za trening, zelene trake podatke za validaciju, a crvene trake podatke za testiranje. Histogram nam može ukazati na autlajere (autlajer je podatak koji je udaljen od ostalih podataka). Ovde autlajeri predstavljaju podatke u kojima je fitovanje znatno lošije u odnosu na većinu podataka. U ovom primeru možemo videti da većina podataka pada između -5 i 5- Međutim, postoji nekoliko podataka, kandidata za autlajere, u skupovima za trening, validaciju i testiranje, čije greške ispadaju iz opsega -5, 5. Ovi kandidati za autlajere su takođe vidljivi na regresionom grafiku. Potrebno je proveriti ove potencijalne autlajere.

  • 15. a) Ako su potrebni još tačniji rezultati, mrežu treba ponovo trenirati tako što se bira Train Again u nftool. Ovo će promeniti početne koeficijente mreže i nakon ponovnog treninga može se dobiti poboljšana mreža.

    b) Ako performanse mreže nisu zadovoljavajuće, potrebno je učiniti jednu od sledećih radnji:

    • obuci mrežu ponovo,

    • povećati broj neurona,

    • Upotrebiti veći skup podataka za obučavanje.

    c) Ako je performansa mreže na trening skupu dobra, ali je na skupu za testiranje znatno lošija, to ukazuje na prekomerno prilagođavanje mreže podacima, pa smanjenje broja neurona može poboljšati rezultat.

    d) Ako je performansa mreže za trening skup loša, potrebno je povećati broj neurona.

    e) Ako je performansa mreže zadovoljavajuća, klikniti na Next.

  • 16. Dobija se dijalog Deploy Solution koji služi za generisanje

    1. MATLAB funkcije ili 2. Simulink® dijagrama za potrebe simulacije neuronske mreže.

    Pritisnite Next.

  • 17. Pomoću Simple Script ili Advanced Script može se generisati skripta za treniranje i testiranje NM.

    Dalje, moguće je snimiti podatke vezane za mrežu u radnom prostoru Matlaba.

  • 6.3 PREDIKCIJA VREMENSKIH SERIJA POMOĆU DINAMIČKIH NEURONSKIH MREŽA 6.3.1 MODELOVANJE SISTEMA POMOĆU VREMESKIH SERIJA ULAZA I IZLAZA

    Pod vremenskom serijom podrazumevamo uređeni niz opservacija (mernih podataka).

    Pri tome se uređivanje najčešće vrši s obzirom na vreme uzorkovanja i to obično u jednakim vremenskim intervalima.

    U klasičnoj statističkoj analizi za elemente niza opservacija uvode se sledeće dve pretpostavke: elementi su međusobno nezavisni međusobno nezavisni i njihov vremenski poredak nije bitan.

    U analizi vremenskih serija uvode se suprotne pretpostavke: elementi opservacije su međusobno zavisni i njihov vremenski poredak nije bitan.

    Međusobnu zavisnost opservacija u analizi vremenskih serija koristimo u cilju formiranja modela vremenske serije.

    Model zatim koristimo da na osnovu prošlih, prognoziramo buduće opservacije.

  • Vremenske serije možemo iskoristiti za modelovanje i predikciju realnih sistema.

    Posmatramo sistem čija je blok šema prikazana na slici, gde su: ( )x t ulaz sistema

    (opservacija) u trenutku t a ( )y t izlaz sistema (opservacija) u trenutku t .

    Napomena: Ako sa ( 1)x t − označimo prethodnu opservaciju, onda opservacija

    ( 2)x t − predstavlja prethodnu opservaciju opservacije ( 1)x t − . Drugim rečima, za

    proizvoljno k , ( ( 1))x t k− + predstavlja prethodnu opservaciju za ( )x t k− .

    Posmatrajmo sledeće dve vremenske serije podataka ulaza i izlaza sistema:

    ( 1),..., ( )x t x t d− −

    ( 1),..., ( )y t y t d− −

    Dužina ovih serija iznosi d .

    Sistem

  • Koristeći ove vremenske serije možemo formulisati različite tipove modela sistema.

    1. Ako izlaz ( )y t jednog dinamičkog sistema zavisi od nekoliko (d ) prethodnih

    vrednosti (opservacija) ulaza ( 1),..., ( )x t x t d− − i izlaza ( 1),..., ( )y t y t d− − , tada

    model sistema možemo matematički predstaviti sledećim NARX (Nonlinear AutoRegressive eXogenous - nelinearna autoregresija sa spoljnim ulazom) modelom:

    ( ) ( 1),..., ( ), ( 1),..., ( )y t f x t x t d y t y t d= − − − −

    2. Ukoliko pretpostavimo da izlaz sistema zavisi samo od nekoliko (d ) prethodnih opservacija izlaza ( 1),..., ( )y t y t d− −

    dobijamo tzv. NAR (Nonlinear AutoRe