Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB
MATLAB Forum d'entraide sur MATLAB. Avant de poster : FAQs MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/02/2013, 04h12   #1
xenone29
Invité de passage
 
Inscription : septembre 2012
Messages : 1
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 1
Points : 0
Points : 0
Par défaut Systeme chaotique Lorenz controle Backstepping

Bonjour,
Je voudrais stabiliser le système de Lorenz avec la méthode de controle Backstepping sur Matlab, j'ai déja fait un code mais ça me donne rien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
clear all          % just a clear start

p1=10;
p2=28;
p3=8/3;

Tf=10;
Ts=1;
smplTime=0:Ts:Tf;
J=Tf/Ts;
input=zeros(1,J);
output=zeros(3,J);

xinit=[10;10;10];

z=zeros(3,J);

gamma=1;
c0=-0.1;
c3=50;

output(:,1)=xinit;
global U;
u=0;
U=u;

for k=1:J
    z(:,k)=output(:,k);
    input(1,k)=u;
    x=Lorenz_function(xinit,input(1,k),smplTime(k),Ts);
    output(:,k)=x;
    xprime=x;
    alpha1=-c0*z(1,k);

    z(2,k)=output(2,k)-alpha1;
    
    p1dachprim=-gamma*(c0*output(1,k)-c0*alpha1-z(1,k))*z(2,k);
    p2dachprim=gamma*output(1,k)*z(2,k);
    p3dachprim=-gamma*output(3,k)*z(3,k);
    
    p1dach=-gamma*(c0*output(1,k)-c0*alpha1-z(1,k))*z(2,k)+p1;
    p2dach=gamma*output(1,k)*z(2,k)+p2;
    p3dach=-gamma*output(3,k)*z(3,k)+p3;
    
    alpha2=p1dach+p2dach-c0*p1dach+(1-c0*p1dach)*c0;
    
    
    z(3,k)=output(3,k)-alpha2;
    
    u =-c3*z(3,k)+output(1,k)*z(2,k)-output(1,k)*output(2,k)+p3dach*output(3,k)+(1-c0-c0^2)*p1dachprim+p2dachprim;
end

% subplot(3,1,1);
plot(smplTime,output(1,:))
% subplot(3,1,2);
% plot(smplTime,output(2,:))
% subplot(3,1,3);
% plot(smplTime,output(3,:))
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function x1 = Lorenz_function( x0,u,t0, Ts)
%LORENZ_FUNCTION Summary of this function goes here
%   Detailed explanation goes here
global U

u=U;
ini_c = x0;
t0c = t0; tfc = t0+Ts;
optnc = odeset('RelTol',1e-4,'AbsTol',1e-6);
[tc, xc] = ode45(@lorenz_sub, [t0c tfc], ini_c, optnc);
x1 = xc(end, :);
end

function dxdt = lorenz_sub(t, x)
%the Lorenz-system description
% continuous time
%
global U

u = U;
p1=10;
p2=28;
p3=8/3;

dxdt=[ p1*(x(2)-x(1));
    p2*x(1)-x(2)-x(1)*x(3);
    x(1)*x(2)-p3*x(3)+u];
end
Quelqu'un peut m'aider ? Merci à vous.
xenone29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2013, 20h39   #2
Dut
Responsable MATLAB & Hardware/PC

 
Avatar de Dut
 
Inscription : novembre 2006
Messages : 15 078
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 15 078
Points : 31 134
Points : 31 134
Première remarque, gamma et input sont des noms de fonctions MATLAB. Il est donc fortement déconseillé de les utiliser comme nom de variable.

Ensuite, ton code génère l'erreur suivante :
??? Error using ==> plot
Vectors must be the same lengths.

Error in ==> Untitled2 at 54
plot(smplTime,output(1,:))
ce qui est normal car la taille des deux variables ne correspond pas :
Code :
1
2
3
4
5
>> whos smplTime output
  Name          Size            Bytes  Class     Attributes

  output        3x10              240  double              
  smplTime      1x11               88  double
__________________
Identification de processeur sous MATLAB (3/3) Identification de processeur sous MATLAB (2/3) Mes contributions MATLAB (R2009a - Windows & Linux)

J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" (Saint Huck)
Dut est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h56.


 
 
 
 
Partenaires

Hébergement Web