Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parValentin Bruneau Modifié depuis plus de 10 années
1
Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement d’un pendule double
2
Mise en situation... m g l = 1 m l2 = 1 Positions: Vitesses:
X Y Point A: (l sin q, -l cos q) Point B: (l.(sin q + sin f ), -l.(cos q + cos f)) Vitesses: Point A: (l dq/dt cos q, l dq/dt sin q) Point B: (l.(dq/dt cos q + df/dt cos f), l.( dq/dt sin q + df/dt sin f )) m g l = 1 m l2 = 1
3
Lagrange (1) L = T - V pour toute les masses du système
vitesse scalaire de la masse condidérée
4
Lagrange (2) V = mgh = - mgl cos q - m g l (cos q + cos f )
L = T - V = + mgl cos q + m g l (cos q + cos f )
5
Système différentiel
6
Fonction différentielle ODE45
ODE Fonction de dérivation décrivant le système différentiel Ordre des équations du système 2 ( , ) Avant Après
7
Définition des vecteurs utilisés
ODE Fonction de dérivation décrivant le système différentiel Ordre des équations du système 2 ( , ) Avant Après
8
Définition des vecteurs utilisés
ODE Fonction de dérivation décrivant le système différentiel Ordre des équations du système 2 ( , ) Avant Après
9
Fonction de dérivation
function [ dy ] = dp ( t, y )
10
Variables temporaires
function [ dy ] = dp ( t, y ) s = sin( - ) c = cos( - )
11
Mise en correspondance
function [ dy ] = dp ( t, y ) s = sin( - ) c = cos( - ) dy(1) = y(2)
12
Mise en correspondance
function [ dy ] = dp ( t, y ) s = sin( - ) c = cos( - ) dy(1) = y(2) dy(3) = y(4)
13
Mise en correspondance
function [ dy ] = dp ( t, y ) s = sin( - ) c = cos( - ) dy(1) = y(2) dy(3) = y(4) dy(2) =
14
Search and replace function [ dy ] = dp ( t, y ) s = sin( - )
c = cos( - ) dy(1) = y(2) dy(3) = y(4) dy(2) =
15
Search and replace function [ dy ] = dp ( t, y ) s = sin( - )
c = cos( - ) dy(1) = y(2) dy(3) = y(4) dy(2) =
16
Search and replace function [ dy ] = dp ( t, y ) s = sin( - )
c = cos( - ) dy(1) = y(2) dy(3) = y(4) dy(2) =
17
Search and replace function [ dy ] = dp ( t, y ) s = sin( y(1) - )
c = cos(y(1) - ) dy(1) = y(2) dy(3) = y(4) dy(2) =
18
Search and replace function [ dy ] = dp ( t, y )
s = sin( y(1) - y(3) ) c = cos(y(1) - y(3) ) dy(1) = y(2) dy(3) = y(4) dy(2) =
19
Search and replace function [ dy ] = dp ( t, y )
s = sin( y(1) - y(3) ) c = cos(y(1) - y(3) ) dy(1) = y(2) dy(3) = y(4) dy(2) =
20
Search and replace function [ dy ] = dp ( t, y )
s = sin( y(1) - y(3) ) c = cos(y(1) - y(3) ) dy(1) = y(2) dy(3) = y(4) dy(2) =
21
Search and replace function [ dy ] = dp ( t, y )
s = sin( y(1) - y(3) ) c = cos(y(1) - y(3) ) dy(1) = y(2) dy(3) = y(4) dy(2) =
22
Search and replace function [ dy ] = dp ( t, y )
s = sin( y(1) - y(3) ) c = cos(y(1) - y(3) ) dy(1) = y(2) dy(3) = y(4) dy(2) = dy(4) =
23
Fonction différentielle ODE45
function [ dy ] = dp ( t, y ) s = sin( y(1) - y(3) ) c = cos(y(1) - y(3) ) dy(1) = y(2) dy(3) = y(4) dy(2) = dy(4) =
24
Résolution numérique options = odeset('RelTol',1e-8);
[t,angle] = ode45('dp',[0:0.1:100],[ ],options); Temps: de 0 à 100 secondes par pas de 0,1 sec Système à résoudre Conditions initiales:
25
Variables utilisées plot ( x , y ) ( 0 , 0 ) ( Ax , Ay ) ( Bx , By )
26
Premier affichage %Allocation mémoire x=zeros(3,1); y=zeros(3,1);
%Calcul de coordonnées x(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 affichage figure; axis([ ]) hold on; line(x,y,'LineWidth',2);
27
Boucle d’affichage %Boucle d'affichage for 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
28
Gestion dynamique %Boucle d'affichage for 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([ ]); line(x,y,'LineWidth',2); drawnow;
29
Temps réel %Boucle d'affichage for 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([ ]); line(x,y,'LineWidth',2); drawnow; end
30
Gestion anciennes positions
%Allocation mémoire xold=zeros(3,1); yold=zeros(3,1); %Boucle d'affichage for 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
31
Approche “orienté-objet”
Objet graphique Adresse Propriété 2 Propriété n Propriété ... Propriété 1 Instruction 1 Instruction 2 Instruction ... Instruction n
32
Approche “orienté-objet”
Objet graphique Adresse XData YData ZData Color Style plot axis
33
Récupération de l’adresse
graph1=plot(x,y,'w*','EraseMode','none'); Objet graphique Adresse = = graph1 XData YData ZData Color Style Instruction
34
Données en x graph1=plot(x,y,'w*','EraseMode','none'); Objet graphique
Adresse = = graph1 XData = x YData ZData Color Style Instruction
35
Données en y graph1=plot(x,y,'w*','EraseMode','none'); Adresse
XData = x YData = y ZData Color Style Instruction
36
Pas de données en z graph1=plot(x,y,'w*','EraseMode','none');
Objet graphique Adresse = = graph1 XData = x YData = y ZData Color Style Instruction
37
Couleur graph1=plot(x,y,'w*','EraseMode','none'); Objet graphique
Adresse = = graph1 XData = x YData = y ZData Color = w Style Instruction
38
Style graph1=plot(x,y,'w*','EraseMode','none'); Objet graphique
Adresse = = graph1 XData = x YData = y ZData Color = w Style = * Instruction
39
Variable privée graph1=plot(x,y,'w*','EraseMode','none');
Objet graphique Adresse = = graph1 XData = x YData = y ZData Color = w Style = * EraseMode = none Instruction
40
Instruction graphique
graph1=plot(x,y,'w*','EraseMode','none'); Objet graphique Adresse = = graph1 XData = x YData = y ZData Color = w Style = * EraseMode = none Instruction = plot
41
Accès variables membres
set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2); graph1 XData YData
42
Modification données en x
set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2); graph1 XData = xnew YData
43
Modification données en y
set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2); graph1 XData = xnew YData = ynew
44
Modification paramètres divers
set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2); graph1 XData = xnew YData = ynew LineWidth = 2
45
Pour notre problème %Préparation session graphique et premier affichage p=plot(x,y,'EraseMode','none'); q=plot(xold,yold,'w','EraseMode','none'); %Boucle d'affichage set(q,'XData',xold,'YData',yold,'LineWidth',2); set(p,'XData',x,'YData',y,'LineWidth',2);
46
Approche “orienté-objet”
%Préparation session graphique et premier affichage p=plot(x,y,'EraseMode','none'); q=plot(xold,yold,'w','EraseMode','none'); %Boucle d'affichage set(q,'XData',xold,'YData',yold,'LineWidth',2); set(p,'XData',x,'YData',y,'LineWidth',2);
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.