Vous êtes sur la page 1sur 6

Université KASDI MERBAH Ouargla

Faculté des nouvelles technologies de L’information Et


de la communication
Département d’électronique et des télécommunications

TP Techniques d’identification 2
Méthode des variables instrumentales

Dr. Ben chabane

Réalisé par :
 HAKKOUM Med Imad eddine
 HAKKOUM Med Sliman
 Benchehem Haithem Abderahmane

[1]
2022/2021

Partie théorique :

I. Méthode des variables instrumentales

La méthode de la variable instrumentale (T.Soderstrom, P.Stoice, 1983)


est une méthode paramétrique statistique d’identification. Elle fut très
utilisée pour l’identification en boucle fermée avant que soient développées
les méthodes d’erreur de prédiction. Elle permet d’annuler
asymptotiquement le biais sur les vecteurs de paramètres (le problème de
l’identification en B.F. est que le retour u(t) est corrélé avec la perturbation).
Par cette méthode on rend l’utilisation de la méthode des moindres carrés
consistante en rajoutant une matrice variable instrumentale x(t),
indépendante de ε(t ,θ ) pour remplacer φ(t ) . Pour remplir les conditions
N
∑ φ (t )Fφ(t )T
d’identifiabilité par la méthode des moindre carrés, il faut que i=1
soit inversible, ce qui ne peut pas être le cas. On utilise alors la variable
N
∑ x (t )φ(t )Fφ(t )T
instrumentale x(t) pour rendre i=1 inversible. Le choix de x(t) se
fait par décalage des entrées sorties dans φ(t ) , filtrage des entrées-sorties,
utilisation d’un modèle auxiliaire

II. Algorithme des variables instrumentales récursif

La méthode des variables instrumentales est utilisée pour estimer les


paramètres du modèle utilisant l’erreur d’équation.
y (k )   T  (k )   ( k )

Supposons que le système réel est de la forme :


y ( k )   0T  ( k )  e ( k )

e(k ) est une perturbation,  0 le vecteur des vrais paramètres. Avec la méthode
[2]
des moindres carrés on aura :
1 N
N 
ˆ     (k ) T (k )    ( k ) y (k )
 k 1  k 1

1
N  N 
ˆ   0     ( k ) T ( k )     ( k ) y ( k )   0
 k 1   k 1 
1
N  N N  
ˆ   0     (k ) T (k )    (k ) y (k )     (k ) T (k )   0 
 k 1   k 1  k 1  
1
N  N 
ˆ   0     (k ) T (k )    (k )  y (k )   T (k )0  
 k 1   k 1 
1
N  N 
ˆ   0     (k ) T ( k )     ( k )e( k ) 
 k 1   k 1 
1
1 N
 1 N

ˆ   0  
N

k 1
 (k ) (k )  
T

 N
  (k )e(k ) 
k 1

N
1
N 
N
  (k )
k 1
T

(k )  E  (k ) T (k )
N
1
N
  (k )e(k )  E   (k )e(k )
k 1

Manipulation sous Matlab :


On considère le système :

S : A ( q−1 ) y ( k ) =B ( q−1 ) u ( k ) +C ( q−1 ) e ( k )


où e (k ) est supposé un bruit blanc Gaussien, indépendant de de l’entrée e (k ), avec une
moyenne nulle et une variance σ 2.En ce qui suit, les paramètres des deux systèmes sont
donnés par :
A ( q−1 )=1−0.8 q−1 B ( q−1) =q−1 , C ( q−1 ) =1−0.8 q−1 σ 2=1

[3]
Pour identifier les deux systèmes, on suppose le modèle suivant :
( 1+a q−1 ) y ( k )=bu ( k −1 ) +ε ( k )
où le ε (k ) est l’erreur d’équation.

Méthode des variables instrumentales :

Programmer sous MATLAB :

clc, clear all


a1=-0.8; b1=1;c1=-0.9;
u=sbpa1(9,2,round(rand(1,9)));
e=randn(1,length(u));
y=filter([0 b1],[1 a1],u)+filter([1 c1],[1 a1],e);
ze=[y' u'];N=length(u);
s1=0;s2=0;
for k=2:N
f= [-y(k-1) u(k-1) ]';
s1=s1+f*f';
s2=s2+f*y(k);
end
th_MC=inv(s1)*s2
%%Decalage
s11=0;s22=0;
for k=3:N
fi= [-y(k-1) u(k-1) ]';
fz= [-y(k-2) u(k-1) ]';
s11=s11+fz*fi';
s22=s22+fz*y(k);
end
th_IV1=inv(s11)*s22
%---------Modele----------
s1=0;s2=0;
for k=2:N
f= [-y(k-1) u(k-1) ]';
s1=s1+f*f';
s2=s2+f*y(k);
[4]
end
th=inv(s1)*s2;
a=[1 th(1)]; b=[0 th(2)];
x=filter(b,a,ze(:,2));
ss1=0;ss2=0;
for k=2:N
fi= [-y(k-1) u(k-1) ]';
fz= [-x(k-1) u(k-1) ]';
ss1=ss1+fz*fi';
ss2=ss2+fz*y(k);
end
th_IV2=inv(ss1)*ss2

th_MC = -0.5942 0.9364


th_IV1 = -0.8306 0.9371
th_IV2 = -0.8327 0.9371

Algorithme des variables instrumentales récursif :

Programmer sous MATLAB :

%---------VI recurssife-----------
c=10e8;
teta= zeros(2,1);
P=c*eye(2);
for i=3:N
fi= [-y(i-1) u(i-1) ]';
fz= [-y(i-2) u(i-1) ]';
L=(P*fz)/(1+fi'*P*fz);
teta=teta+L*(y(i)-teta'*fi);
P=P-L*fi'*P;
aa(i)=teta(1);bb(i)=teta(2);
end
figure(2)
plot(1:N,aa,1:N,bb)

[5]
Résulta sur Matlab:

-1

-2

-3

-4

-5
0 200 400 600 800 1000 1200

[6]

Vous aimerez peut-être aussi