Matlab(Octave) Pendule de Foucault [URGENT]
PandaHugsU
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
Nyctaclope Messages postés 5315 Date d'inscription Statut Membre Dernière intervention -
Nyctaclope Messages postés 5315 Date d'inscription Statut Membre Dernière intervention -
Bonsoir tout le monde
Alors voila j'ai un problème de physique a résoudre et modéliser informatiquement avec OCTAVE (c'est comme mathlab mais gratuit haha) et je m'en sort pas informatiquement ...
Je dois tracer la trajectoire au sol du pendule de Foucault peut importe comment ca marche le probleme c'est que j'arrive pas a resoudre informatiquement les équations en gros j'ai un système d'equations a deux inconnues couple tel que
ddX= -(g/L)X - 2Omega*sin(phi)*dY
ddY = -(g/L)Y + 2*Omega*sin(phy)*dx
g= 9.81 m/s² (gravité)
phi=0-pi/2 lattitude
L=67m longueur du pendule
Omega= 7.29*10^-5 rad/s vitesse angulaire de la Terre
ddX dérivé 2nd par rapport au temps
dX derive 1ere
Je cherche donc a tracer x(t) = f y(t)
Et je n'y arrive pas j'obtiens soit une ellipse soit un bordel de sinus qui s'accouplent en phase (très beau a voir /o\)
voila j'espere que j'ai été assez clair pour permettre a quelqu'un de m'aider
cordialement Luc.
Je reste a votre disposition pour plus de detail si y'a quelque chose que vous ne comprenez pas =)
Alors voila j'ai un problème de physique a résoudre et modéliser informatiquement avec OCTAVE (c'est comme mathlab mais gratuit haha) et je m'en sort pas informatiquement ...
Je dois tracer la trajectoire au sol du pendule de Foucault peut importe comment ca marche le probleme c'est que j'arrive pas a resoudre informatiquement les équations en gros j'ai un système d'equations a deux inconnues couple tel que
ddX= -(g/L)X - 2Omega*sin(phi)*dY
ddY = -(g/L)Y + 2*Omega*sin(phy)*dx
g= 9.81 m/s² (gravité)
phi=0-pi/2 lattitude
L=67m longueur du pendule
Omega= 7.29*10^-5 rad/s vitesse angulaire de la Terre
ddX dérivé 2nd par rapport au temps
dX derive 1ere
Je cherche donc a tracer x(t) = f y(t)
Et je n'y arrive pas j'obtiens soit une ellipse soit un bordel de sinus qui s'accouplent en phase (très beau a voir /o\)
voila j'espere que j'ai été assez clair pour permettre a quelqu'un de m'aider
cordialement Luc.
Je reste a votre disposition pour plus de detail si y'a quelque chose que vous ne comprenez pas =)
A voir également:
- Matlab(Octave) Pendule de Foucault [URGENT]
- Gnu octave - Télécharger - Édition & Programmation
- Matrice matlab - Forum Matlab
- Fonction matlab - Forum Matlab
- Fonction imadjust de Matlab ✓ - Forum Matlab
- [Matlab] Nuage de points - Forum Matlab
2 réponses
Bonsoir
Ce n'est pas une heure honnête pour poser des questions pareilles :))
Et j'ai d'abord cru que tes équations n'étaient pas homogènes par rapport au temps, et ai failli râler ..
Une petite piste : il me semble qu'avec un changement de variable du genre
u=X+Y
v=X-Y ou quelque chose comme cela
et en additionnant et soustrayant membre à membre tes deux équations, cela devrait simplifier ton système de 2 équations ...
Ensuite une dérivation à faire pour reporter dans l'autre équation en éliminant u ou v.
Pas le courage ce soir d'aller plus loin, mais j'y rejette un oeil demain
Quelle vie ... :)
A+
Nyctaclope
Ce n'est pas une heure honnête pour poser des questions pareilles :))
Et j'ai d'abord cru que tes équations n'étaient pas homogènes par rapport au temps, et ai failli râler ..
Une petite piste : il me semble qu'avec un changement de variable du genre
u=X+Y
v=X-Y ou quelque chose comme cela
et en additionnant et soustrayant membre à membre tes deux équations, cela devrait simplifier ton système de 2 équations ...
Ensuite une dérivation à faire pour reporter dans l'autre équation en éliminant u ou v.
Pas le courage ce soir d'aller plus loin, mais j'y rejette un oeil demain
Quelle vie ... :)
A+
Nyctaclope
Re
Désolé, je t'ai rédigé tout à l'heure un ( très ) long post, et j'ai tout perdu lors de la validation ... impossible de récupérer ..
J'essaye de te reprendre ici l'essentiel, quant à la méthode de calcul.
Je ne connais pas Octave, mais tu n'as pas besoin de dérivées ni première ni seconde.
En calculant l'historique de X(t) et Y(t) tu obtiens l'équivalent de Y(X) en paramétriques.
Tes équations de départ ( que je n'ai pas vérifiées ) :
(1) d/dt(dX/dt) = -(g/L)X - 2Omega*sin(phi)*dY/dt
(2) d/dt(dY/dt) = -(g/L)Y + 2*Omega*sin(phi)*dx/dt
Tu utilises les fonctions annexes ( ou "vecteurs", comme tu veux ):
X
U = dX/dt ... dérivée première de X(t)
V = d/dt(dX/dt) ... dérivée seconde de X(t)
et de même pour Y
Y
W = dY/dt ... dérivée première de Y(t)
Z = d/dt(dY/dt) ... dérivée seconde de Y(t)
Tu pars d'un instant initial t=0, avec positions et vitesses initiales.
Par exemple, pour un lancer du pendule dans le plan vertical
t = 0
Xo = 0
(dX/dt)o = Vmax = Racine(2GL) ( le pendule ira jusqu'à l'horizontale )
tu as le droit de choisir ce paramètre, il ne joue que sur l'amplitude.
Donc Uo = Vmax
Yo = 0
(dY/dt)o = 0
Donc Wo = 0
Tes équations (1) et (2) te donnent alors pour les dérivées secondes :
(1) Vo = 0
(2) Zo = 2*Omega*sin(phi)*Vmax
Tu donnes ensuite à t un accroissement différentiel dt , par exemple 1/2 ou 1 seconde ( ce qui ferait 36 points par période du pendule ), et tu remplaces t par t + dt :
t=>t+dt
X=>X+dX = X + U.dt ... U étant la valeur précédente Uo
U=>U+dU = U + V.dt ....V étant la valeur précédente Vo
Y=>Y+dY = Y + W.dt
W=>W+dW = W + Z.dt
puis (1) et (2) te donnent les nouvelles valeurs de V et Z
Et tu incrémentes à nouveau t de dt , d'où les nouvelles valeurs pour X Y ... etc..
La boucle doit être facile à rédiger ..
Il suffit que tu mémorises les historiques complets X(t) et Y(t)
Pour les dérivées U,V, W, Z inutile de stocker leur historique, il suffit pour chacune d'une variable , où tu remplace la valeur précédente par la nouvelle ...
J'espère n'avoir pas fait d'erreur dans les notations ..
Pour le reste, j'avais fait une petite étude, montrant que selon les conditions initiales, tu obtiens des courbes extrêmement variées en forme.
Pour le cas ci-dessus, tu obtiens une sorte de "marguerite", dont deux pétales sont distants de 0,15° correspondant à la rotation terrestre pendant une période de 36 secondes environ.
Si Vmax > Racine(2GL) ( le pendule, supposé "rigide" tend à faire le tour complet ) alors les pétales deviennent anguleux sur le rayon L, et reviennent vers l'intérieur en formant un "bonnet d'âne" ).
Si cela t'intéresse ...
Espérant t'avoir un peu aidé ...
A+
Nyctaclope
Le plus joli des poèmes de la mathématique : e^(i.PI)=i^2
trois nombres "sacrés" d'horizons différents qui se donnent la main ...
Désolé, je t'ai rédigé tout à l'heure un ( très ) long post, et j'ai tout perdu lors de la validation ... impossible de récupérer ..
J'essaye de te reprendre ici l'essentiel, quant à la méthode de calcul.
Je ne connais pas Octave, mais tu n'as pas besoin de dérivées ni première ni seconde.
En calculant l'historique de X(t) et Y(t) tu obtiens l'équivalent de Y(X) en paramétriques.
Tes équations de départ ( que je n'ai pas vérifiées ) :
(1) d/dt(dX/dt) = -(g/L)X - 2Omega*sin(phi)*dY/dt
(2) d/dt(dY/dt) = -(g/L)Y + 2*Omega*sin(phi)*dx/dt
Tu utilises les fonctions annexes ( ou "vecteurs", comme tu veux ):
X
U = dX/dt ... dérivée première de X(t)
V = d/dt(dX/dt) ... dérivée seconde de X(t)
et de même pour Y
Y
W = dY/dt ... dérivée première de Y(t)
Z = d/dt(dY/dt) ... dérivée seconde de Y(t)
Tu pars d'un instant initial t=0, avec positions et vitesses initiales.
Par exemple, pour un lancer du pendule dans le plan vertical
t = 0
Xo = 0
(dX/dt)o = Vmax = Racine(2GL) ( le pendule ira jusqu'à l'horizontale )
tu as le droit de choisir ce paramètre, il ne joue que sur l'amplitude.
Donc Uo = Vmax
Yo = 0
(dY/dt)o = 0
Donc Wo = 0
Tes équations (1) et (2) te donnent alors pour les dérivées secondes :
(1) Vo = 0
(2) Zo = 2*Omega*sin(phi)*Vmax
Tu donnes ensuite à t un accroissement différentiel dt , par exemple 1/2 ou 1 seconde ( ce qui ferait 36 points par période du pendule ), et tu remplaces t par t + dt :
t=>t+dt
X=>X+dX = X + U.dt ... U étant la valeur précédente Uo
U=>U+dU = U + V.dt ....V étant la valeur précédente Vo
Y=>Y+dY = Y + W.dt
W=>W+dW = W + Z.dt
puis (1) et (2) te donnent les nouvelles valeurs de V et Z
Et tu incrémentes à nouveau t de dt , d'où les nouvelles valeurs pour X Y ... etc..
La boucle doit être facile à rédiger ..
Il suffit que tu mémorises les historiques complets X(t) et Y(t)
Pour les dérivées U,V, W, Z inutile de stocker leur historique, il suffit pour chacune d'une variable , où tu remplace la valeur précédente par la nouvelle ...
J'espère n'avoir pas fait d'erreur dans les notations ..
Pour le reste, j'avais fait une petite étude, montrant que selon les conditions initiales, tu obtiens des courbes extrêmement variées en forme.
Pour le cas ci-dessus, tu obtiens une sorte de "marguerite", dont deux pétales sont distants de 0,15° correspondant à la rotation terrestre pendant une période de 36 secondes environ.
Si Vmax > Racine(2GL) ( le pendule, supposé "rigide" tend à faire le tour complet ) alors les pétales deviennent anguleux sur le rayon L, et reviennent vers l'intérieur en formant un "bonnet d'âne" ).
Si cela t'intéresse ...
Espérant t'avoir un peu aidé ...
A+
Nyctaclope
Le plus joli des poèmes de la mathématique : e^(i.PI)=i^2
trois nombres "sacrés" d'horizons différents qui se donnent la main ...
En gros il faut faire appel a des vecteur on défini un veteur u = (x y dx dy)
et donc du = (u(3) u(4) ddx ddy) avec ddx et ddy connu on peut remonter a x et y avec la fonction commande ode23 ou ode45 pour Mathlab (lsode pour Octave) mais ne sais pas comment T_T !
Je suis bloqué a cet etape la ...
Je ne t'ai pas oublié, simplement un peu à la bourre ..
J'ai qq chose pour toi, pas encore eu le temps de le rédiger ..
A bientôt
Nyctaclope