Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Grupa 332 AA
AT X XA C
for i = 1:m
for j = 1:m
X(i,j)=(C(i,j)-A(i-1,i)*X(i-1,j)-X(i,j-1)*A(j-1,j))/(A(i,i)+A(j,j))
end
end
Problema 4 : Se consider date matricile A R mxm superior bidiagonal i C R mxm .Se cere un
program MATLAB eficient pentru rezolvarea ecuaiei matriciale Liapunov discrete AT XA X C
for j=1:m
for i=j:m
X(i,j) = (C(i,j) (A(i-1,i)*X(i-1,j-1)*A(j-1,j)+A(i,i)*X(i,j-1)*A(j-1,j)+A(I-1,I)*X(I1,j)*A(j,j))/ /(A(i,i)*A(j,j)-1 )
end
end
Laboratorul 3 - Calculul funciilor de matrice. Exponeniala matriceal
Problema 1 : Algoritmul Parlett n versiunile pe linii i pe coloane.
function [F]=ParlletLinii(T,f)
n=length(T);
F=zeros(n);
for i=n:-1:1
F(i,i)=feval(f,T(i,i));
for j=i+1:n
s=0;
for k=i+1:j-1
s=s+T(i,k)*F(k,j)-F(i,k)*T(k,j);
end
F(i,j)=(T(i,j)*(F(j,j)-F(i,i))+s)/(T(j,j)T(i,i));
end
end
function [F]=ParlletColoane(T,f)
n=length(T);
F=zeros(n);
for j=1:n
F(j,j)=feval(f,T(j,j));
for i=j-1:-1:1
s=0;
for k=i+1:j-1
s=s+T(i,k)*F(k,j)-F(i,k)*T(k,j);
end
F(i,j)=(T(i,j)*(F(j,j)-F(i,i))+s)/(T(j,j)T(i,i));
end
end
X=eye(n);
F=eye(n);
p=6;
for k=1:p
X=1/k*t*A*X;
F=F+X;
end
for i=1:n
F(i,i)=feval(f,T(i,i));
end
for i=1:n
for j=i-1:-1:1
F(i,j)=T(i,j)*(F(j,j)-F(i,i));
s=0;
for k=j+1:i-1
s=s+T(i,k)*F(k,j)-F(i,k)*T(k,j);
end
F(i,j)=(F(i,j)+s)/(T(j,j)-T(i,i));
end
end
Problema 4 : Scriei un algoritm eficient pentru calculul funciei F = f(A), unde A este superior
bidiagonal cu elemente diagonale distincte.
function [F]=SupBdg(T,f);
n=length(T);
for i=n:-1:1
F(i,i)=feval(f,T(i,i));
for j=i+1:n
F(i,j)=(T(i,i+1)*F(i+1,j)-F(i,j-1) * T(j-1,j))/(T(j,j)-T(i,i));
end
end
Laboratorul 4 - Modele sistemice liniare. Reprezentare numeric. Conversii. Conexiuni
Problema 1 : Funcii proprii de conversie tf2ss.
function [A,B,C]= tf2ssSISO(N,p)
n = length(N);
A = zeros(n,n);
B = zeros(n,1);
C = zeros(1,n);
B(1,1) = 1;
for i=1:n
C(1,i) = N(1,i);
end
for i=1:n-1
A(i+1,i) = 1;
end
for i=1:n
A(1,i) = -p(1,i+1);
End
function [A,B,C]=tf2ssSIMO(N,p)
[l,ni] = size(p);
M = zeros(l,ni-1);
for i=1:l
M(i,:) = roots(p(i,:));
end
Rad = zeros(1,ni+l);
k = 0;
for i=1:l
for j=1:ni-1
apar = 0;
for ki=1:k
if (Rad(1,ki) == M(i,j))
apar = apar +1;
end
end
if(apar = = 0)
k = k+1;
Rad(1,k) = M(i,j);
end
end
end
n = k + 1;
p1 = zeros(1,n);
p1 = poly(Rad(1,:));
A = zeros(n-1);
for i=1:n-1
A(1,i) = -p1(1,i+1);
A(i,i+1) = 1;
end
B = zeros(n-1,1);
B(1,1) = 0;
C = zeros(l,n-1);
for i=1:l
for j=1:n-1
C(i,j) = N(i,j);
end
end
Problema 2 : Se vor scrie programe MATLAB proprii pentru implementarea algoritmilor de calcul
polinomial necesare manipulrii matricelor de transfer.
%Suma a 2 polinoame de grade diferite.
function[c]=suma(a,b)
[p,m]=size(a);
[p,n]=size(b);
c=zeros(1,max(m,n));
if m>n
for i=1:m-n
c(i)=a(i);
end
for i=m-n+1:m
c(i)=b(i-m+n)+a(i);
end
else
for i=1:n-m
c(i)=b(i);
end
for i=n-m+1:n
c(i)=a(i-n+m)+b(i);
end
end
%mprirea a 2 polinoame cu proprietetea: gradul primului este mai mare dact gardul celui de-al
doilea
function[c]=impartzire(a,b)
[p,m]=size(a);
[p,n]=size(b);
var=m-n+1;
c=zeros(1,var);
c(1)=a(1)/b(1);
if (mod(m,2)==1)
for i=2:var
s=0;
for j=1:i-1
s=s+c(j)*b(var-j+1);
end
c(i)=(a(i)-s)/b(1);
end
else
for i=s:var-1
s=0;
for j=1:i-1
s=s+c(j)*b(var-k);
end
c(i)=(a(i)-s)/b(1);
end
c(var)=a(m)/b(n);
end
%Calcului coeficienilor unui polinom cunoscnd rdcinile
function[b]=coeficientzi(a)
[p,m]=size(a);
for i=1:m+1
b(i)=0;
end
b(1)=1;
for i=1:m
for j=i+1:-1:2
b(j)=b(j)- a(i)*b(j-1);
end
end
Problema 3 : Fiind date trei sisteme Si, i=1:3, prin metodele lor de transfer, s se scrie algoritmii de
construcie ai matricelor de transfer ale sistemelor rezultate prin interconectarea sistemelor date
conform schemelor din figurile:
H 21 H 1 U 1 H 21 H 2 H 12 H 1U 2 H 22 H 1U 2 H 22 H 1 H 11 H 2U 2
1 H 11 H 2 H 22 H 1 H 22 H 1 H 11 H 22 H 21 H 2 H 11 H 1
function [HH1,HH2]=mymatricetransfer_a(H1,H2,H3)
[m1,n1]=size(H1);
[m2,n2]=size(H2);
[m3,n3]=size(H3);
Hd1=zeros(m2+m3,n2+n3);
Hd1(1:m2,1:n2)=H2;
Hd1(m2+1:m2+m3,n2+1:n2+n3)=H3;
Hs1=zeros(m2+m3,n2+n3);
Hs1(1:m2,n3+1:n2+n3)=H2;
Hs1(m2+1:m2+m3,1:n3)=H3;
HH1=inv(eye(m2+m3,n2+n3)-Hs1)*Hd1;
Hd1=zeros(m1+m3,n1+n3);
Hd1(1:m1,1:n1)=H1;
Hd1(m1+1:m1+m3,n1+1:n1+n3)=H3;
Hs1=zeros(m1+m3,n1+n3);
Hs1(1:m1,n3+1:n1+n3)=H1;
Hs1(m1+1:m1+m3,1:n3)=H3;
HH2=inv(eye(m1+m3,n2+n3)-Hs1)*Hd1;
Matricea de transfer pentru (b):
function [HH1,HH2]=mymatricetransfer_b(H1,H2,H3)
[m1,n1]=size(H1);
[m2,n2]=size(H2);
[m3,n3]=size(H3);
Hd1=zeros(m2+m3,n2+n3);
Hd1(1:m3,1:n3)=H3;
Hd1(m3+1:m2+m3,n3+1:n2+n3)=H2;
Hs1=zeros(m2+m3,n2+n3);
Hs1(1:m3,n2+1:n2+n3)=H3;
Hs1(m3+1:m2+m3,1:n2)=H2;
HH1=inv(eye(m2+m3,n2+n3)-Hs1)*Hd1;
Hd1=zeros(m1+m3,n1+n3);
Hd1(1:m3,1:n3)=H3;
Hd1(m3+1:m1+m3,n3+1:n1+n3)=H1;
Hs1=zeros(m1+m3,n1+n3);
Hs1(1:m3,n1+1:n1+n3)=H3;
Hs1(m3+1:m1+m3,1:n1)=H1;
HH2=inv(eye(m1+m3,n2+n3)-Hs1)*Hd1;
Problema 4 : Se d sistemul S= (A,B,C,D) ale crui matrice au structura:
S se scrie o procedur de reprezentare a lui S sub forma unei conexiuni a) paralel i b) serie a dou
sisteme S1, S2 convenabil definite.
a) la conexiunea serie:
x1'
A1 x1 B1u
'
x2 A2 x2 B2 (C1 D1u )
rezult:
0
A1
B1
A
si B
. =>
B2 C1 A2
B2 D1
A21=B2C2 si G2=B2D1
y=y2=C2X2+D2u2=C2x2+D2(C1X1+D1u) = D2 C1
1
C 2 [D2D1]u
x2
D2 .
Y(:,k)=C*x+D*U(:,k);
x=SL_GPP(A,x-B*U(:,k))
end
s-au folosit pentru rezolvarea exerciiului anterior urmtoarele funcii:
function [A,U,p]=GPP(A)
n=length(A);
b=0;
U=zeros(n);
p=1:1:n;
for k=1:n-1
v=1:1:n-k+1;
for i=k:n
v(i-k+1)=abs(A(i,k));
end
d=max(v);
for i=k:n
if d==abs(A(i,k))
p(k)=i;
break;
end
end
for j=k:n
s=A(k,j);
A(k,j)=A(p(k),j);
A(p(k),j)=s;
end
for i=k+1:n;
U(i,k)=A(i,k)/A(k,k);
A(i,k)=0;
end
for i=k+1:n
for j=k+1:n
A(i,j)=A(i,j)-U(i,k)*A(k,j);
end
end
end
function [x]=SL_GPP(A,b)
n=length(b);
[U,M,p]=GPP(A);
for k=1:n-1
s=b(k);
b(k)=b(p(k));
b(p(k))=s;
for i=k+1:n
b(i)=b(i)-M(i,k)*b(k);
end
x=s_sup_tr(b,U);
end
function [x]=s_sup_tr(b,a)
n=length(b);
for i=n:-1:1
s=b(i);
if i<n
for k=i+1:n
s=s-a(i,k)*x(k);
end
end
x(i)=s/a(i,i);
end
M(m+1:2*m,1:m)=-w*eye(m,m);
M(m+1:2*m,m+1:2*m)=-A;
R=[B*gamma1;B*gamma2];
v=SL_GPP(M,R)
v1=v(1:m)'
v2=v(m+1:2*m)'
w1=C*v1+D*gamma1;
w2=C*v2+D*gamma2;
V=[w1 w*w2]
W=C*V+D*CG
Y=initial_g(AG,W,BG,h,tf);
s-a folosit funcia descris la exercitiul anterior, SL_GPP, si funcia specific sistemelor SIMO:
function [Y]=initial_g(A,C,x,h,tf)
kf=fix(tf/h);
Ad=expm(h*A);
B=zeros(length(A),1);
D=zeros(length(C),1);
Y=dinitial(Ad,B,C,D,x);
Problema 4 : Programul MATLAB pentru implementarea algoritmului de calcul al caracteristicilor
de frecven a unui sistem SISO continuu. Se prevede reprezentarea grafic a hodografului
(diagrama Nyquist), a modulului i fazei (diagrame Bode)
function [RE,IM]=caract_frecv(a,b,c,d,w,n)
for k=1:n
w(k)=10^(k-1);
end
[M,H]=hess(a)
b=M*b
c=c*inv(M)
[m,m]=size(a)
for k=1:n
a0=i*w(k)*eye(m)-a
[N,R]=schur(a0)
[N,R]=rsf2csf(N,R)
b0=N*b
V=inv(a0)*b0
T=c*V+d
w(k)
RE=[RE real(T)]
IM=[IM imag(T)]
A=[A sqrt(real(T)^2+imag(T)^2)]
F=[F atan(imag(T)/real(T))]
end
J=ss(a,b,c,d);
[Re,Im]=nyquist(J,w)
[MAG,PHASE] = BODE(J,w)