View
1
Download
0
Category
Preview:
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
Recommended