Upload
vananh
View
243
Download
0
Embed Size (px)
Citation preview
UNIVERZITET U BEOGRADU SAOBRAĆAJNI FAKULTET
PRAKTIKUM IZ TEORIJE SISTEMA
RAČUNSKE VEŽBE
Novembar 2007.
Praktikum iz Teorije sistema - Računske vežbe
2
1. Matrične operacije 1. Formirati matricu BbAbC T -= )( , gde je
úúú
ű
ů
ęęę
ë
é=
300020401
A , úúú
ű
ů
ęęę
ë
é=
111
b i B=I
Rešenje:
A=zeros(3); A(1,1)=1; A(2,2)=2; A(3,3)=3; A(1,3)=4; b=ones(3,1); B=eye(3); C=(A*b)*b’-B;
Rezultat:
C = 4 5 5 2 1 2 3 3 2
2. Formirati matricu A dimenzija 3x3 sa elementima odabranim po unifomnoj raspodeli. Nakon toga napravite matricu B dimenzija 5x5 na sledeći način
B=[A zeros(3,2);pi*ones(2,3), eye(2)] Štampati element u 4 vrsti i 1 koloni. Takođe, primenom operator dvotačka (:) štampati sve elemente matrice, elemente od 2 do 3 vrste i od 3 do 4 kolone, zatim elemente od 3 vrste pa do kraja i 3 kolone pa do kraja. Štampati matricu dimezija 2x2 koja se sastoji od sledećih elemenate matrice B, B(3,2), B(3,1), B(2,2), B(2,1). Rešenje i rezultati:
A=rand(3); B=[A zeros(3,2);pi*ones(2,3), eye(2)];
Praktikum iz Teorije sistema - Računske vežbe
3
>> B(4,1) ans = 3.1416 B(:,:) B = 0.9778 0.9721 0.2888 0 0 0.9856 0.0081 0.8589 0 0 0.9590 0.3386 0.6293 0 0 3.1416 3.1416 3.1416 1.0000 0 3.1416 3.1416 3.1416 0 1.0000 >> B(2:3,3:4) ans = 0.8589 0 0.6293 0 >> B(3:end,3:end) ans = 0.6293 0 0 3.1416 1.0000 0 3.1416 0 1.0000 >> B([3,2],[2,1]) >> [B(3,2) B(3,1);B(2,2) B(2,1)] ans = 0.7621 0.6068 0.8913 0.2311
3. Napraviti matricu rotacije úúú
ű
ů
ęęę
ë
é-=
1000cossin0sincos
aaaa
A , za a=p/10.
Rešenje:
alfa=pi/10; A=[ cos(alfa), sin(alfa), 0 -sin(alfa), cos(alfa), 0
Praktikum iz Teorije sistema - Računske vežbe
4
0 0 1 ] Rezultat:
A = 0.9511 0.3090 0 -0.3090 0.9511 0 0 0 1.0000
4. Naći rešenje matrične jednačina Axy = ako je matrica úúú
ű
ů
ęęę
ë
é-
-=
102141323
A , a
vektor [ ]Ty 534= . Takođe, izračunati determinantu matrice A. Rešenje:
A=[3 -3 3; -1 4 1; 2 0 1]; y=[4 3 5]’; x=inv(A)*y
ili A=[3 -3 3; -1 4 1; 2 0 1]; y=[4 3 5]’; x=A\y
Rezultat:
x = 2.3810 1.2857 0.2381 det(A) ans = -21
5. Korišćenjem rand funkcije formirati prosečne ocene za 10 studenata 5 odseka. Naći najbolje i najlošije studente svakog odseka pojedinačno i najboljeg i najlošijeg studenta svih odseka. Takođe, izračunati prosečnu ocenu za svaki odsek pojedinačno i sve odseke i sortirati studente po odsecima prema prosečnoj oceni od najveće prosečne ocene do najmanje prosečne ocene.
Praktikum iz Teorije sistema - Računske vežbe
5
Rešenje:
A = 6+(10-6).*rand(10,5); % Najveci proseci po odsecima maxA = max(A) % Najveci prosek svih odseka maxmaxA = max(maxA) % Najmanji proseci po odsecima minA = min(A) % Najmanji prosek svih odseka minminA = min(minA) % Prosecna ocena po odsecima meanA = mean(A) % Prosecna ocena svih odseka meanmeanA = mean(meanA) % Sortirane prosecne ocene studenata % od najveceg do najmanjeg sort(A,’descend’)
Rezultat:
maxA = 9.7819 9.8455 9.5930 9.2598 9.8245 maxmaxA = 9.8455 minA = 6.3355 6.2882 6.2138 6.2380 6.6458 minminA = 6.2138 meanA = 8.5134 8.1684 8.0317 7.5803 8.3705
Praktikum iz Teorije sistema - Računske vežbe
6
meanmeanA = 8.1329 ans = 9.7819 9.8455 9.5930 9.2598 9.8245 9.6638 9.4319 9.1645 8.6800 9.6360 9.4938 8.9306 9.0182 8.5049 9.3179 9.2121 8.7208 8.4665 8.1474 8.3887 8.9600 8.2136 8.2498 7.6363 8.3850 8.5371 8.0536 7.9932 7.0924 8.3822 8.4079 7.6889 7.7378 7.0852 7.9128 7.7275 7.3430 7.4266 6.8035 7.8962 7.0142 7.1679 6.4534 6.3558 7.3158 6.3355 6.2882 6.2138 6.2380 6.6458
6. Formirati kompleksan broj s na osnovu unetog realnog i imaginarnog dela. Izračunati moduo i fazu (u stepenima) unetog broja i napisati konjugovano kompleksni broj datom broju, kao i njegov realni i imaginarni deo. Takođe,
korišćenjem unete vrednosti s izračunati vrednost ( )132
323
2
+++++
=sss
sssF .
Izračunati moduo i fazu za F. Rešenje:
% Unosimo vrednosti za realni i imaginarni deo sigma=input('sigma='); omega=input('omega='); % Formiramo kompleksni broj s=complex(sigma,omega); % Izracunavamo i stampamo amplitudu i fazu za s abs(s) rad2deg(angle(s)) % Konjugovano kompleksni broj conj(s) real(s) imag(s) % Izracunavamo F F=(s^2+s+3)/(s^3+2*s^2+3*s+1) % Izracunavamo i stampamo amplitudu i fazu za F abs(F) rad2deg(angle(F))
Rezultat:
sigma=4
Praktikum iz Teorije sistema - Računske vežbe
7
omega=8
ans = 8.9443 ans = 63.4349 ans = 4.0000 - 8.0000i ans = 4 ans = 8 F = 0.0548 - 0.0898i ans = 0.1052 ans = -58.5942
7. Korišćenjem naredbe plot nacrtati funkciju tetf t sin)( -= na intervalu od 0 do 10. Korišćenjem naredbe axis podesiti ose tako da je xmin=0, xmax=8, ymin=-0.1 i ymax=0.5. Rešenje:
Praktikum iz Teorije sistema - Računske vežbe
8
x=[0:0.1:10]; y=exp(-x).*sin(x); plot(x,y,'-gx'); title('Funkcija exp(-x)*sin(x)'); ylabel('f(x)'); xlabel('x'); axis([0 8 -0.1 0.5]);
Rezultat:
0 1 2 3 4 5 6 7 8-0.1
0
0.1
0.2
0.3
0.4
Funkcija exp(-x)*sin(x)
f(x)
x
Slika 1. 7. Na intervalu od 0 do 4p nacrtati sinusnu i kosinusnu funkciju koriščenjem plot naredbe. Rešenje:
x=linspace(0,4*pi); plot(x,sin(x)); hold on plot(x,cos(x),'r'); title('Sinusna i kosinusna funkcija'); grid; hold off;
Rezultat:
Praktikum iz Teorije sistema - Računske vežbe
9
0 2 4 6 8 10 12 14-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Sinusna i kosinusna funkcija
Slika 2.
8. a) Korićenjem randn funkcije generisati 100 normalno raspoređenih vrednosti i nacrtati ih plot naredbom. Same vrednosti označiti kružićima zelene boje. b) Ponoviti generisanje randn funkcijom za 100.000 vrednosti, a zatim korišćenjem hist naredbe formirati histogram sa 20 intervala. Nacrtati funkciju gustine normalne raspodele i normalnu raspodelu za vrednosti x od -3 do 3. Rešenje: a)
y=randn(100,1); plot(y); xlabel('Broj uzoraka'); ylabel('Vrednost'); hold on; plot(y,'go'); hold off;
Rezultat:
Praktikum iz Teorije sistema - Računske vežbe
10
0 10 20 30 40 50 60 70 80 90 100-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
Broj uzoraka
Vre
dnos
t
Slika 3.
Rešenje: b)
% Generisemo uzorak x=randn(100000,1); % Frekfencije pojavljivanja u 20 klasa y=hist(x,20); % Formiramo klase t=linspace(min(x),max(x),20); % Izracunavamo relativne frekfencije f=y./length(x); % Odredjujemo gde cemo nacrtati grafikon subplot(1,2,1); % Crtamo grafikon gustine plot(t, f); % Postavljamo nazive osama xlabel('x'); ylabel('y=f(x)'); % Naziv grafikona title('Funkcija gustine normalne raspodele'); axis([-3 3 0 1]); axis square; % Odredjujemo gde cemo nacrtati grafikon subplot(1,2,2); % Crtamo raspodelu plot(t,cumsum(f)); % Dajemo nazive osama xlabel('x'); ylabel('F(x)');
Praktikum iz Teorije sistema - Računske vežbe
11
% Naziv grafikona title('Normalna raspodela'); axis([-3 3 0 1]); axis square;
Rezultat:
-2 0 20
0.2
0.4
0.6
0.8
1
x
y=f(x
)
Funkcija gustine normalne raspodele
-2 0 20
0.2
0.4
0.6
0.8
1
x
F(x)
Normalna raspodela
Slika 4.
9. (Linearna regresija) Korišćenjem vrednost datih u tabeli
odredimo aproksimaciju sledećeg oblika:
xaay 21+=
Koeficijenti a1 i a2 se dobijaju iz sistema linearnih jednačina:
ĺĺĺ
ĺĺ
===
==
=+
=+
N
iii
N
ii
N
ii
N
ii
N
ii
xyxaxa
yxaNa
11
22
11
1121
Rešenje:
x=0:7; y=[-5 -4.5 -3.5 -2.9 -2 -0.8 0.1 1.5]; N=length(x)
x 0 1 2 3 4 5 6 7
y -5 -4.5 -3.5 -2.9 -2 -0.8 0.1 1.5
Praktikum iz Teorije sistema - Računske vežbe
12
A=[N sum(x); sum(x) sum(x.^2)]; z=[sum(y); sum(y.*x)]; a=inv(A)*z; xp=[0:0.1:7]; f=a(1)+a(2)*xp; disp(['Koeficijenti: ' num2str(a')]); plot(x,y,'go',xp,f, '-r'); title('Linearna regresija'); xlabel('x'); ylabel('y');
Rezultat:
Koeficijenti: -5.3667 0.92262
0 1 2 3 4 5 6 7-6
-5
-4
-3
-2
-1
0
1
2Linearna regresija
x
y
Slika 5.
10. (Polinomijalna regresija) Korišćenjem vrednost datih u tabeli
x 1 2.5 3.5 4
y 3.8 15 26 33
odredimo aproksimaciju sledećeg oblika:
221 xCCy +=
Koeficijenti C1 i C2 se dobijaju iz sistema linearnih jednačina::
Praktikum iz Teorije sistema - Računske vežbe
13
0
04
4
1
4
1
242
4
1
21
4
1
24
1
221
=-+
=-+
ĺ ĺĺ
ĺĺ
= ==
==
i iiii
ii
ii
ii
xyxCxC
yxCC
Rešenje:
x=[1 2.5 3.5 4]; y=[3.8 15 26 33]; A=[4 sum(x.^2); sum(x.^2), sum(x.^4)]; z=[sum(y); sum(y.*x.^2)]; C=A\z; xp=[1:0.1:4]; f=C(1)+C(2)*xp.^2; disp(['Koeficijenti: ' num2str(C')]); plot(x,y,'go',xp,f, '-r'); title('Polinomijalna regresija'); xlabel('x'); ylabel('y');
Rezultat:
Koeficijenti: 2.2790 1.9348
1 1.5 2 2.5 3 3.5 40
5
10
15
20
25
30
35Polinomijalna regresija
x
y
Slika 6.
11. (Polinomijalna regresija) Korišćenjem vrednost datih u tabeli
Praktikum iz Teorije sistema - Računske vežbe
14
odredimo aproksimaciju sledećeg oblika:
2210 xaxaay ++=
Koeficijenti a0, a1 i a2 se dobijaju iz sistema linearnih jednačina:
ĺĺĺĺ
ĺĺĺĺ
ĺĺĺ
====
====
===
=-+
=-+
=-+
7
1
27
1
42
7
1
31
7
1
20
7
1
7
1
32
7
1
21
7
10
7
1
27
1
22
7
1107
iii
ii
ii
ii
iii
ii
ii
ii
ii
ii
ii
yxxaxaxa
yxxaxaxa
yxaxaa
Rešenje:
x=[0.4501 0.9802 1.3376 2.3999 2.7936 3.5805 3.7201]; y=[3.0509 1.5078 1.0999 0.9212 1.0012 2.2333 3.2500]; A=[7 sum(x) sum(x.^2);sum(x) sum(x.^2) sum(x.^3);sum(x.^2) sum(x.^3) sum(x.^4)]; z=[sum(y); sum(x.*y); sum((x.^2).*y)]; a=inv(A)*z; disp(['Koeficijenti: ' num2str(a')]); xp=[0:0.1:4]; f=a(1)+a(2)*xp+a(3)*xp.^2; subplot(1,2,1); plot(x,y,'go',xp,f, '-r'); title('Polinomijalna regresija'); xlabel('x'); ylabel('y'); axis square subplot(1,2,2); f=a(1)+a(2)*x+a(3)*x.^2; plot(x,y-f,'-bo'); title('Rezidual'); xlabel('x'); ylabel('y-ykapa'); axis square
Rezultat:
Koeficijenti: 39.0929 -39.9999 -8.50069
x 0.4501 0.9802 1.3376 2.3939 2.7936 3.5805 3.7201 y 3.0509 1.5078 1.0999 0.9212 1.0012 2.2333 3.2500
Praktikum iz Teorije sistema - Računske vežbe
15
0 1 2 3 40
1
2
3
4
5Polinomijalna regresija
x
y
0 1 2 3 4-0.4
-0.2
0
0.2
0.4Rezidual
x
y-yk
apa
Slika 7.
12. (Polinomijalna regresija preko matrične formulacije – metoda najmanjih kvadrata) Korišćenjem vrednost datih u tabeli
x 1 2.5 3.5 4 y 3.8 15 26 33
odredimo aproksimaciju sledećeg oblika:
221 xCCy +=
Koeficijenti C se dobijaju iz sledeće matrične jednačine:
yFFCF TT =
úúúúú
ű
ů
ęęęęę
ë
é
=
úúúú
ű
ů
ęęęę
ë
é
=
24
23
22
21
21
21
21
21
1111
)()()()()()()()(
xxxx
tftftftftftftftf
F , úű
ůęë
é=
2
1
CC
C
Rešenje:
x=[1 2.5 3.5 4]; y=[3.8 15 26 33]; F=[ones(4,1) x'.^2]; C=(F'*F)\(F'*y'); xp=[1:0.1:4]; f=C(1)+C(2)*xp.^2; disp(['Koeficijenti: ' num2str(C')]); plot(x,y,'go',xp,f, '-r'); title('Polinomijalna regresija'); xlabel('x');
Praktikum iz Teorije sistema - Računske vežbe
16
ylabel('y'); Rezultat:
Koeficijenti: 2.2790 1.9348
1 1.5 2 2.5 3 3.5 40
5
10
15
20
25
30
35Polinomijalna regresija
x
y
Slika 8.
13. (Polinomijalna regresija) Korišćenjem vrednost datih u tabeli
odredimo aproksimaciju 2, 3, 4 i 5 stepena korišćenjem naredbi polyfit i polyval. Rešenje:
x=0:5; y=[0, 20, 60, 68, 77, 110]; novo_x=linspace(0,5); y2=polyval(polyfit(x,y,2),novo_x); y3=polyval(polyfit(x,y,3),novo_x); y4=polyval(polyfit(x,y,4),novo_x); y5=polyval(polyfit(x,y,5),novo_x); subplot(2,2,1); plot(x,y,'o',novo_x,y2); title('Polinomijalna regresija - 2'); ylabel('y');
x 0 1 2 3 4 5 y 0 20 60 68 77 110
Praktikum iz Teorije sistema - Računske vežbe
17
xlabel('x'); axis([0 5 0 120]); subplot(2,2,2); plot(x,y,'o',novo_x,y3); title('Polinomijalna regresija - 3'); ylabel('y'); xlabel('x'); axis([0 5 0 120]); subplot(2,2,3); plot(x,y,'o',novo_x,y4); title('Polinomijalna regresija - 4'); ylabel('y'); xlabel('x'); axis([0 5 0 120]); subplot(2,2,4); plot(x,y,'o',novo_x,y4); title('Polinomijalna regresija - 5'); ylabel('y'); xlabel('x'); axis([0 5 0 120]);
Rezultat:
0 1 2 3 4 50
50
100
Polinomijalna regresija - 2
y
x0 1 2 3 4 5
0
50
100
Polinomijalna regresija - 3
y
x
0 1 2 3 4 50
50
100
Polinomijalna regresija - 4
y
x0 1 2 3 4 5
0
50
100
Polinomijalna regresija - 5
y
x
Slika 9.
Praktikum iz Teorije sistema - Računske vežbe
18
14. Nacrtati funkciju abxy = (b=2.5, a=3) za vrednosti x na intervalu od 0 do 10. Takođe, nacrtati ovu funkciju na za dijagramu čije su obe ose logaritamske naredbom loglog. Nakon toga nacrtati 111 axby += , gde je yy log1 = , bb log1 = ,
xx log1 = Rešenje:
% Izracunavanje sume clc; x=linspace(0,10); y=2.5*x.^3; plot(x,y); pause; loglog(x,y); grid on; pause; x=logspace(0,10); y=2.5*x.^3; grid off;
Rezultat:
0 1 2 3 4 5 6 7 8 9 100
500
1000
1500
2000
2500
Praktikum iz Teorije sistema - Računske vežbe
19
Slika 10.
10-1 100 10110
-3
10-2
10-1
100
101
102
103
104
Slika 11.
15. Napraviti MATLAB skript datoteku koja za uneti prirodan broj N izračunava i ispisuje vrednost zbira
ĺ=
=N
k kS
13
1
Rešenje:
% Izracunavanje sume clc; N=input('N='); zbir=0; for k = 1:N zbir=zbir+k^(-3); end disp(['Zbir je ' num2str(zbir)]);
Rezultat:
N=10 Zbir je 1.1975
16. Napraviti MATLAB skript datoteku koja koršćenjem for petlje ispisuje piramidu brojeva (tzv. Paskalov trougao).
Praktikum iz Teorije sistema - Računske vežbe
20
Rešenje:
% Ispisivanje piramide brojeva x=[1:9 8:-1:1]; clc; for i = 1:9 fprintf('%9s%s\n', ... num2str(x(1:i),'%d'),num2str(x(19-i:end),'%d') ); end
Rezultat:
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321
17. Napraviti MATLAB skript datoteku koja koršćenjem for petlje pravi Hilbertovu matricu dimenzija NxN. Elementi Hilbertove matrice dobijaju se kao
( ) NjNijijiH ,...,1,,...1,1),( 1 ==-+= - . Ugrađenu funkciju zeros koristiti za inicijalizaciju dimenzija i vrednosti matrice. Rešenje:
N=input('N=');
% Iniciram matricu A = zeros(N,N); for i = 1:N for j = 1:N A(i,j) = 1/(i+j -1); end end disp(A);
Rezultat:
N=4 1.0000 0.5000 0.3333 0.2500
Praktikum iz Teorije sistema - Računske vežbe
21
0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429
18. Napraviti MATLAB skript datoteku koja za uneti celi broj određuje cifre datog broja korišćenjem while petlje. Rešenje:
% Cifre celog broja clc; ceo=input('Unesite celi broj? '); x=abs(ceo); disp(['Cifre broja ', int2str(ceo), ' od mesta najmanje tezine su:']); while x~=0 cifra=mod(x,10); x=fix(x/10); disp(cifra); end
Rezultat:
Unesite celi broj? 234567 Cifre broja 234567 od mesta najmanje tezine su: 7 6 5 4 3 2
19. Koršćenjem while petlje i if naredbe proveriti da li je uneti broj prost broj. Rešenje:
% Prost broj clc; M=1; while M<2
Praktikum iz Teorije sistema - Računske vežbe
22
M=input('Unesite prost broj: '); end P=2; K=fix(sqrt(M)); while (P<=K) & (mod(M,P) ~= 0) P=P+1; end if P>K disp( [ int2str(M) ' je prost broj.'] ); else disp( [ int2str(M) ' nije prost broj.'] ); end
Rezultat: 20. Dat je red:
( )ĺ= +-=
k
n
xnn
nxe
S1 )!1(
sin21
Izračunati približno S. Postupak izračunavanja prekinuti kada je sabrano k članova reda ili kada jedan član reda postane po modulu manji od e. Prvi član reda u svakom slučaju uključiti u S. x, e i k se učitavaju iz komandnog prozora. Izračunavanje uraditi upotrebom i while i for petlje. (NAPOMENA: Izračuna se prvi član sume da bi se svaki naredni računao po
sledećoj rekurzivnoj formuli 112
-+-= nn a
na )
Rešenje: a) Rešenje sa while petljom
% Izracunavanje sume – resenje sa while clc; k=input('Maksimalni broj sabiraka? '); eps=input('Kolika je tacnost? '); x=input('Koliko je x? '); a=-abs(sin(x)*exp(x)); suma=a;
Praktikum iz Teorije sistema - Računske vežbe
23
n=2; while (n<=k) & (abs(a)>=eps) a=-2/(n+1)*a; suma=suma+a; n=n+1; end if abs(a)<eps fprintf( 'Za n=%d dostignuta je tacnost suma = %f\n', n-1, suma); else fprintf( 'Za k=%d nije dostignuta tacnost suma = %f\n', k, suma); end
b) Rešenje sa for petljom i sa break naredbom % Izracunavanje sume – resenje sa for i break clc; k=input('Maksimalni broj sabiraka? '); eps=input('Kolika je tacnost? '); x=input('Koliko je x? '); a=-abs(sin(x)*exp(x)); suma=a; for n=2:k if abs(a)>=eps a=-2/(n+1)*a; suma=suma+a; else break; end end if abs(a)<eps fprintf( 'Za n=%d dostignuta je tacnost suma = %f\n', n-1, suma); else fprintf( 'Za k=%d nije dostignuta tacnost suma = %f\n', k, suma); end
Rezultat:
Maksimalni broj sabiraka? 5
Praktikum iz Teorije sistema - Računske vežbe
24
Kolika je tacnost? 0.1 Koliko je x? 1.5 Za k=5 nije dostignuta tacnost suma = -2.582934
21. (Linearna interpolacija) Korišćenjem vrednost datih u tabeli
odredimo aproksimaciju sledećeg oblika:
( )itii
iiit xx
xxyyyxy -
--
+=+
+
1
1)(
gde je 1+ŁŁ iti xxx . (Napomena: Za unos tx koristiti naredbu input) Rešenje:
x=0:0.5:3.0; y=[0 0.125 1.0 3.375 8 15.63 27]; xt=input('Unesite xt:'); for i=1:length(x)-1 if xt>=x(i) & xt<x(i+1) yt=y(i)+(y(i+1)-y(i))/(x(i+1)-x(i))*(xt-x(i)); end end; disp(['yt=' num2str(yt)]); plot(x,y,'b',x,y,'r+'); hold on; plot(xt,yt,'go'); line([xt xt],[0 yt],'LineStyle','--','Color',[0.4,0.4,0.4]); line([0 xt],[yt yt],'LineStyle','--','Color',[0.4,0.4,0.4]); hold off; text(xt,yt,sprintf(' (%.2f,%.2f)',xt,yt)); title('Linearna interpolacija'); xlabel('x'); ylabel('y');
x 0 0.5 1 1.5 2 2.5 3
y 0 0.125 1 3.375 8 15.63 27
Praktikum iz Teorije sistema - Računske vežbe
25
Rezultat: Unesite xt:2.1 yt=9.526
0 0.5 1 1.5 2 2.5 30
5
10
15
20
25
30
(2.10,9.53)
Linearna interpolacija
x
y
Slika 10.
22. Napraviti MATLAB funkciju koren za izračunavanje kubnog korena realnog broja x primenom Njutnove iterativne metode koja glasi
÷÷ř
öççč
ć+= -
-12
1
231
nn
n yyxy ,
îíě
>Ł
=111
0 xxx
y
Iteracija traje sve dok je nn yy <=-1 ili dok se ne dostigne maksimalni broj iteracija Nmax=300. Uporediti dobijeni rezultat sa x^(1/3). Rešenje: function y=koren(x) Nmax=300; if x<=1 y=1; else y=x; end for i=0:Nmax r=y;
Praktikum iz Teorije sistema - Računske vežbe
26
y=(2*y+x/y^2)/3; if(r<=y) break, end end >> koren(23.45) ans = 2.8623 >> 23.45^(1/3) ans = 2.8623 23. Za aproksimativno izračunavanje realne nule funkcije )(xfy = na intervalu [ ]ba, može da se koristi sledeći iterativni postupak (metoda bisekcije). Nalazimo ocenu
2bax +
= , da bi ukoliko je 0)(*)( >bfxf , postavili da je xb = , dok u suprotnom
xa = . Postupak se ponavlja sve dok je e>- ba . Koren funkcije vraćamo kao 2
ba + .
Napraviti MATLAB funkciju koja nalazi nulu funkcije na zadatom intervalu. Primenom
MATLAB funkcije naći nulu funkcije ( ) ( )1sin21 2 -= xxf , na intervalu od -1 do 0.
( 00001.0=e ). Rešenje:
function y=nula(fun,a,b,eps) if nargin < 4
eps=0.0001; end while abs(b-a)>eps x=(a+b)/2; if(feval(fun,x)* feval(fun,b)>0) b=x; else a=x; end end y=(a+b)/2;
Praktikum iz Teorije sistema - Računske vežbe
27
function y = g( x ) y=(asin(2*x+1)-x*x); >> nula('g',-1,0) ans = -0.4145
24. Za aproksimativno izračunavanje realne nule funkcije )(xfy = na intervalu [ ]ba, može da se koristi sledeći iterativni postupak (metoda tetive). Nalazimo ocenu
2bax +
= , da bi ukoliko je 0)(*)( >bfxf , postavili da je xb = , dok u suprotnom
xa = . Postupak se ponavlja sve dok je e>- ba . Koren funkcije vraćamo kao 2
ba + .
Napraviti MATLAB funkciju koja nalazi nulu funkcije na zadatom intervalu. Primenom
MATLAB funkcije naći nulu funkcije ( ) ( )1sin21 2 -= xxf , na intervalu od -1 do 0.
( 00001.0=e ). 25. Napraviti MATLAB funkciju simpson koja primenom I Simpsonove metode izračunava određeni integral za prosleđenu funkciju na intervalu od a do b. Neka je interval [ ]ba, ekvidistantom h podeljen na N-1 jednakih delova. Na taj način dobili smo tačke x1=a, x2=x0+h, x3=x0+2h,..., xN=b=x0+(N-1)h. Neka su yi (i=1,2,3,...,N) vrednosti funkcije f(x) u tim tačkama. Simpsonova metoda glasi
( ) ( )ň
+++++++= --
b
a
NNN yyyyyyyhdxxf
342...424 124321
MATLAB funkciji simpson pored podintegralne funkcije, donje i gornje granice intervala integracije proslediti i neparan broj tačaka N. Ekvidistanta h je jednaka
)1/()( --= Nabh .
a) Primenom gornje funkcije izračunati integral dxxň +
2
02 11
, pri čemu će
podintegralna funkcija biti realizovana kao MATLAB funkcija. Uporediti dobijeni rezultat sa rezultatom dobijenim ugrađenom MATLAB funkcijom quad.
Rešenje:
function val=simpson(fun,a,b,N)
Praktikum iz Teorije sistema - Računske vežbe
28
if ~mod(N,2) error('N mora da bude je neparan broj!'); end h=(b-a)/(N-1); x=[a:h:b] y=fun(x); val=h*(y(1)+y(N)+4*sum(y(2:2:N-1))+2*sum(y(3:2:N-1)))/3;
function y=f(x) y=1./(x.^2+1); >> simpson('f',0,2,11) ans = 1.1071 >> quad('f',0,2) ans = 1.1071
26. Za aproksimativno određivanje partikularnog rešenja obične diferencijalne jednačine prvog reda ),(' yxfy = , uz početni uslov y(x0)= y0 koristi se i rekurentna formula Runge-Kutta trećeg reda
( )
( )
÷řö
çčć ++=
÷řö
çčć ++=
=
++=
--
--
--
-
2113
1112
111
311
32,
32
31,
31
,
341
KyhxhfK
KyhxhfK
yxhfK
KKyy
ii
ii
ii
ii
koja daje niz aproksimativnih vrednosti ordinata yi za apcise xi = xi-1+h, gde je h odabrana vrednost koraka. Napraviti MATLAB funkciju rungekutta koja za prosleđene vrednosti početnih uslova x0 i y0, funkciju f(x,y), korak h i broj koraka n nalazi rešenje diferencijalne jendačine. Primenom gornje funkcije naći rešenje diferencijalne jednačine yxy /1' += za početne uslove x0=0, y0=1.0, h=0.1, n=100. Korišćenjem naredbe plot nacrtati dobijeno rešenje.
Praktikum iz Teorije sistema - Računske vežbe
29
Na istom grafikonu nacrtati i rešenje dobijeno ugrađenom MATLAB funkcijom ode45. Rešenje: function y_prim=f1(x,y) y_prim=x+1/y; function [x,y]=rungekutta(x0,y0,fun,h,n) % inicijalizacija x=zeros(n,1);; y=zeros(n,1); y(1)=y0; for i=2:n x(i)=x(i-1)+h; K1=h*fun(x(i-1),y(i-1)); K2=h*fun(x(i-1)+1/3*h,y(i-1)+1/3*K1); K3=h*fun(x(i-1)+2/3*h,y(i-1)+2/3*K2); y(i)=y(i-1)+1/4*(K1+3*K3); end >> [x,y]=rungekutta(0.0,1.0,@f1,0.1,100); >> plot(x,y,'xr'); >> ode45(@f1,[0 10],1.0);
Slika 11.
27. Za aproksimativno određivanje partikularnog rešenja obične diferencijalne jednačine prvog reda ),(' yxfy = , uz početni uslov y(x0)= y0 koristi se i rekurentna formula Runge-Kutta četvrtog reda
Praktikum iz Teorije sistema - Računske vežbe
30
( )
( )
( )3114
2113
1112
111
43211
,21,
21
21,
21
,
2261
KyhxhfK
KyhxhfK
KyhxhfK
yxhfK
KKKKyy
ii
ii
ii
ii
ii
++=
÷řö
çčć ++=
÷řö
çčć ++=
=
++++=
--
--
--
--
-
koja daje niz aproksimativnih vrednosti ordinata yi za apcise xi = xi-1+h, gde je h odabrana vrednost koraka. Napraviti MATLAB funkciju rk4 koja za prosleđene vrednosti početnih uslova y0, funkciju f(x,y), interval [a, b], korak h nalazi rešenje diferencijalne jednačine. Primenom gornje funkcije naći rešenje diferencijalne jednačine 332 2' --= xyy za početne uslove y0=0, a=0, b=2, h=0.1. Korišćenjem naredbe plot nacrtati dobijeno rešenje. Rešenje: function [x,y]=rk4(y0,fun,intr,h) % inicijalizacija a=intr(1); b=intr(2); n=(b-a)/h+1; x=zeros(n,1); y=zeros(n,1); x(1)=a; y(1)=y0; for i=2:n x(i)=x(i-1)+h; K1=h*fun(x(i-1),y(i-1)); K2=h*fun(x(i-1)+1/2*h,y(i-1)+1/2*K1); K3=h*fun(x(i-1)+1/2*h,y(i-1)+1/2*K2); K4=h*fun(x(i-1)+h,y(i-1)+K3); y(i)=y(i-1)+1/6*(K1+2*K2+2*K3+K4); end >> y_prim=inline('2*y-2*x^2-3','x','y') y_prim =
Praktikum iz Teorije sistema - Računske vežbe
31
Inline function: y_prim(x,y) = 2*y-2*x^2-3 >> [x,y]=rk4(0,y_prim,[0 2],0.1); >> plot(x,y); >> xlim([0 2]);
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-120
-100
-80
-60
-40
-20
0
Slika 12.
28. Napraviti MATLAB funkciju integ koja primenom datog algoritma izračunava određeni integral za prosleđenu funkciju na intervalu od a do b. Algoritam za izračunavanje integrala dat je na sledeći način
( ) ( ) ÷÷ř
öççč
ć+++++
+++++++== ňň
+
)6(41)5(216)4(27)3(272)2(27)(216)(41
8406
hafhafhafhafhafhafafhdxxfdxxf
nha
a
b
a
gde je 6
)( abh -= .
MATLAB funkciji integ pored podintegralne funkcije proslediti i donju i gornju granicu intervala integracije.
Primenom gornje funkcije izračunati integral ( ) dxxexxxe xx
ň-+-1
0 21coscossin .
Uporediti dobijeni rezultat sa rezultatom dobijenim ugrađenom MATLAB funkcijom quad.
Prikazati površinu funkcije korišćenjem ugrađene MATLAB funkcije area. Rešenje: function val=integ(fun,intr)
Praktikum iz Teorije sistema - Računske vežbe
32
a=intr(1); b=intr(2); h=(b-a)/6; c=[41 216 27 272 27 216 41]; x=[a:h:b]; y=fun(x); val=6*h*sum(c*y')/840; >> f=@(x)(x.*exp(x).*(sin(x)-cos(x))+exp(x).*cos(x)-1)/2; >> integ (f,[0 1]) ans = 0.1437 >> quad (fp, 0, 1) ans = 0.1437 >> area(x,f(x)); >> text(0.8,0.1,sprintf('P=%.2f',integ(f,[0 1])),'Color',[1,1,1])
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
P=0.14
Slika 13. 29. Napraviti MATLAB funkciju euler za rešavanje diferencijalne jednačine prvog reda
( )yxfy ,'= na segmentu [ ]ba, , sa početnim uslovom ( ) 00 yxy = ( )ax =0 i korakom h primenom sledećeg algoritma
( )iiii yxhfyy ,1 +=+ , hxx ii +=+1 , ni ,...,1=
Praktikum iz Teorije sistema - Računske vežbe
33
Korak dobijamo korišćenjem sledećeg izraza ( ) nabh /-= , gde je n broj intervala.
Takođe, napraviti MATLAB skript datoteku u kojoj primenom gornje funkcije rešavamo diferencijalnu jednačinu 321' xyy ++= za 00 =y , 0=a , 1=b i h 1.0= . Ugrađenom MATLAB funkcijom plot na istom dijagramu nacrtati dobijeno rešenje za y (označiti ose i dati naziv dijagramu) Rešenje: function [x,y]=euler(fun,y0,a,b,h) x=a:h:b; y=zeros(size(x)); y(1)=y0; for i=1:length(x)-1 y(i+1)=y(i)+h*feval(fun,x(i),y(i)); end f1=@(x,y)(1+y.^2+x.^3); [x,y]=euler(f,0,0,1,0.1); plot(x,y); xlabel(‘x’); ylabel(‘y’);
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
x
y
30. Napraviti MATLAB funkciju euler2 za rešavanje diferencijalne jednačine drugog reda ( )',,'' yyxfy = na segmentu [ ]ba, , sa početnim uslovom ( ) 00 yxy = , ( ) 000 '' pyxy == ( )ax =0 i korakom h primenom sledećeg algoritma
Praktikum iz Teorije sistema - Računske vežbe
34
iii hpyy +=+1 , ( )iiiii pyxhfpp ,,1 +=+ ,
hxx ii +=+1 , ni ,...,1,0=
Takođe, napraviti MATLAB skript datoteku u kojoj primenom gornje funkcije rešavamo diferencijalnu jednačinu 032'3'' =--+- xyyy za 20 =y , 20 =p , 0=a , 2=b i
1.0=h . Ugrađenom MATLAB funkcijom plot na istom dijagramu nacrtati dobijena rešenja za y i 'y (označiti ose i dati naziv dijagramu). Takođe na istom dijagramu nacrtati i analitičko rešenje diferencijalne jednačine xx eexy 32 +-= . Rešenje:
function [x,y,p]=euler2(fun,a,b,y0,p0,h) x=a:h:b; y=zeros(size(x)); p=zeros(size(x)); y(1)=y0; p(1)=p0; for i=1:length(x)-1 y(i+1)=y(i)+h*p(i); p(i+1)=p(i)+h*feval(fun,x(i),y(i),p(i)); end function pp=ffn(x,y,p) pp = 3*p-2*y+2*x-3;
[x,y,p]=euler2('ffn',0,2,2,2,0.1); plot(x,y,x,p,x,x-exp(2*x)+3*exp(x));
Praktikum iz Teorije sistema - Računske vežbe
35
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2-60
-50
-40
-30
-20
-10
0
10
x
y(x)
31. Napraviti MATLAB funkciju koren koja treba da izračuna koren funkcije f(x) sa početnim tačkama x1 i x2, prema sledećem algoritmu
)()()( 1
11 n
nn
nnnn xf
xfxfxx
xx-
-+ -
--=
Izračunavanje korena funkcije obaviti u 30 iteracija i ukoliko je tačnost zadovoljena eŁ+ )( 1nxf , onda štampati rezultat ( ))(, 11 ++ nn xfx , a ako tačnost nije zadovoljena
štampati poruku o grešci “Koren nije dobijen!”.
a) Primenom gornjeg algoritma naći nule funkcije xxexf x 10ln)( -+= (x1=3, x2=4). Tačnost 310-=e .
b) Primenom gornjeg algoritma naći nule funkcije 12)( 23 +--= xxxxf (x1=0,
x2=1). Tačnost 7103 -×=e .
Rešenje:
function val=koren1(fun,x1,x2,eps) N=30; if nargin < 3 eps=1e-3; end
Praktikum iz Teorije sistema - Računske vežbe
36
x=zeros(1,N); x(1)=x1; x(2)=x2; nasao=0; for i=2:N-1 x(i+1)=x(i)-(x(i)-x(i-1))/(fun(x(i))-fun(x(i-1)))*fun(x(i)); if abs(fun(x(i+1)))<=eps val=x(i+1); nasao=1; break; end end if ~nasao error('Koren nije dobijen!'); end
a)
>> f2=@(x)(exp(x)+log(x)-10*x); >> koren1(f2,3,4); ans = 3.5265
b)
>> f2=@(x)(x^3-x^2-2*x+1); >> koren1(f2,0,1,3E-7) ans = 3.5265
Praktikum iz Teorije sistema - Računske vežbe
37
32. Napraviti MATLAB funkciju koja primenom datog algoritma izračunava određeni integral za prosleđenu funkciju na intervalu od a do b. Algoritam za izračunavanje integrala dat je kao
( ) ( )( ) ( )[ ]÷řö
çčć ĺ ++-++-++ň =
-
=
1
122124)(4)()(
3m
k
b
akhafhkafhbfbfafhdxxf
gde je m
abh2
)( -= , a 2m broj intervala integracije.
MATLAB funkciji pored podintegralne funkcije proslediti donju i gornju granicu intervala integracije, kao i m.
Gornjom funkcijom izračunati integral funkcije ďî
ďí
ě
>-ŁŁ--
-<--=
1za,111za,1
1za,1)( 2
xxxx
xxxf , pri čemu
je a=-2, b=2, m=10. Rešenje:
function val=simps(fun,a,b,m) h=(b-a)/(2*m); x=[a:h:b]; y=feval(fun,x); k=1:m-1; val=h*(feval(fun,a)+feval(fun,b)+4*feval(fun,b-h)+sum(4*feval(fun,a+(2*k-1)*h)+2*feval(fun,a+2*k*h)))/3; function y=f(x) if x<-1 y=-x-1; elseif x>=-1 & x<=1 y=1-x.^2; else y=x-1; end >> val=simps(@f,-2,2,10); >> disp(val);
Praktikum iz Teorije sistema - Računske vežbe
38
3. Control System Toolbox (CST) 1. Za uneti sistem ispitati stabilnost u otvorenoj sprezi. Rešenje: function stabilnost1 disp('Uneste brojilac:'); brojilac=input(''); disp('Uneste imenilac:'); imenilac=input(''); % Stabilnost polovi=roots(imenilac); if(max(real(polovi))>0) disp('Sistem je nestabilan u otvorenoj spezi.'); elseif(max(real(polovi))==0) disp('Sistem je kriticno stabilan u otvorenoj spezi.'); else disp('Sistem je stabilan u otvorenoj spezi.'); end 2. Za uneti sistem ispitati stabilnost u otvorenoj sprezi, utvrditi broj nestabilnih polova i prikazati Nikvistov dijagram. Rešenje: function nikvist1 disp('Uneste brojilac:'); brojilac=input(''); disp('Uneste imenilac:'); imenilac=input(''); % Stabilnost u otvorenoj sprezi polovi=roots(imenilac); if(max(real(polovi))>0) disp('Sistem je nestabilan u otvorenoj spezi.'); P=0; for i=1:size(polovi) if real(polovi)>0 P=P+1; end end elseif(max(real(polovi))==0) disp('Sistem je kriticno stabilan u otvorenoj spezi.'); P=0; else disp('Sistem je stabilan u otvorenoj spezi.');
Praktikum iz Teorije sistema - Računske vežbe
39
P=0; end disp(['P=' num2str(P)]); % Nikvistov dijagram omega=[0:0.1:100]; [re im]=nyquist(brojilac,imenilac,omega); plot(re,im); title('Nikvistov kriterijum'); xlabel('Realna osa'); ylabel('Imaginarna osa'); grid; hold on; plot(-1,0,'r+'); 3. Za uneti sistem prikazati prelaznu i težinsku funkciju. Rešenje: function odziv1 disp('Uneste brojilac:'); brojilac=input(''); disp('Uneste imenilac:'); imenilac=input(''); t=linspace(0,10); subplot(2,1,1); y1=step(brojilac,imenilac,t); plot(t,y1); title('Prelazna funkcija'); xlabel('Vreme, t') ylabel('Odziv, y') grid; subplot(2,1,2); y2=impulse(brojilac,imenilac,t); plot(t,y2); title('Tezinska funkcija'); xlabel('Vreme, t') ylabel('Odziv, y') grid; 4. Nacrtati frekfencijske karakteristike unetog sistema korićenjem CST funkcije nyquist.
Praktikum iz Teorije sistema - Računske vežbe
40
Rešenje: function nyquist2 disp('Uneste brojilac:'); brojilac=input(''); disp('Uneste imenilac:'); imenilac=input(''); % Nikvistov dijagram omega=[0:0.01:100]; [re im]=nyquist(brojilac,imenilac,omega); subplot(2,2,1); plot(omega,sqrt(re.^2+im.^2)); title('Amplitudska karakteristika'); ylabel('A(\omega)'); xlabel('\omega [rad/s]'),; grid; subplot(2,2,2); plot(omega,atan2(im,re)); title('Fazna karakteristika'); ylabel('\phi(\omega) [rad]'); xlabel('\omega [rad/s]'); grid; subplot(2,2,3); semilogx(omega,20*log(sqrt(re.^2+im.^2))); title('Logaritamsko-amplitudska karakteristika'); ylabel('L(\omega) [dB]'); xlabel('log \omega'); grid; subplot(2,2,4); semilogx(omega,atan2(im,re)); title('Logaritamsko-fazna karakteristika'); ylabel('\phi(\omega) [rad]'); xlabel('log \omega'); grid;
15.05)(+
=s
sW
Uneste brojilac: 5 Uneste imenilac: [0.5 1]
Praktikum iz Teorije sistema - Računske vežbe
41
0 50 1000
2
4
6Amplitudska karakteristika
A( w
)
w [rad/s]0 50 100
-2
-1.5
-1
-0.5
0Fazna karakteristika
f(w
) [ra
d]
w [rad/s]
10-2 100 102-50
0
50Logaritamsko-amplitudska karakteristika
L(w
) [dB
]
log w10-2 100 102
-2
-1.5
-1
-0.5
0Logaritamsko-fazna karakteristika
f(w
) [ra
d]
log w Slika 1.
5. Naći ekvivalentnu funkciju prenosa sistema opisanog blok dijagramom prikazanim na slici
G1
G2 G3 G4
H1 H2
++++ C+
Rešenje: function primer5 disp('Unesite brojilac G1') numG1=input(''); disp('Unesite imenilac G1') denumG1=input(''); disp('Unesite brojilac G2') numG2=input(''); disp('Unesite imenilac G2') denumG2=input('');
R
_
Praktikum iz Teorije sistema - Računske vežbe
42
disp('Unesite brojilac G3') numG3=input(''); disp('Unesite imenilac G3') denumG3=input(''); disp('Unesite brojilac G4') numG4=input(''); disp('Unesite imenilac G4') denumG4=input(''); disp('Unesite brojilac H1') numH1=input(''); disp('Unesite imenilac H1') denumH1=input(''); disp('Unesite brojilac H2') numH2=input(''); disp('Unesite imenilac H2') denumH2=input(''); G1=tf(numG1,denumG1); G2=tf(numG2,denumG2); G3=tf(numG3,denumG3); G4=tf(numG4,denumG4); H1=tf(numH1,denumH1); H2=tf(numH2,denumH2); W1=parallel(G1,G2); W2=parallel(G4,1); G=series(W1,W2); H=series(H1,H2); W=feedback(G,H,-1) 6. Ispitati stabilnost unetog sistema jediničnoj negativnoj povratnoj sprezi. Rešenje: function stabilnost3 disp('Uneste brojilac:'); brojilac=input(''); disp('Uneste imenilac:'); imenilac=input(''); G=tf(brojilac, imenilac); W=feedback(G,1); [num,den]=tfdata(W,'v')
Praktikum iz Teorije sistema - Računske vežbe
43
polovi=roots(den); if(max(real(polovi))>0) disp('Sistem je nestabilan u povratnoj spezi.'); elseif(max(real(polovi))==0) disp('Sistem je kriticno stabilan u povratnoj spezi.'); else disp('Sistem je stabilan u povratnoj spezi.'); end 7. Napisati neku funkciju prenosa sistema korišćenjem kompleksne promenljive s. Rešenje: >> s=tf('s') Transfer function: s >> W=(s+1)/(s^2+15*s+3) Transfer function: s + 1 -------------- s^2 + 15 s + 3 7. Naći funkciju prenosa sistema prikazanog na slici
Takođe, naći prelaznu i težinsku funkciju dobijenog sistema. Rešenje: function odziv3 K=input('K='); G1=zpk([-2 -5],[-1 -3 4],1); G2=tf(K,[1 8]); H=zpk(-5,-7,1); G=G1*G2; W=feedback(G,H) step(W); pause; impulse(W);
_ R C
8K
s +
)4)(3)(1()5)(2(-++
++sss
ss
57
ss+
+
Praktikum iz Teorije sistema - Računske vežbe
44
K= 3 Zero/pole/gain: 3 (s+7) (s+5) (s+2) ----------------------------------------------------- (s-3.67) (s+2.957) (s+0.8727) (s^2 + 14.84s + 55.11)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.70
0.2
0.4
0.6
0.8
1
1.2
1.4Step Response
Time (sec)
Ampl
itude
Slika 2.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.70
1
2
3
4
5
6Impulse Response
Time (sec)
Ampl
itude
Slika 3.
8. Korišćenjem MATLAB funkcije ss formirati model u prostoru stanja. Rešenje: function prostorstanja1
Praktikum iz Teorije sistema - Računske vežbe
45
A=input('A='); B=input('B='); C=input('C='); D=input('D='); dimA=size(A); dimB=size(B); dimC=size(C); dimD=size(D); if dimA(1)~=dimB(1) error('Greska, dimA(1)~=dimB(1)!'); elseif dimC(1)~=dimD(1) error('Greska, dimC(1)~=dimD(1)!'); elseif dimC(2)~=dimA(2) error('Greska, dimC(2)~=dimA(2)!'); end sys=ss(A,B,C,D) 9. Korišćenjem MATLAB funkcije ss formirati model u prostoru stanja. Prikazati dobijeni model u obliku funkcije prenosa i ZPK. Rešenje: function prostorstanja2 A=input('A='); B=input('B='); C=input('C='); D=input('D='); dimA=size(A); dimB=size(B); dimC=size(C); dimD=size(D); if dimA(1)~=dimB(1) error('Greska, dimA(1)~=dimB(1)!'); elseif dimC(1)~=dimD(1) error('Greska, dimC(1)~=dimD(1)!'); elseif dimC(2)~=dimA(2) error('Greska, dimC(2)~=dimA(2)!'); end disp('Model u prostoru stanja') ; sys=ss(A,B,C,D) disp('Funkcija prenosa') ; ss2tf(A,B,C,D) disp('ZPK') ss2zpk(A,B,C,D)
Praktikum iz Teorije sistema - Računske vežbe
46
10. Ispitati kontolabilnost i opservabilnost sistema čiji je model u prostoru stanja
5 1 3 1
( ) 0 4 1 ( ) 0 ( )
2 8 0 2
x t x t u t= +é ů é ůę ú ę úę ú ę úę ú ę úë ű ë ű
&
[ ]( ) 7 0 5 ( ) 2 ( )y t x t u t= + Rešenje: function prostorstanja3 A=[5 1 3;0 4 1;2 8 0]; B=[1 0 2] '; C=[7 0 5]; D=2; if rank(ctrb(A,B))==size(A,1) disp('Sistem je potpuno kontrolabilan!'); else disp('Sistem nije kontrolabilan po svim stanjima!'); end if rank(obsv(A,C))==size(A,1) disp('Sistem je potpuno observabilan!'); else disp('Sistem nije observabilan po svim stanjima!'); end 11. Za sistem čiji je model u prostoru stanja
( ) ( ) ( )
( ) [ ] ( )
2 1 0
0 2 1
5 0
x t x t u t
y t x t
-= +
-
=
é ů é ůę ú ę úë ű ë ű
&
naći izlaz iz sistema, za početne vrednosti vektora stanja ( ) ( )1 20 0 1x x= = i ulazni signal tetu 2)( -= . Nakon toga, gornji sistem posmatrati kao autonoman (homogen). Prikazati
odziv sistema u oba slučaja. Rešenje: function prostorstanja4 A=[-2 1;0 -2]; B=[0 1]'; C=[5 0]; D=0; x0=[1 1]';
Praktikum iz Teorije sistema - Računske vežbe
47
t=linspace(0,5); u=exp(-2*t); [y,x] = lsim(A,B,C,D,u,t,x0); plot(t,x); legend('x_1','x_2','Location','NorthEast'); title('Promenljive stanja nehomogenog sistema'); xlabel('Vreme [s]'); ylabel('x_1(t), x_2(t)'); pause; plot(x(:,1),x(:,2)); title('Kretanje sistema u prostoru stanja'); xlabel('x_1(t)'); ylabel('x_2(t)'); pause; plot(t,y); title('Odziv nehomogenog sistema'); xlabel('Vreme [s]'); ylabel('y(t)'); pause; [y,t,x]=initial(ss(A,B,C,D),x0); plot(t,x); legend('x_1','x_2','Location','NorthEast'); title('Promenljive stanja homogenog sistema'); xlabel('Vreme [s]'); ylabel('x_1(t), x_2(t)'); pause; plot(x(:,1),x(:,2)); title('Kretanje sistema u prostoru stanja'); xlabel('x_1(t)'); ylabel('x_2(t)'); pause; plot(t,y); title('Odziv homogenog sistema'); xlabel('Vreme [s]'); ylabel('y(t)'); 12. U SIMULINK-u nacrtati simulacioni blok dijagram sistema opisanog linearnom diferencijanom jednačinom
)(10)()(2)(5)( tutytytyty =+++ &&&&&&
i naći odziv sistema kada je ulazni signal u(t) jedinična odskočna funkcija.
Praktikum iz Teorije sistema - Računske vežbe
48
Rešenje:
Slika 4.
Slika 5. 13. U SIMULINK-u nacrtati simulacioni blok dijagram nelinearnog sistema opisanog diferencijalnom jednačinom
)()()()()( tutytytyty =++ &&&&
i naći odziv sistema kada je ulazni signal u(t) sinusna funkcija. Rešenje:
Praktikum iz Teorije sistema - Računske vežbe
49
Slika 6.
Slika 7. 14. U SIMULINK-u nacrtati simulacioni blok dijagram sistema linearnih diferencijanih jednačina
)()(2)(4)(3)( 21211 tututytyty &&&& +=++
)(5)(7)( 222 tutyty =+&
i naći odziv sistema kada je ulazni signal u1(t)=sin2t i u2(t)=sin(2t-p/4). Rešenje:
Praktikum iz Teorije sistema - Računske vežbe
50
Slika 8.
Slika 9. y1(t)
Slika 10. y2(t)
Praktikum iz Teorije sistema - Računske vežbe
51
Slika 11.
15. Simulirati ponašanje sistema opisanog funkcijom prenosa 143
32)( 23
2
+++++
=sss
sssG
kada se na ulaz dovede jedinična odskočna funkcija. Naći rešenje primenom bloka funkcije prenosa i crtanjem simulacionog blok dijagrama sistema, pri čemu je blok dijagram potrebno realizovati korišćenjem bloka podsistema.
Rešenje:
Slika 12.
Diferencijalna jednačina sistema G(s) glasi uuuyyyy 3243 ++=+++ &&&&&&&&& , transformacijom dobijamo
( ) úű
ůęë
é÷řö
çčć +-++-++-= uy
suy
suy
sy 3124131&
odakle formiramo sledeći blok dijagram
Praktikum iz Teorije sistema - Računske vežbe
52
Slika 13.
Slika 14.
Praktikum iz Teorije sistema - Računske vežbe
53
16. Simulirati ponašanje sistema opisanog modelom u prostoru stanja
)(102
)(100
102101
)( tutxtxúúú
ű
ů
ęęę
ë
é+
úúú
ű
ů
ęęę
ë
é-=&
[ ] )(201)( txty -=
kada se na ulaz dovede Dirakov impuls funkcija. Početni vektor stanja glasi [ ]101)0( -=x T. Naći rešenje primenom bloka modela u prostoru stanja.
Rešenje:
Slika 14.
Slika 15.
17. Za sistem prikazan na slici odrediti trajektoriju u ravni (x1, x2)
1/s 1/s U
-U _
u x2 x1 e Sistem
Praktikum iz Teorije sistema - Računske vežbe
54
za početni vektor stanja x1(0)=1, x2(0)=0.
Rešenje:
Slika 16.
Slika 17.