
% Sean Costello et Sandra Brella, 2014
%--------------------------------------------------------------------------------
% SD demo 7
% QUESTION: Simuler le systeme lineaire de l'exo 2, serie 7
%--------------------------------------------------------------------------------
% Il s'agit d'un systeme LINEAIRE. Il existe toute une gamme de fonctions MATLAB
% pour la simulation des systemes lineaires. Deux methodes sont presentees
% ci-dessous.
%--------------------------------------------------------------------------------

% Nettoyage de l'espace de travail
clear all; close all; clc;

%--------------------------------------------------------------------------------
% Definition des parametres physiques 
%--------------------------------------------------------------------------------
a = 5;      % [1/s]
b = 12;     % [rad/(Vs^2)]
u=1;

% *******************************************************************************
% Methode 1 (le systeme est defini par sa fonction de transfert)
% *******************************************************************************
s = tf('s'); % On cree une fonction de transfert s, avec nom 's'. Cela facilite 
             % la declaration de fonctions de transfert plus compliquees.
G = b/(s+a)  % C'est la fonction de transfert, W(s)/U(s)

%--------------------------------------------------------------------------------
% Simulations et affichage des resultats
%--------------------------------------------------------------------------------
figure('name', 'Reponse impulsionelle')
impulse(G)  
figure('name', 'Reponse indicielle')
step(G)     

% Commentaire
% -----------
% Il existe d' autres outils pour les systemes lineaires. Pour voir toute 
% la gamme, tapez: 'ltiview(G)'


% *******************************************************************************
% Methode 2 (le systeme est defini par son equation dynamique)
% *******************************************************************************
%--------------------------------------------------------------------------------
% L'equation dynamique doit etre une fonction sous la forme dx/dt = f(t,x)
% Etats: x = omega (vitesse [rad/sec]), Entree:u
%--------------------------------------------------------------------------------
mydyn = @(t,x) [-a*x+b*u]; 

%--------------------------------------------------------------------------------
% Definition des conditions initiales 
%--------------------------------------------------------------------------------
omega_0 = 0;

%--------------------------------------------------------------------------------
% Integration Numerique du modele de la vitesse
%--------------------------------------------------------------------------------
odeoptions = odeset('RelTol',1e-6,'AbsTol',1e-6,'Stats','on'); 
tspan = [0,1.2]; %horizon temporel de la simulation en [s]
[tsim, xsim] = ode45(mydyn,tspan,omega_0,odeoptions); 

%--------------------------------------------------------------------------------
% Affichage des resultats
%--------------------------------------------------------------------------------
figure('Name','Vitesse angulaire'),
plot(tsim, xsim,'color', 'red')
hold on
step(G)
ylabel('\omega [rad/s]');
legend('ode45','step(G)')

