Laboratorium 2

Zadanie 1

Napisz program w Matlabie , który dla układu wszechprzepustowego, przedstawionego na rys. 1 wyznaczy równania stanu metodą DS (Dc Substitution).

KOD

clc; clear; close all;
 
% --- Wartości elementów ---
R1 = 626.25;
R2 = 22.55e3;
R3 = 25.05e3;
R4 = 225.45e3;
C1 = 0.1e-6;
C2 = 0.1e-6;
Ein = 1;
 
% --- Parametry układu ---
N = 2;
M = 1;
U = 3;
Y = 3;

E1 = 1;
E2 = 1;
 
%% --- Macierz A1 ---
A1 = [...
    (1/R1),  0,             0,      1,      1;
    0,      (-1/R2),        (1/R2), 1,      0;
    0,      (1/R3 +1/R4),   0,      0,      0;
     1,     -1,             0,      0,      0;
     1,      0,             -1,     0,      0];
 
%% --- Macierz B2 ---
B2 = [...
    0,    0,  (Ein/R1);
    0,    0,  0;
    0,    0,  (Ein/R3);
    E1,   0,  0;
    0,    E2,  0];
    
%% --- Macierz P ---
P = [...
    C1 0; 
    0 C2];
 
%% --- Obliczenia ---
V = A1 \ B2;
 
H = V(U+1:U+N, 1:N+M); 

AB = P \ H;
 
A = AB(1:N, 1:N)
B = AB(1:N, N+1:N+M)
 
C = V(Y:Y, 1:N)
D = V(Y:Y, N+1:N+M)

Wartosci_Wlasne=eig(A)

                
WYNIKI


A =

   1.0e+04 *

   -0.0443    0.0443
   -1.5525   -0.0443


B =

   1.0e+03 *

         0
    1.5968


C =

     1    -1


D =

    0.9000


Wartosci_Wlasne =

   1.0e+03 *

  -0.4435 + 2.6238i
  -0.4435 - 2.6238i

>> 
                

Zadanie 2

Porównanie opisu układu wszechprzepustowego za pomocą równań stanu z opisem za pomocą transmitancji.

KOD

clc; clear; close all;
 
% --- Wartości elementów ---
R1 = 626.25;
R2 = 22.55e3;
R3 = 25.05e3;
R4 = 225.45e3;
C1 = 0.1e-6;
C2 = 0.1e-6;
Ein = 1;
 
%% --- Obliczenia ---
K = (R3 + R4)/R4;

Cw = C1;
 
beta = R2*Cw/(2*R1);
gamma = R4/(4*R1*R2);
 
% --- (a) Współczynniki wielomianów ---
disp('a) :');
num = K*[gamma, -beta, 1]
den = [gamma, beta, 1]

 
% --- (b) Pierwiastki wielomianu mianownika transmitancji ---
disp('b) :');
funkcja_roots = roots(den)
 
A1 = [...
    (1/R1),  0,             0,      1,      1;
    0,      (-1/R2),        (1/R2), 1,      0;
    0,      (1/R3 +1/R4),   0,      0,      0;
     1,     -1,             0,      0,      0;
     1,      0,             -1,     0,      0];
 
B2 = [...
    0,    0,  (Ein/R1);
    0,    0,  0;
    0,    0,  (Ein/R3);
    1,   0,  0;
    0,    1,  0];
 
P = [C1 0; 0 C2];
 
V = A1 \ B2;
N = 2; M = 1; U = 3; Y = 3;
H = V(U+1:U+N, 1:N+M);
AB = P \ H;
A = AB(1:N, 1:N);
B = AB(1:N, N+1:N+M);
C = V(Y:Y, 1:N);
D = V(Y:Y, N+1:N+M);
 
Macierz_A = A
Wartosci_Wlasne = eig(A)

Porownianie_Roots = table(funkcja_roots, Wartosci_Wlasne)
 
% --- (c) tf2zp ---
disp('c) :');
[z,p,k] = tf2zp(num, den)

% --- (d) tf2ss ---
disp('d) :');
[A_tf,B_tf,C_tf,D_tf] = tf2ss(num, den)
 
Porownanie_tf2ss=[eig(A_tf), eig(A)]
 
% --- (e) pzmap ---
sys = tf(num, den);
figure; pzmap(sys);
 
% --- (g) Odpowiedź skokowa ---
figure; step(sys);
 
% --- (h) Bode ---
figure; bode(sys);                    
                
WYNIKI

a) :

num =

    0.0044   -0.0000    1.1111


den =

    0.0040    0.0000    1.0000

b) :

funkcja_roots =

  -0.0002 +15.8289i
  -0.0002 -15.8289i


Macierz_A =

   1.0e+04 *

   -0.0443    0.0443
   -1.5525   -0.0443


Wartosci_Wlasne =

   1.0e+03 *

  -0.4435 + 2.6238i
  -0.4435 - 2.6238i


Porownianie_Roots =

  2×2 table

       funkcja_roots       Wartosci_Wlasne
    ___________________    _______________

    -0.00022555+15.829i    -443.46+2623.8i
    -0.00022555-15.829i    -443.46-2623.8i

c) :

z =

   0.0002 +15.8289i
   0.0002 -15.8289i


p =

  -0.0002 +15.8289i
  -0.0002 -15.8289i


k =

    1.1111

d) :

A_tf =

   -0.0005 -250.5556
    1.0000         0


B_tf =

     1
     0


C_tf =

   -0.0010    0.0000


D_tf =

    1.1111


Porownanie_tf2ss =

   1.0e+03 *

  -0.0000 + 0.0158i  -0.4435 + 2.6238i
  -0.0000 - 0.0158i  -0.4435 - 2.6238i

>>