
% Sean Costello et Sandra Brella, 2014
%------------------------------------------------------------------------------------
% SD demo 11
% QUESTION: Resoudre l'exo 1, serie 11, avec la methode des moindres carres
%------------------------------------------------------------------------------------

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

%------------------------------------------------------------------------------------
% Introduction et affichage des donnees
%------------------------------------------------------------------------------------
t_points = [0 1.8 2 2.2 2.4 2.6 2.8 3.0 3.2 3.4];
y_points = [0 0 0 0.349 0.455 0.486 0.496 0.499 0.5 0.5];
plot(t_points, y_points, 'b*--') 
xlabel('temps (s)'), ylabel('y')

%------------------------------------------------------------------------------------
% Reponse indicielle
%------------------------------------------------------------------------------------
% En observant l'affichage des donnees, on voit qu'il s'agit de la reponse 
% d'un systeme du premier ordre retardee de 2 secondes. La reponse indicielle 
% pour t >= 2 s'ecrit donc sous la forme:

y_func = @(p,t) p(1)*(1-exp(-(t-2)/p(2))); % vecteur de parametres p=[K, tau]

%------------------------------------------------------------------------------------
% Methode des moindres carres
%------------------------------------------------------------------------------------
% On utilise la methode des moindres carres pour minimiser la difference
% entre la fonction analytique y_func et les mesures. Attention, on
% considere les mesures seulement a partir de t=2 car pour t<2, y_func ne 
% decrit pas la reponse du systeme.

% vecteur d'initialisation p0 (valeurs choisies au hazard)
p0 = [0.7 0.3]; 

p = lsqcurvefit(y_func,p0,t_points(3:end),y_points(3:end)); 


% On imprime le resultat des moindres carres sur la console
%----------------------------------------------------------
display(sprintf('-----------\nK = %0.2f \ntau = %0.2f s \n-----------', p(1), p(2)))



