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 592 pts
8 madbat2 582 pts
9 Mart 555 pts
10 Stupefy 534 pts
11 nikokks 514 pts
12 tehron 505 pts
13 Kithyane 503 pts
14 plucth 481 pts
15 egosum 474 pts
16 CoYoTe99 417 pts
17 Undr 416 pts
18 Zeta 416 pts
19 loonies2 412 pts
20 Armavica 411 pts

Classement complet

Shoutbox

12 May - 11:47 am

Working again now.

10 May - 4:05 pm

Hello, sorry for the late answer, in fact yes there is an issue with the mail, we will try to fix it quickly. Thanks for reporting

7 May - 6:07 pm

Hi there is a issue for the challenfe Email (number 21). I don't receive a mail on any of them: gmail, hotmail, yahoo. do i fail or is it the challenge ?

28 Feb - 10:35 am

Yes we fixed it

27 Feb - 10:00 pm

Thank you, just validated contest22. The solution checker seems to have been fixed.

27 Feb - 8:40 am

Yes several solutions are accepted of course. I will check one of your answers

26 Feb - 7:51 pm

No 500 error, but the solutions I'm submitting can be verified to be correct. It can't be that only one configuration is accepted, right? - as there are multiple correct configurations for each problem.

26 Feb - 5:54 pm

contest 22 is not concerned by the issue I found, and seems to be working (I suppose you don't have 500 error on this one ?). Your solutions are indeed rejected, but I did not check them yet

26 Feb - 3:25 pm

The validation for contest 22 also seems to be wrong (it's not accepting solutions that are clearly correct). I submitted bug report yesterday.

26 Feb - 9:59 am

Ok I fixed the issue It is higly possible that other challenges are impacted, so don't hesitate to tell meif you encounter this again. Thank you for reporting

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