diff --git a/Lab05.m b/Lab05.m new file mode 100644 index 0000000..74a0ee1 --- /dev/null +++ b/Lab05.m @@ -0,0 +1,57 @@ +%% Setup variabili +A = [0 1; -3 -4]; +B = [0 ; 1]; +C = [2 1]; +D = 0; + +%% Punto 1-2 +lambda_k = [-0.7 -0.8]; +lambda_o = [-10 -11]; + +% Controllo raggiungibilità +M_R = ctrb(A,B); +rank(M_R) +% Rango 2: completamente raggiungibile + +% Controllo osservabilità +M_O = obsv(A,C); +rank(M_O) +% Rango 2: completamente osservabile + +% Calcolo K +K = place(A,B,lambda_k); + +% Calcolo L +L = place(A',C',lambda_o)'; + +% Calcolo alpha +alpha = inv(-C*((A-B*K)\B)); + +%% Punto 3 +% (Su simulink) Si osserva che l'uscita del sistema tende ad 1 + +%% Punto 4 +lambda_k_4 = [-10 -12]; +K_4 = place(A,B,lambda_k_4); +alpha_4 = inv(-C*((A-B*K_4)\B)); +% Si osserva che con autovalori troppo elevati il sistema converge lo stesso, ma +% all'inizio si osserva un transitorio con valori troppo grandi (più sono grandi gli autovalori, più +% l'errore cresce) + +% Con questa tecnica non riesco a controllare il sistema velocemente per +% via dello zero nella H(s) +minreal(zpk(ss(A,B,C,D))) + +%% Punto 5 +% Nota: ripristinare gli autovalori del punto 1. +epsilon = 10.^(-2/20); +B_reale = B.*epsilon; +% Osserviamo che il sistema "reale" (con la perturbazione) è instabile. + +%% Punto 6 +lambda_o_6 = [-1000 -1100]; +L_6 = place(A',C',lambda_o_6)'; + +%% Punto 7 +lambda_o_7 = [-1000 -2]; +L_7 = place(A',C',lambda_o_7)'; \ No newline at end of file diff --git a/Lab05S.slx b/Lab05S.slx new file mode 100644 index 0000000..e4e0bb8 Binary files /dev/null and b/Lab05S.slx differ