Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel...

Preview:

Citation preview

Mécanique Analytiqueet CFAO

1

Travaux pratiques de mécanique analytique

Simulation en temps réel du mouvement d’un

pendule double

Mécanique Analytiqueet CFAO

2

Mise en situation...Mise en situation...

m

mA

B

l

l

X

Y

Positions:

Vitesses:

Point A: (l sin , -l cos )

Point A: (l d/dt cos , l d/dt sin )

Point B: (l.(sin + sin ), -l.(cos + cos ))

Point B: (l.(d/dt cos + d/dt cos ),

l.( d/dt sin + d/dt sin ))

m g l = 1 m l2 = 1

Mécanique Analytiqueet CFAO

3

Lagrange (1)Lagrange (1)

L = T - V

22

22

mvTmv

T pour toute les masses du système

vitesse scalaire de la masse condidérée22yx vvv

222 lvA cos22222 lvB

2T = ))cos(2.2.(l.m 222

Mécanique Analytiqueet CFAO

4

Lagrange (2)Lagrange (2)

V = mgh = - mgl cos - m g l (cos + cos )

L = T - V = ))cos(2.2.(2

. 222

lm+ mgl cos + m g l (cos + cos )

sin)sin().cos(

sin2)sin()cos(.222

22

Mécanique Analytiqueet CFAO

5

Système différentielSystème différentiel

cossin

cossin

sin2sin

cos2

1 2

2

2

mgl

mgl

cossin

cossin

sin2sin2

cos2

1 2

2

2

mgl

mgl

Mécanique Analytiqueet CFAO

6

Fonction différentielle ODE45Fonction différentielle ODE45

ODE45 Fonction de dérivation décrivant le système différentiel

Ordre des équations du système 2 ( , )

Avant Aprèsdt

d

t

1

dt

d

Mécanique Analytiqueet CFAO

7

Définition des vecteurs utilisésDéfinition des vecteurs utilisés

ODE45 Fonction de dérivation décrivant le système différentiel

Ordre des équations du système 2 ( , )

Avant Aprèsdt

d

t

1

dt

d

Mécanique Analytiqueet CFAO

8

Définition des vecteurs utilisésDéfinition des vecteurs utilisés

ODE45 Fonction de dérivation décrivant le système différentiel

Ordre des équations du système 2 ( , )

Avant Aprèsdt

d

t

1

dt

d

Mécanique Analytiqueet CFAO

9

Fonction de dérivationFonction de dérivation

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

Mécanique Analytiqueet CFAO

10

Variables temporairesVariables temporaires

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

Mécanique Analytiqueet CFAO

11

Mise en correspondanceMise en correspondance

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

Mécanique Analytiqueet CFAO

12

Mise en correspondanceMise en correspondance

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

Mécanique Analytiqueet CFAO

13

Mise en correspondanceMise en correspondance

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cossin

cossin

sin2sin

cos2

1 2

2

2

mgl

mgl

Mécanique Analytiqueet CFAO

14

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cossin

cossin

sin2sin

cos2

1 2

2

2

mgl

mgl

Mécanique Analytiqueet CFAO

15

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cmgl

cs

mgls

cc

sin

sin2

2

1 2

2

Mécanique Analytiqueet CFAO

16

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cmgl

cs

mgls

cc

sin

sin2

2

1 2

2

Mécanique Analytiqueet CFAO

17

s = sin( y(1) - )c = cos(y(1) - )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cmgl

cs

mgls

cc

sin

y(1)sin2

2

1 2

2

Mécanique Analytiqueet CFAO

18

cmgl

cs

mgls

ccy(3)sin

y(1)sin2

2

1 2

2

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Mécanique Analytiqueet CFAO

19

cmgl

yycs

mgls

ccy(3)sin

)2()2(

y(1)sin2

2

12

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Mécanique Analytiqueet CFAO

20

cmgl

yycs

mglyys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Mécanique Analytiqueet CFAO

21

c

yycs

yys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Mécanique Analytiqueet CFAO

22

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

c

yycs

yys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1dy(2) =

dy(4) =

cy

yycs

yyys

cc)1(sin

)4()4(

)3(sin2)2()2(2

2

1

Mécanique Analytiqueet CFAO

23

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Fonction différentielle ODE45Fonction différentielle ODE45

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

c

yycs

yys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1dy(2) =

dy(4) =

cy

yycs

yyys

cc)1(sin

)4()4(

)3(sin2)2()2(2

2

1

Mécanique Analytiqueet CFAO

24

Résolution numériqueRésolution numérique

options = odeset('RelTol',1e-8);

[t,angle] = ode45('dp',[0:0.1:100],[1 1 10 0],options);

Conditions initiales:

0

10

1

1

Système à résoudre

Temps: de 0 à 100 secondes par pas de 0,1 sec

Mécanique Analytiqueet CFAO

25

Variables utiliséesVariables utilisées

x

x

B

Ax

0

y

y

B

Ay

0

plot ( x , y ) ( 0 , 0 ) ( Ax , Ay ) ( Bx , By )

tntntntn

tttt

tttt

angle

2222

1111

Mécanique Analytiqueet CFAO

26

Premier affichagePremier affichage

%Allocation mémoirex=zeros(3,1);y=zeros(3,1);

%Calcul de coordonnéesx(2)=10*sin(angle(1,1));y(2)=-10*cos(angle(1,1));

x(3)=x(2)+10*sin(angle(1,3));y(3)=y(2)-10*cos(angle(1,3));

%Préparation session graphique et premier affichagefigure;axis([-30 30 -30 30])hold on;line(x,y,'LineWidth',2);

Mécanique Analytiqueet CFAO

27

Boucle d’affichageBoucle d’affichage

%Boucle d'affichagefor i=1:1000 x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1));

x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3)); line(x,y,'LineWidth',2); end

Mécanique Analytiqueet CFAO

28

Gestion dynamiqueGestion dynamique

%Boucle d'affichagefor i=1:100 x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1)); x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3)); clf; axis([-30 30 -30 30]); line(x,y,'LineWidth',2); drawnow;

Mécanique Analytiqueet CFAO

29

Temps réelTemps réel

%Boucle d'affichagefor i=1:100 tic; x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1)); x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3)); while toc<0.1; end; clf; axis([-30 30 -30 30]); line(x,y,'LineWidth',2); drawnow; end

Mécanique Analytiqueet CFAO

30

Gestion anciennes positionsGestion anciennes positions

%Allocation mémoirexold=zeros(3,1);yold=zeros(3,1);

%Boucle d'affichagefor i=1:100 tic; xold(2)=x(2); yold(2)=y(2); xold(3)=x(3); yold(3)=y(3); x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1)); x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3));

while toc<0.1; end; plot(xold,yold,'w','LineWidth',2);plot(x,y,'LineWidth',2);drawnow; end

Mécanique Analytiqueet CFAO

31

Approche “Approche “orienté-objet”orienté-objet”

Objet graphique

Adresse

Propriété 2

Propriété n

Propriété ...

Propriété 1

Instruction 1

Instruction 2

Instruction ...

Instruction n

Mécanique Analytiqueet CFAO

32

Approche “Approche “orienté-objet”orienté-objet”

Objet graphique

Adresse

YData

Color

ZData

XData

plotaxis

Style

Mécanique Analytiqueet CFAO

33

Récupération de l’adresseRécupération de l’adresse

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

Mécanique Analytiqueet CFAO

34

Données en xDonnées en x

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

Mécanique Analytiqueet CFAO

35

Données en yDonnées en y

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

Mécanique Analytiqueet CFAO

36

Pas de données en zPas de données en z

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

Mécanique Analytiqueet CFAO

37

CouleurCouleur

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

Mécanique Analytiqueet CFAO

38

StyleStyle

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

= *

Mécanique Analytiqueet CFAO

39

Variable privéeVariable privée

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

= *EraseMode = none

Mécanique Analytiqueet CFAO

40

Instruction graphiqueInstruction graphique

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

= *EraseMode = none

= plot

Mécanique Analytiqueet CFAO

41

Accès variables membresAccès variables membres

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData

Mécanique Analytiqueet CFAO

42

Modification données en xModification données en x

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData = xnew

Mécanique Analytiqueet CFAO

43

Modification données en yModification données en y

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData = xnew

= ynew

Mécanique Analytiqueet CFAO

44

Modification paramètres diversModification paramètres divers

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData = xnew

= ynew

LineWidth = 2

Mécanique Analytiqueet CFAO

45

Pour notre problèmePour notre problème

%Préparation session graphique et premier affichagep=plot(x,y,'EraseMode','none');q=plot(xold,yold,'w','EraseMode','none');

%Boucle d'affichageset(q,'XData',xold,'YData',yold,'LineWidth',2); set(p,'XData',x,'YData',y,'LineWidth',2);

Mécanique Analytiqueet CFAO

46

Approche “Approche “orienté-objet”orienté-objet”

%Préparation session graphique et premier affichagep=plot(x,y,'EraseMode','none');q=plot(xold,yold,'w','EraseMode','none');

%Boucle d'affichageset(q,'XData',xold,'YData',yold,'LineWidth',2); set(p,'XData',x,'YData',y,'LineWidth',2);

Recommended