Top 20

1 0x00h 702 pts
2 boris39 702 pts
3 neoxquick 683 pts
4 maf-ia 664 pts
5 thefinder 645 pts
6 benito255 609 pts
7 mego 591 pts
8 madbat2 582 pts
9 Mart 554 pts
10 tehron 504 pts
11 Kithyane 503 pts
12 plucth 481 pts
13 egosum 474 pts
14 CoYoTe99 417 pts
15 Undr 415 pts
16 Zeta 415 pts
17 loonies2 412 pts
18 Armavica 411 pts
19 vitalimarrenra 403 pts
20 b0n0n 396 pts

Classement complet

Shoutbox

20 Sep - 10:46 am

Bonjour à tous, j'ai créé un nouveau topic sur le forum concernant un problème que je rencontre sur plusieurs challenges, comme il n'est plus très actif, que j'aimerais pouvoir avancer sur ces challenges et que ce chat a une meilleure visibilité, je poste ce message ici en espérant qu'une âme charitable puisse m'aider en répondant à mon message sur le forum :)

3 Sep - 9:39 am

Ah ok je n'avais pas bien compris ton message original. Très bien, ce que tu peux faire c'est poster un message sur le forum avec le lien de téléchargement et les explications. Merci pour ta contribution !

1 Sep - 5:52 pm

Bonjour bonjour, je l'ai créé en Pharo, une implémentation récente du langage smalltalk.

31 Aug - 2:43 pm

Bonjour PharoGuy, re-bienvenue à toi ! Tu as créé cet objet en quel langage ?

30 Aug - 8:23 pm

Bonjour tout le monde ! je redécouvre ce site avec Pharo ! J'ai créé un objet qui gère la récupération et l'envoi des variables, ça pourrait intéresser ?

24 Jul - 5:30 pm

Ça devrait être à nouveau opérationnel, définitivement cette fois ci.

19 Jul - 8:42 pm

A nouveau ? On regarde ça !

16 Jul - 5:26 pm

Bonjour à tous :) Je viens d'essayer de valider le challenge "Wav ? (6)", et j'ai l'impression que la page "validation.php" est de nouveau en carafe.

15 Jul - 8:43 pm

Cool !! Merci beaucoup !!

9 Jul - 11:20 pm

Hello, je regarde ça dès que je peux, probablement demain

Connexion
Mot de passe oublié

Supportez nousx

Vous aimez µContest ?
Supportez nous en votant (fun et difficulté) pour µContest sur WeChall :)
Si vous ne l'avez pas encore fait, profitez-en pour lier votre compte
Wechall à µContest pour pouvoir voter !

Merci

Liste des épreuves :: Physique :: Pendulum ODE II (52)

Résumé

ID : 52
Points : 19
Validations :
Page de l'épreuve
Reporter un bug

Description


Nous avons vu dans le challenge précédent (Pendulum ODE I) qu’il était possible dans certains cas de linéariser une ODE non linéaire, pour obtenir une solution analytique approchée de la solution exacte.

Dans la majorité des cas, il n’est cependant pas possible de linéariser une ODE (erreur engendrée trop importante). Nous avons alors recours à des méthodes de résolutions numériques permettant d’approcher au mieux la solution exacte.

La première méthode numérique fut introduite en 1768 par Leonhard Euler. Depuis, un grand nombre de techniques ont été développées. Elles se basent sur la discrétisation de l'intervalle d'étude en un certain nombre de pas. A chaque pas les différentes fonctions ainsi que leurs dérivées, sont évaluées.
Ces différentes méthodes donnent des résultats plus ou moins bons en termes de précision vis-à-vis de la solution exacte, ou encore en termes de rapidité de convergence. Certaines méthodes seront donc à privilégier en fonction du résultat souhaité.

Dans ce challenge, nous allons appréhender l’une de ces méthodes de résolution numérique : la méthode d’Euler semi-explicite (méthode proposée en l’occurrence par Leonhard Euler), qui est une des méthodes numériques les plus simples pour résoudre des ODE de second ordre. Outre la simplicité de mise en place de cette méthode, elle a l’avantage de converger rapidement ; toutefois, la précision de la méthode reste faible.

1. Méthode d'Euler

Commençons par introduire le principe de la méthode d’Euler classique (méthode d’Euler-explicite).

Soit une ODE d'ordre 1 de la forme dont nous cherchons la solution . F est appelée fonction dévaluation.

La formule de Taylor s'écrit


En ne gardant que les deux premiers termes nous obtenons
.

Avec une notation simplifiée, nous pouvons écrire dont nous tirons, par généralisation entre deux instants, la formule itérative d'intégration d'Euler :



Cette relation nous permet de calculer à partir de et de la fonction d'évaluation . Ainsi, à partir des condition initiales (t0, y0), nous pouvons résoudre le problème de proche en proche. Il est à noter que les deux premiers termes de la formule de Taylor ne donnent qu'une approximation de la valeur exacte, approximation d'autant plus grossière que sera grand. De plus, à chaque pas les erreurs vont se cumuler.

2. Application au cas du pendule simple

Revenons maintenant au système mécanique présenté dans le challenge précédent : le simple pendule soumis à son propre poids . Nous avions vu que l'équation de mouvement (non linéarisée) de ce système était une ODE d'odre 2 de la forme : . Pour pouvoir utiliser la formule itérative d'intégration d'Euler, il est nécessaire de se ramener à un système d'équations d'ordre 1. Aussi, nous introduisons la variable correspondant à la vitesse angulaire .
Nous pouvons alors écrire le système de deux équations
soit sous forme vectorielle
En posant
le vecteur des inconnues, nous avons donc
Et nous arrivons au système différentiel d'ordre 1 classique avec
auquel nous pouvons appliquer la formule d'intégration d'Euler.

Nous obtenons ainsi le schéma d'intégration suivant :
,
avec le pas d'intégration et la fonction qui représente l'accélération angulaire à l'étape n. Ce schéma est qualifié d'explicite, car dans le membre de droite, aucun termes ne dépend de l'étape n+1.

3. Variante : Méthode d'Euler semi-explicite

Une variante de la méthode d'Euler classique consiste à utiliser la vitesse pour calculer la position au pas n+1. Du fait de la composante n+1 dans une partie du membre de droite, nous obtenons le schéma d'Euler semi-exlicite :



Dans le cas d'ODE, ce schéma a l'avantage d'être plus stable que le schéma explicite classique et donne ainsi de meilleurs résultats ; c'est donc ce dernier que nous chercherons à implémenter.


Votre travail :

A l'aide du schéma d'Euler semi-explicite présenté précédemment, vous chercherez à évaluer pour chaque pas d'un intervalle de temps T les valeurs discrètes des fonctions , et . Ainsi, à chaque instant n, connaissant et , vous commencerez par calculer , puis vous déterminerez successivement et .

Pour résoudre ce challenge, vous allez recevoir, comme pour le challenge précédent, deux variables définissant les dimensions et conditions initiales du système :

l : longueur de la barre en mètre

theta_0 : angle initial (pour t = 0s et n = 0) en degré

Nous posons g = 9.81m.s-2 , m = 5kg , (vitesse angulaire initiale) = 0deg.s-1 , = 0.02s et T = 10s .

Vous aurez à renvoyer les valeurs discrètes des fonctions , et pour t = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 secondes , soit pour n = 50, 100, 150, 200, 250, 300, 350, 400, 450, 500. Comme pour l'épreuve précédente, une chaîne de caractères comprenant les valeurs tronquées à 5 décimales et séparées par des ';' sera renvoyée pour chaque fonction.


Validation de la méthode numérique

Plutôt que de vous présenter directement un exemple données/résultats, nous allons vous proposer un moyen de vérifier que votre modèle numérique est correct.

Nous avions vu dans le challenge précédent que pour des angles petits la solution analytique issue de l'équation du mouvement linéarisée pouvait servir de référence. Nous allons donc chercher à évaluer l’erreur induite par notre modèle numérique vis à vis de la solution analytique.

A chaque étape n, nous pouvons calculer l'erreur de la façon suivante :





Soit l'erreur totale (avec N le nombre de pas) :





Aussi, pour vous aider, nous avons évalué ces erreurs pour différentes configurations initiales, en utilisant les mêmes constantes que pour le challenge. Voici ce que nous obtenons (erreurs arrondies au centième) :


Configuration 1 :
1.23m
0.56deg

0.09rad
0.02rad.s-1
0.75rad.s-2
Configuration 2 :
1.77m
0.82deg

0.11rad
0.01rad.s-1
0.62rad.s-2
Configuration 3 :
1.1m
0.17deg

0.03rad
0.01rad.s-1
0.27rad.s-2


Variables


Nom Type Description
Variables à récupérer
lRéelfloatlongueur de la barre en mètre
theta_0Réelfloatangle initial en degré
Variables à renvoyer
thetaChaîne de caractèreschar*valeurs discrètes de la fonction en radian
dthetaChaîne de caractèreschar*valeurs discrètes de la fonction en radian / seconde
ddthetaChaîne de caractèreschar*valeurs discrètes de la fonction en radian / seconde^2