Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
I. UVOD U SOFTVERSKI PAKET MATLAB 1. POKRETANJE MATLAB-A, OSNOVNI PROZORI I TOOLBAR-I MATLAB-A
Matlab dodaci - TOOLBOX
Kolekcija (biblioteka) izabranih funkcija namenjena rešavanju problema iz određenje
oblasti.
Aerospace Toolbox
Bioinformatics Toolbox
Communications Toolbox
Control System Toolbox
Curve Fitting Toolbox
Data Acquisition Toolbox
Genetic Algorithm and Direct Search Toolbox
Image Processing Toolbox
Instrument Control Toolbox
Model-Based Calibration Toolbox
Model Predictive Control Toolbox
Neural Network Toolbox
Optimization Toolbox
Partial Differential Equation (PDE) Toolbox
Robust Control Toolbox
Signal Processing Toolbox
Statistics Toolbox
Symbolic Math Toolbox
System Identification Toolbox
TIPOVI PODATAKA
Numerički
Karakteri i stringovi
Nizovi ćelija sa stringovima
Logički
Simbolički
Kategorijski nizovi
Datum i vreme
Tabele
Strukture
Vremenske serije
Tip podataka za identifikaciju
NUMERIČKI PODACI
Celi brojevi:
357, -82475
Realni brojevi:
3, -99, 0.0001, -9.639825,
Brojevi sa pokretnim zarezom
1.62e-20, -10.34e200
opseg brojeva:
308 308 308 3081.7977*10 , 2.2251*10 , 2.2251*10 1.7977*10
Kompleksni brojevi:
-4+7i 8i -9j -9*j 1.23-12e-4j
KARAKTERI I STRINGOVI
Kreiranje stringa spajanjem više karaktera
'Zdravo narode'
Kreiranje pravougaonog niza karaktera (fiksna dužina)
['Mitrović M. Petar '; ...
'Hemijsko inzenjerstvo'; ...
'3 god. ']
NIZOVI ĆELIJA SA STRINGOVIMA (dužina je promenljiva)
{'Mitrović M. Petar'; ...
'Hemijsko inzenjerstvo'; ...
'3 god.'}
LOGIČKI PODACI 1 (true)
0 (false)
SIMBOLIČKI PODACI
sym(1/3) ---> umesto 0.333… daje simboličku vrednost [1/3]
sym(sqrt(2)) ---> umest 1.41… daje simboličku vrednost [2^(1/2)]
PROMENLJIVE
Tretiraju se kao matrice odgovarajućih dimenzija:
skalarne promenljive,
vektorske promenljive (jednodimenzione),
matrične promenljive (dvodimenzione),
trodimenzione promenljive
Svakoj promenljivoj se mora dodeliti odgovarajuća vrednost.
a=3
A=5;
s=1415.2381;
d=45, E=31
PODELA PROMENLJIVIH
Prema sadržaju podataka koje primaju:
Numeričke
– Realne a=23.619
– Kompleksne z=64 + j*13
Stringovi Naziv_institucije=‘Tehnoloski fakultet’
Simboličke syms x1 x2
Nizovi ćelija sa string. x={’Mihajla Pupina’, ’24’, 11000, ’Beograd’}
Prema vidljivosti:
– Lokalne promenljive u funkc. se brišu nakon završetka funkc.
– Globalne promenljive ostaju važeće i nakon izlaska iz funkcije
Prema izvoru nastanka:
– Interne generiše ih Matlab
– Eksterne generiše ih korisnik ili program
Interne promenljive:
Naziv Značenje
pi 3.1415...
i ili j imaginarna jedinica
Inf beskonačna vrednost,
delenje nulom ne prekida program već nastaje vrednost Inf
NaN neodređena vrednost (not a number)
NaN je rezultat neodređenih izraza Inf / Inf ili 0/0
eps podrazumevana tačnost
ans “privremena” promenljiva
… …
Eksterne promenljive:
– naziv promenljive čine slova i brojevi
– mora početi slovom
– prvih 31 znakova se uzima u obzir
– razlikuju se mala i velika slova (npr. a i A su dve promenljive)
Primer.
temperatura
Temperatura
Tmp1
T_1
Dodeljivanje vrednosti promenljivoj Primer. a=23, b=157.491, T=’tekst’
Brisanje promenljivih naredbom clear
Naziv komande Značenje
clear briše sve promenljive iz workspace-a
clear a, b, c briše promenljive a, b i c iz workspace-a
clear global briše globalne promenljive iz workspace-a
clear d* briše sve promenljive iz workspace-a čije ime počinje na slovo “d”
Brisanje promenljivih u prozoru workspace-a
Snimanje promenljivih
save ime_datoteke
save ime_datoteke var1,var2,var3
save ime_datoteke var1,var2,var3 –ascii
Učitavanje promenljivih
load ime_datoteke
OPERACIJE MATLABA
Aritmetički operatori
Relacijski operatori
Logički operatori
Skripte i funkcije
Kontrola toka programa
ARITMETIČKI OPERATORI
prio-
ritet opera-
tor opis
1 ( ) Grupisanje
2 ‘
.’
Transponovanje, konjugacija
Transponovanje bez konjugacije
3 ^
.^
Stepenovanje
Pojedinačno stepenovanje elemenata
4 *
.*
/
\
./
Matrično množenje
Množenje između elemenata matrica
Desno deljenje (X/Y = X*Y -1)
Levo deljenje (X\Y = X -1
*Y)
Deljenje među elementima matrica
5 +, - Sabiranje, oduzimanje
Primeri.
a=3+2, A=5*13;
s=1415.238/2.12,
d=45^11, E=31*d,
w=(a+A)/(1+2*d)
A=[1 2 3; …
4 5 6; …
4 1 2];
B=[1 4 8];
C=A*B’,
D=A.^2,
F=A\B’
Daju vrednost „1“ ukoliko je relacija tačna, odnosno „0“ ukoliko je relacija netačna.
RELACIJSKI OPERATORI
Operator Opis Primer
< Manje a<b
<= Manje ili jednako a<=b
> Veće a>b
>= Veće ili jednako a>=b
== Jednako a==b
~= Različito a~=b
A=2; B=3; C=A<=B C = 1 C=A~=B C = 0
LOGIČKI OPERATORI
Opearator Opis Primer
& Logičko I – Ako A i B imaju vrednost true (1), rezultat je true, u suprotnom rezultat je false (0).
A&B
| Logičko ILI – Ako jedan ili oba operanda imaju vrednost true (1),rezultat je true (1), u suprotnom rezultat je false (0)
A|B
~ Logički komplement – daje suprotnu vrednost operanda ~A
xor Logičko ekskluzivno ILI xor(A,B )
Kod logičkih operatora, numerička vrednost „0“ se smatra za logičku nulu, dok se ostale numeričke vrednosti smatraju logičkom jedinicom.
-3 & 0 ---> 1 & 0
ans =
0
4< -1 | 5> 0 ---> 0 | 1
ans =
1
~4 & 0+8*~ (4|0) ---> 0 & 0 + 8*0
ans =
0
SKRIPTE I FUNKCIJE
MATLAB ima i mogućnost razvoja programa u vlastitom programskom jeziku.
Programi se skladište u tzv. “m” datoteke.
Razlikujemo dve vrste “m” datoteka:
Skripte
Funkcije
Skripta - skup naredbi uskladištenih u „m“ fajl koje se izvršavaju kao da su kucane u komandnom prozoru.
Funkcija - skup naredbi uskladištenih u „m fajl sa lokalnim važenjem promenljivih (function zaglavlje)
SKRIPTE
Skripte su ASCII datoteke koje sadrže blok naredbi MATLAB-a.
Unose se pomoću posebnog editora i snimaju kao datoteke tipa “.m”.
Pozivaju se sa komandne linije ili iz neke druge skripte navođenjem njihovog imena bez “.m”
Skripte nemaju parametre.
Skripte preuzimaju promenljive iz radnog okruženja i skladište ih u random okruženju.
Primer.
Skripta1. m
A=[1 3;2 4];
B=[0;5];
C=[A B]
>>Skripta C = 1 3 0 2 4 5
Hard Disk Matlab Comand Window Matlab Editor
Primer. Napisati skriptu „Skripta1.m“ za rešavanje problema iz prethodnog primera. Izvršiti skriptu koristeći: a) dugme Run ili b) Run Section, ili sa c) komandne linije.
FUNKCIJE
To su “m” datoteke oblika:
function [ ip1, ip2, ... ipn ] = ime ( up1, up2, ... upm ) <niz naredbi>
end gde su: function – službena reč koja ukazuje na početak definicije funkcije
ime – naziv funkcije - odgovara imenu „m“ fajla u koji se funkcija snima up1,up2,...upm - ulazni parametri (argumenti) ip1,ip2,...ipn - izlazni parametri (argumenti) niz naredbi – naredbe koje čine funkciju end – službena reč koja ukazuje na kraj definicije funkcije
Funkcija se može pozvati sa komandne linije, iz skripte ili iz druge funkcije.
Prilikom poziva funkcije ne moraju se navoditi svi parametri; funkcijama se dozvojava da imaju promenljivi broj ulaznih i izlaznih argumenata.
Sve promenljive koje se definišu u funkciji su lokalnog karaktera; izlaskom iz funkcije one se brišu.
Vrste funkcija
Interne funkcije
Funkcije unutar Toolboxova
Funkcije definisane od strane korisnika
Poziv funkcija
[I_arg1,I_arg2,...,I_argn ] = ime_funkcije (U_arg1,U_arg2,...,U_argn);
Funkcija mora da se nalazi u tekućem direktoriju ili u nekom od direktorijuma koji su dodati u Path.
Direktoriji u kojima se nalaze interne i toolbox funkcije su automatski dodane u fazi instalacije.
Direktorijumi sa korisničkim funkcijama dodaju se pomoću naredbe Set Path sa palete alata.
Primer. Napisati funkciju „Funkcija1.m“ umesto skripte „Skripta1.m“ i pozvati je sa komandne linije.
INTERNE FUNKCIJE
Elementarne matematičke funkcije
Trigonometrijske
Logaritamske i hiperbolne funkcije
Ostale funkcije
Funkcije za obradu vektora i matrica
Funkcije za rad s polinomima
TRIGONOMETRIJSKE FUNKCIJE
Funkcija Opis
y=sin(x) Sinus funkcija ugla u radijanima
y=cos(x) Cosinus funkcija ugla u radijanima
y=tan(x) Tangens funkcija ugla u radijanima
y=asin(x) Arcus sinus funkcija -1<=x<=1
y=acos(x) Arcus cosinus funkcija -1<=x<=1
y=atan(x) Arcus tangens funkcija
phi=atan2(x,y) Arcus tangens funkcija definisana u 4 kvadranta
LOGARITAMSKE I HIPERBOLIČKE FUNKCIJE
Funkcija Opis
y=exp(x) Eksponencijalna funkcija sa osnovom e
y=log(x) Logaritamska funkcija s osnovom e
y=log10(x) Logaritamska funkcija s osnovom 10
y=sinh(x) Funkcija sinus hiperbolični
y=cosh(x) Funkcija cosinus hiperbolični
y=tanh(x) Funkcija tangens hiperbolični
y=asinh(x) Funkcija arcus sinus hiperbolični
y=acosh(x) Funkcija arcus cosinus hiperbolični
y=atanh(x) Funkcija arcus tangens hiperbolični
OSTALE ARITMETIČKE FUNKCIJE
Funkcija Opis
y=abs(x) Apsolutna vrednost broja x
y=sqrt(x) Kvadratni koren broja x
y=sign(x) Funkcija predznaka (signum funkcija)
y=angle(x) Ugao kompleksnog broja (u radijanima)
y=real(x) Realni deo kompleksnog broja
y=imag(x) Imaginarni deo kompleksnog broja
y=conj(x) Konjugovano-kompleksna vrednost broja x
y=round(x) Zaokruživanje prema najbližem celom broju
y=ceil(x) Zaokruživanje prema najbližem celom broju u smeru +∞
y=floor(x) Zaokruživanje prema najbližem celom broju u smeru -∞
IZRAZI
Opšti oblik:
promenljiva = izraz
izraz: konstante, imena
promenljivih ili funkcija povezana
operatorima.
• Znak “;” na kraju izraza sprečava da se
ispiše vrednost promenljive.
• Ako se izostavi promenljiva sa leve
strane znaka “=”, privremena
promenljiva ans prima vrednost izraza
• Kod dugačkih izraza, kada je potrebno
unos nastaviti u narednom redu,
prethodni red završiti sa “...” (tri
tačke)
a=23 a= 23 B=2*a^2+3*a+4; ----------------------- c=(a+B)/B c = 1.0203 (a+B)/B % izostav. prom. ans = 1.0203 ----------------------- d=a+B+c*(a-10) … +b/a d = 1.2164e+03
NIZOVI I MATRICE I OPERACIJE NAD NJIMA
Vektor vrsta
a=[1 3 6 2 4 1 4 90] a = 1 3 6 2 4 1 4 90
Vektor kolona
b=[3; 7; 1; 9; 12] b = 3 7 1 9 12
Konverzija vektora vrste u kolonu i obrnuto
a=[1 3 6 2 4 1]; c=a’
c = 1 3 6 2 4 1
b=[3; 7; 1; 9; 12], d=b’ d = 3 7 1 9 12
Vektor sa konstantnim korakom između susednih elemenata c=1:10 % podrazumevani korak je 1 c = 1 2 3 4 5 6 7 8 9 c=2:-2:-9 % korak je -2 c = 2 0 -2 -4 -6 -8
Vektor sa konstantnim korakom između susednih elemenata
e=linspace(1,200,5) % 5 elemenata od 1 do 20 e = 1.0000 50.7500 100.5000 150.2500 200.0000 Vektor sa logaritamskim korakom između susednih elemenata
f=logspace(-1,2,5) % 5 elementa od 10-1 do 102 f = 0.1000 0.5623 3.1623 17.7828 100.0000
Sabiranje i oduzimanje vektora (iste dimenzije) a=[1 3 6 2 4 1 4 90]; b=[3 7 12 3 8 9 2 1]; c=a+b c = 4 10 18 5 12 10 6 91
Skalarni proizvod vektora (usaglašene dimenzije)
a=[1 3 6 2 4 1 4 90]; b=[3 7 12 3 8 9 2 1]’; c=a*b
c =
241
Definisanje i matrica
A=[1 2 3; 6 5 4; 9 8 7; 2 7 1] % 3x3 matrica
A = 1 2 3 6 5 4 9 8 7 2 7 1
Dimenzije matrica i vektora
[n m]=size(A)
n =
4
m =
3
a=[1 3 6 2 4 1 4 90]; [n m]=size(a)
n = 1 m = 8
dim=length(a)
dim = 8
Izdvajanje kolona (redova) iz matrice Primer. Izdvojiti sve elemente iz 2. i 4. kolone
A=[1 2 3 4 5 9; 4 5 6 4 1 2; 7 8 19 22 11 1; 2 4 8 6 4 0; 0 8 5 9 4 1]
B = A([2 4],:)
A = 1 2 3 4 5 9 4 5 6 4 1 2 7 8 19 22 11 1 2 4 8 6 4 0 0 8 5 9 4 1 B = 4 5 6 4 1 2 2 4 8 6 4 0
1 2 3 2 5 9
4 5 6 4 1 2
7 8 19 22 11 1
2 4 8 6 4 0
0 8 5 9 4 1
A
Primer. Izdvojiti elemente iz poslednje 3 kolone matrice A
1 2 3 4 5 9
4 5 6 4 1 2
7 8 19 22 11 1
2 4 8 6 4 0
0 8 5 9 4 1
A
A=[1 2 3 4 5 9; 4 5 6 4 1 2; 7 8 19 22 11 1; 2 4 8 6 4 0; 0 8 5 9 4 1];
B = A(:,end-3:end)
B = 3 4 5 9 6 4 1 2 19 22 11 1 8 6 4 0 5 9 4 1
Primer. Izdvojiti sve elemente neparnih vrsta koji pripadaju istovremeno
drugoj i trećoj koloni matrice A.
1 2 3 2 5 9
4 5 6 4 1 2
7 8 19 22 11 1
2 4 8 6 4 0
0 8 5 9 4 1
A
B = A(1:2:end,[2 3])
B =
2 3
8 19
8 5
Spajanje matrica i vektora
Primer. Formirati matricu spajanjem vrsta matrice A i matrice B.
1 2 3
4 5 6
7 8 19
A
1 2 3
45 3 4B
A=[1 2 3; 4 5 6; 7 8 19];
B=[1 2 3; 45 3 4];
C = [A;B]
C = 1 2 3 4 5 6 7 8 19 1 2 3 45 3 4
Primer. Formirati matricu spajanjem 1. i 3. vrste matrice A i poslednje vrste
matrice B.
1 2 3
4 5 6
7 8 19
A
1 2 3
45 3 4B
A=[1 2 3; 4 5 6; 7 8 19];
B=[1 2 3; 45 3 4];
C = [A([1 3],:);B(end,:)]
C =
1 2 3
7 8 19
45 3 4
FUNKCIJE ZA KREIRANJE SPECIJALNIH MATRICA
Funkcija Opis
y=zeros(m) y=zeros(m,n)
Matrica čiji su svi elementi jednaki nula
y=ones(m) y=ones(m,n)
Matrica čiji su svi elementi jednaki jedinici
y=eye(m), y=eye(m,n) Jedinična matrica
y=rand(m) y=rand(m,n)
Matrica slučajnih vrednosti na [-1,1] s uniformnom raspodelom
y=randn(m) y=randn(m,n)
Matrica slučajnih vrednosti na [-1,1] s normalnom raspodelom
Specijalne matrice
Jedinična matrica
I = eye(3,3)
Nulta matrica
N = zeros(5,3)
Matrica sa svim „1“
J = ones(3,6)
I = 1 0 0 0 1 0 0 0 1
N = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
J = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
FUNNCIJE ZA OBRADU VEKTORA I MATRICA
Funkcija Opis
y=min(x) Minimum vektora x
y=max(x) Maksimum vektora x
y=mean(x) Srednja vrednost vektora x
y=median(x) Medijana vektora x
y=std(x) Standardna devijacija vektora x
y=sum(x) Suma elemenata vektora
y=cumsum(x) Kumulativna suma elemenata vektora y=[x1, x1+x2,x1+x2+x3,...]
y=diff(x) Vektor razlike susednih elemenata y(i)=x(i+1)-x(i)
y=prod(x) Proizvod elemenata vektora
y=cumprod(x) Kumulativni proizvod elemenata vektora
y=sort(x) Sortira članove vektora po rastućem redu
Matrične operacije i funkcije
h=g’ % transponovanje vektora
B=A’ % transponovanje matrice
C=A+B % sabiranje matrica
E=A*B % množenje matrica
F=inv(B) % inverzija matrica
G=A/B --> A*inv(B) % desno deljenje matrica
G=A\B --> inv(A)*B % levo deljenje matrica
de=det(B) % determinanta matrica
sv=eig(A) % sopstvene vrednosti matrice
Primer. Odrediti inverznu matricu, determinantu i sopstvene vrednosti matrice
1 2 3
4 5 6
7 8 19
A
A=[1 2 3; 4 5 6; 7 8 19];
Ai=inv(A)
Adet=det(A)
Asv=eig(A)
Ai = -1.5667 0.4667 0.1000 1.1333 0.0667 -0.2000 0.1000 -0.2000 0.1000 Adet = -30.0000 Asv = 23.1279 -0.5382 2.4102
SISTEM LINEARNIH JEDNAČINA
Primer. Rešiti sledeći sistem linearnih jednačina koristeći a) operator „levo deljenje“ (\) I b) inverziju matrice.
1 2 3
1 2 3
1 2 3
2 2.5
3 2 0.5
1.5
x x x
x x x
x x x
1
2
3
1 2 1 2.5
1 3 2 0.5
1 1 1 1.5
x
x
x
Ax=b
a) A = [1 2 -1; -1 3 2; -1 -1 1]; b = [-2.5; 0.5; 1.5]; x = A\b
x = 2.5000 -1.0000 3.0000
b) x=inv(A)*b inv(A)*b ans = 2.5000 -1.0000 3.0000
FUNKCIJE ZA OBRADU STRINGOVA
Funkcija Opis
s=blanks(n) Vraća string koji se sastoji od n praznih mesta
s=findstr(s1,s2) Pronalazi string s2 unutar stringa s1 i vraća indekse gde započinju stringovi s2
s=isstr(s1) Vraća logičku jedinicu ukoliko je s1 string
s=lower(s1) Sva slova u stringu s1 pretvara u mala slova
s=upper(s1) Sva slova u stringu s1 pretvara u velika slova
s=strcat(s1,s2,s3) Spaja stringove s1,s2 i s3 u jedna string
s=num2str(x) Pretvara numeričku vrijednost u string
FUNKCIJE ZA RAD SA POLINOMIMA
• Polinomi se u Matlabu predstavljaju pomoću vektora koji sadrže koeficijente uz opadajuće stepene nezavisne promenljive
• Primer
P(x) = x4 - x2 + 2x ----> P = [1 0 -1 2 0]
Funkcija Opis
x=roots(P) Koreni polinoma P
P=poly(x) Vraća polinom na osnovu korena polinoma
R=conv(P,Q) Množenje polinoma P i Q
[R,S]=deconv(P,Q) Deljenje polinoma P/Q (R je rezultat deljenja a S ostatak)
Q=polyder(P) Prvi izvod polinoma P po x
P=polyfit(x,y,n) Metodom najmanjih kvadrata računaju se koeficijenti polinoma P(x) n-tog reda
Definisanje polinoma
Polinomi se zadaju preko vektora koeficijenata polinoma, počevši od najvećeg stepena polinoma. Na primer:
3 2( ) 2 3P s s s a = [2 -1 0 3]
Nule polinoma roots()
Kompleksne nule
3 2
1,2,3
( ) 2 3 0
?
P s s s
s
si=roots([2 -1 0 3]) si = 0.7500 + 0.9682i 0.7500 - 0.9682i -1.0000 + 0.0000i
4 3 2
1,2,3
( ) 1 10 35 50 24 0
?
P s s s s s
s
p=conv([1 3 2],[1 7 12]) p = 1 10 35 50 24 si=roots(p) si = -4.0000 -3.0000 -2.0000 -1.0000
Formiranje polinoma od njegovih nula poly()
1 2 3
3 2
1, 2, 5
( ) ?
( ) ( ( 1))(s 2)(s ( 5))
1 4 7 10
s s s
P s
P s s
s s s
Izračunavanje polinoma polyval()
3 2( ) 1 2 5
(2) ?
(2) 5
P s s s
P
P
P=poly([-1 2 -5]) P = 1 4 -7 -10
y = polyval([-1 2 -5],2) y = -5
Množenje polinoma conv()
3 2
2
( ) 2 3
( ) 2 1
( ) ( ) ( )
P s s s
Q s s s
R s P s Q s
Delejne polinoma deconv()
3 2
2
( ) 2 3
( ) 2 1
( ) ( )( )
( ) ( )
2 21
( )
P s s s
Q x s s
P s O sR s
Q s Q s
ss
Q s
R=conv([2 -1 0 3],[2 1 -1]) R = 4 0 -3 7 3 -3
[R,O]=deconv([2 -1 0 3],[2 1 -1]) R = 1 -1 O = 0 0 2 2
Izvod polinoma polyder()
3 2
2
( ) 2 3
( )6 2
P s s s
dP ss s
ds
Integral polinoma polyint()
3 2
4 3
4 3
( ) 2 3
( ) 2 34 3
1 13
2 3
P s s s
s sP s ds s
s s s
Pp=polyder([2 -1 0 3]) Pp = 6 -2 0
Pi=polyint([2 -1 0 3]) Pi = 0.5000 -0.3333 0 3.0000 0
Predstavljanje količnika dva polinoma parcijalnim sabircima residue()
a. Slučaj realnih korena u imeniocu količnika b(s)/a(s)
1
1
( )( )
( )
m nm n
n n
b s RRK s
a s s p s p
3 2
2
( ) 2 3
( ) 3 2 ( 1)( 2)
( )
( ) 15
2
9 22
b s s s
a s s s s s
b s
a ss
s s
b=[2 1 0 3]; a=[1 3 2] [r, p, k] = residue(b,a)
r = 9 2 p = -2 -1 k = 2 -5
b. Slučaj višestrukih korena u imeniocu količnika b(s)/a(s)
3 2
3
4 3 2
2 3
( ) 2 3
( ) ( 2)( 1)
5 9 7 2
( )
( )
( ) (
9 7
2
1 )
2
2
1
1
b s s s
a x s s
s s s s
b s
a s s s
s s
b=[2 1 0 3];
a=conv(conv([1 1],[1 1]),[1 1])
a=conv(a,[1 2])
[r, p, k] = residue(b,a)
r = 9.0000 -7.0000 2.0000 2.0000 p = -2.0000 -1.0000 ---> 1/(s+1) -1.0000 ---> 1/(s+1)^2 -1.0000 ---> 1/(s+1)^3 k = []
r = 1.0000 + 0.0000i -0.2500 - 0.3536i -0.2500 + 0.3536i -0.5000 + 0.0000i p = -2.0000 + 0.0000i -1.0000 + 1.4142i -1.0000 - 1.4142i -1.0000 + 0.0000i k = []
c. Slučaj kompleksnih korena u imeniocu količnika b(s)/a(s)
2 2
( ) 2 1
( ) ( 3 2)( 2 3)
( )
( ) (
0.2500 0.3536 0.2500 0.3536
1.0000 1.4142 1.0000 1.4142) ( ) ( 1
0.5
2 )
1
b s s
a x s s s s
b s
a s
j j
j js ss s
a=conv([1 3 2],[1 2 3]);
b=[2 1];
[r, p, k] = residue(b,a)
d. Prevođenje kompleksnog dela u razvoju količnika b(s)/a(s) u realni
2 2
( ) 2 1
( ) ( 3 2)( 2 3)
( )
( ) (
0.2500 0.3536 0.2500 0.3536
1.0000 1.4142 1.0000 1.4142) ( ) ( 1
0.5
2 )
1
b s s
a x s s s s
b s
a s
j j
j js ss s
2
0.5 0.5 0.( ) 1
2
5
( ( 1)2 3)
s
s
s
s s
b
sa s
a=conv([1 3 2],[1 2 3]); b=[2 1]; [r, p, k] = residue(b,a); [pp,qq]=residue(r(2:3),p(2:3),[]) pp = -0.5000 0.5000 qq = 1.0000 2.0000 3.0000
Kreiranje polinoma iz njegovih parcijalnih sabiraka
2 3
3 2
4 3 2
9 7 2 2( )
2 1 ( 1) ( 1)
2 3( )
5 9 7 2
P ss s s s
s sP s
s s s s
r=[9 -7 2 2]; p=[-2 -1 -1 -1]; k=[]; [b,a] = residue(r,p,k) b = 2 1 0 3 a = 1 5 9 7 2
KONTROLA TOKA PROGRAMA
MATLAB pruža četiri oblika kontrole toka programa:
for petlja
while petlja
if-else-end struktura
switch-case struktura
FOR PETLJA
Omogućavaju da se grupa naredbi ponavlja unaprijed određeni broj puta.
Opšti oblik
for x = niz
naredbe...
end
Naredbe između for i end izvršavaju se jednom za svaku vrednost iz niza.
Primer. (jednostruki FOR)
Izračunati 10
1
sin( )10i
i
.
for i=1:10 x(i)=sin(i*pi/10); end
Primer. (ugnježdeni FOR) Odrediti matricu
5 4A sa elementima 1
1ija
i j
for i = 1:5 for j = 1:4 a(i,j) = 1 / (i+j-1); end end
WHILE PETLJA
Naredbe između while i end izvršavaju se sve dok su svi elementi izraza istiniti:
while izraz
naredbe... end
Primer. Izračunati
21
1
i i
sa tačnošću 410 .
s = 0; n = 1; while 1 / n^2 > 1e-4 s = s + (-1)^n / n^2; n = n+1; end >>s s = -0.8225
Primer. Izračunati sumu prvih 100 prirodnih brojeva
S=0; n=1; while n<=100
S=S+n; n=n+1;
end
>> x
x =
0.5000
IF-ELSE-END STRUKTURA
Opšti oblik:
if uslov 1
blok naredbi 1
elseif uslov 2
blok naredbi 2
elseif uslov 3
...
else
blok naredbi n
end
Tipični oblik 1:
if uslov
blok naredbi
end Tipični oblik 2:
if uslov
blok naredbi 1
else
blok naredbi 2
end
Primer. Odrediti novu vrednost parametra a u zavisnosti od njegove tekuće vrednosti i vrednosti parametra b na sledeći način:
0 3
,
a b ili aa
a inače
Primer. Odrediti novu vrednost parametra a u zavisnosti od njegove tekuće vrednosti i vrednosti parametara b i c na sledeći način:
0 , 3
1,
a b a
a a c
a inače
if a<b | a<3
a=0;
end;
if a>b & a<3
a=0;
elseif a>c
a=1;
end;
2D GRAFICI
LINIJSKI GRAFIK plot() Zavisnost y(x) plot(x,y), xlabel(’x’), ylabel(’y’), title(’naziv’)
grid on /grid off dodavanje mreže na grafiku
Primer. Nacrtati zavisnost y(x) ako je x=0,0.1,0.2, … 10, y=exp(x/10)sin(x). x=0:0.1:10; y=exp(x/10).*sin(x); plot(x,y) xlabel(‘x’) ylabel(‘y’) title(‘y(x)=exp(x/10)sin(x)’) 0 2 4 6 8 10
-2
-1
0
1
2
3
x
y
y(x)=exp(x/10)sin(x)
Zavisnost y(x) sa kontrolom iscrtavanja linije
plot(x,y,’karakteristika linije’)
Primer. Nacrtati funkciju iz prethodnog primera i prikazati je isprekidanom linijom crvene boje.
Oznaka Tip linije
- Puna
: Tačkasta linija
-. Crta tačka
-- Isprekidana linija
Oznaka Boja y Žuta m Ljubičasta c Setloplava r Crvena g Zelena b Plava w Bela k Crna
x=0:0.1:10; y=exp(x/10).*sin(x); plot(x,y,’r--’) xlabel(‘x’) ylabel(‘y’) title(‘y(x)=exp(x/10)sin(x)’)
0 2 4 6 8 10-2
-1
0
1
2
3
x
y
y(x)=exp(x/10)sin(x)
Više zavisnosti na jednom grafiku (y(x), z(x), …)
plot(x,y,x,z), legend(’tekst1’,tekst2’) Zavisnost y(x) i z(x) sa kontrolom iscrtavanja linija
plot(x1,y1,’r--’, x2,y2,’bo’)
Primer. Nacrtati zavisnosti y(x) ako je x=0,0.1,0.2, … 10, y=exp(x/10)sin(x), z(x)=log(x/2+1)/(x+1).
x=0:0.1:10; y=exp(x/10).*sin(x); z=log(5*x+1)./(x+1); plot(x,y,x,z,':r') xlabel('x') ylabel('y(x), z(x)') title('dve funkcije') legend('y(x)','z(x)')
0 2 4 6 8 10-2
-1
0
1
2
3
x
y(x
), z
(x)
dve funkcije
y(x)
z(x)
Dve y-ose na jednom grafiku - plotyy
plotyy(X1,Y1,X2,Y2,function) x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); plotyy(x,y1,x,y2,'plot'); legend('y1','y2')
0 5 10 15 20-200
-150
-100
-50
0
50
100
150
200
0 5 10 15 20-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
y1
y2
Primer. Grafički prikazati kolone matrice
1 2 3 2 5 9
4 5 6 4 1 2
7 8 19 22 11 1
2 4 8 6 4 0
0 8 5 9 4 1
A
A=[1 2 3 4 5 9; 4 5 6 4 1 2; 7 8 19 22 11 1; 2 4 8 6 4 0; 0 8 5 9 4 1];
plot(A)
1 2 3 4 50
5
10
15
20
25
Crtanje na logaritamskoj skali
semilogx semilogx(x,y,’r’); semilogy semilogy(x,y,’r’); loglog loglog(x,y,’r’);
Nova slika
figure figure, plot(x,y,’r’);
x=0:0.1:10; y=exp(x/10).*sin(x); semilogx(x,y) xlabel(‘x’) ylabel(‘y’) title(‘y(x)=exp(x/10)sin(x)’)
10-1
100
101
-2
-1
0
1
2
3
x
y
y(x)=exp(x/10)sin(x)
Grafik funkcije fplot(fun,limits), ezplot(fun,[xmin,xmax]) fplot('exp(x/10)*sin(x)',[-20 20])
ezplot('exp(x/10)*sin(x)',[-20 20])
-20 -10 0 10 20-10
-5
0
5
10
-20 -10 0 10 20
-4
-2
0
2
4
x
exp(x/10) sin(x)
3D GRAFIKA
surf, surfc surface mesh contour contoursurf meshgrid
Primer. Nacrtati z=sin(x2+y2) na
intervalu -2<x<2, -2<y<2 x1=linspace(-2,2,100); y1=linspace(-2,2,100); [x,y]=meshgrid(x1,y1); z=sin(x.^2+y.^2); surfc(x,y,z); xlabel('x'), ylabel('y') zlabel('z=sin(x^2+y^2)‘), title('3D Grafik 1')
-2
0
2
-2
0
2-1
-0.5
0
0.5
1
x
3D Grafik 1
y
z=
sin
(x2+
y2)
II. SYMBOLIC TOOLBOX 2. SIMBOLIČKO REŠAVANJE PROBLEMA – SYMBOLIC MATH TOOLBOX
Definicija simboličke promenljive
x=sym(‘x’), y=sym(‘y’), --> syms x y
x=sym('x','real'), y=sym('y','real') --> syms x y real
c=sym('c','positive') --> syms c positive
--> syms c, assume(c>0)
Kreiranje simboličkih brojeva i matrica
a=sym(‘2/3'); mat=sym([1 2;3 4]);
Zamena simboličke varijable numeričkom vrednošću ili drugom simbol. var.
subs(S), subs(S,new), subs(S,old,new)
syms a b, subs(a+b,a,4) ans = b + 4
syms a b subs(a+b,{a,b},{2,3}) ans =
5
Pretvaranje numeričke matrice u simboličku matricu
Određivanje simb. varijabli iz simb. izraza
b=[1 2 3; 4 5 6; 7 8 9]
b =
1 2 3
4 5 6
7 8 9
bb=sym(b)
bb =
[ 1, 2, 3]
[ 4, 5, 6]
[ 7, 8, 9]
f=sym('x^2+2*y^3-7*y+3+z'); findsym(f)
ans =
x, y, z
findsym(f,2)
ans =
x,y
Konverzija promenljivih
double konvertuje simboličke varijable u numeričke
poly2sym konvertuje numerički polinom u simbolički
sym2poly konvertuje simbolički polinom u numerički
syms a1 a2 a3 a4 a=[a1 a2; a3 a4] a =
[ a1, a2]
[ a3, a4]
b=double(a) b =
1 2
3 4
syms x f =x^2+2*x^3-6*x+3 p=sym2poly(f) p =
2 1 -6 3
p2 =[1 2 3 4 5] f2=poly2sym(p2) f2 =
x^4+2*x^3+3*x^2+4*x+5
Prikaz simboličkih izraza - pretty
pretty(s)
syms a1 a2 a3 a4 a=[a1 a2; a3 a4] % simbolička matrica b=inv(a) % simbolička matrica pretty(b) % prikaz
+- -+ | a4 a2 | | -------------, - ------------- | | a1 a4 - a2 a3 a1 a4 - a2 a3 | | | | a3 a1 | | - -------------, ------------- | | a1 a4 - a2 a3 a1 a4 - a2 a3 | +- -+
Diferenciranje - diff
2( ) sin( )f x x x , 2
2
( )?
d f x
dx
2 2( , ) 2f x y x y y x , 2 ( , )
?d f x y
dxdy
syms x; f=x^2*sin(x); diff(f,2) ans = 2*sin(x)+4*x*cos(x)-x^2*sin(x)
syms x y; f=x^2*y+2*y^2*x diff(diff(f,x),y) ans = 2*x+4*y
Integraljenje
2 2( , ) 2f x y x y y x ,
( , ) ?f x y dx
2
( , ) axf x a e
( ) ?f x dx
( , ) xf x a xe
( ) ?
b
a
f x dx
10
0
( ) ?f x dx
syms x y; f=x^2*y+2*y^2*x int(f,x) ans = (x^2*y*(x + 3*y))/3
syms x, syms a, assume(a > 0); f=exp(-a*x^2) int(f,x,-inf,inf) ans = pi^(1/2)/a^(1/2)
syms x a b; f=x*exp(-x); F=int(f,x,a,b) % granice su parametri F =
-b*exp(-b)-exp(-b)+a*exp(-a)+exp(-a)
subs(F, {a,b}, [0,10]) % smena granica ans =
0.9995
Granične vrednosti
lim 1 sin
x
x
a bx
x x
0
1limx x
0
1limx x
0
1limx x
syms x a b; f=x*(1+a/x)^x*sin(b/x); limit(f,x,inf) ans =
exp(a)*b
syms x; limit(1/x,x,0) ans =
NaN
limit(1/x,x,0,’left’) ans =
-Inf
limit(1/x,x,0,’right’) ans =
Inf
Uprošćavanje izraza
R=expand(f)
cos(x+y)
R=factor(f)
x^3-y^3
R=simplify(f)
(x^2+5*x+6)/(x+2)
R=simple(f) – Koristi više različitih metoda
syms x y expand(cos(x+y)) ans =
cos(x)*cos(y)-sin(x)*sin(y)
syms x y factor(x^3-y^3) ans =
(x-y)*(x^2+x*y+y^2)
syms x f=(x^2+5*x+6)/(x+2) simplify(f) ans =
x+3
Grafik simboličke funkcije
ezplot(f),
ezplot(f,vektor_granica)
ezplot(x,y,t_granica)
ezplot(sym('-2*(x-2)^2+2+y'),[-2,8,-4,7])
grid
hold on
ezplot(sym('2*sin(2*t)+5'), sym('cos(2*t)'))
x
y
x = 2 sin(2 t) + 5, y = cos(2 t)
0 5 10-4
-2
0
2
4
6
ALGEBARSKE JEDNAČINE
solve(eq),
solve(eq,var)
solve(eq1,eq2,...,eqn)
Primer. Rešiti i prikazati grafički sledeći sistem jednačina
2 2 31 0, 0.75 0.9 0x y x y
syms x y real
S=solve('x^2+y^2-1=0','y=4*sqrt(3)*x^3')
X=S.x, xx=double(X) % vector resenja po x
Y=S.y, yy=double(Y) % vector resenja po y
colormap([0 0 1])
ezplot(sym('x^2+y^2-1=0'),[-1,1,-1,1]),
hold on
ezplot(sym('y=4*sqrt(3)*x^3')),
plot(X(1),Y(1),'or',X(2),Y(2),'or')
hold off
x
y
y == 4 31/2
x3
-1 -0.5 0 0.5 1-1
-0.5
0
0.5
1
S = x: [2x1 sym] y: [2x1 sym] X = 1/2 -1/2
Y = 3^(1/2)/2 -3^(1/2)/2 xx = 0.5000 -0.5000
yy = 0.8660 -0.8660
DIFERENCIJALNE JEDNAČINE
dsolve(deq) dsolve(deq,c1) dsolve(deq1,deq2,c1,c2)
Primer 1. y'(t)-y(t)=sin(t)
Primer 2. f’(t)-f(t)-g(t)=0, g’(t)+f(t)-g(t)=0
% Bez početnih uslova
dsolve('Dy-y=sin(t)') ans = -1/2*cos(t)-1/2*sin(t)+exp(t)*C1
% Sa početnim uslovima
dsolve('Dy = y + sin(t)','y(0)=1') ans = 3/2*exp(t)-1/2*cos(t)-1/2*sin(t)
S=dsolve('Df-f-g=0', 'Dg+f-g=0', 'f(0)=1', 'g(0)=2') S = f: [1x1 sym] g: [1x1 sym]
S.f ans = exp(t)*cos(t) + 2*exp(t)*sin(t)
S.g ans = 2*exp(t)*cos(t) - exp(t)*sin(t)
REDOVI
symsum(f), symsum(f,a,b)
2 2
1 11
2 3M
1 2 3M n
syms k M=symsum(1/k^2,1,inf) M = pi^2/6
syms k n M=symsum(k,1,n) M =
pi^2/6