Nom de Diou.com, Carnet de découvertes et réflexions au jour le jour...

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 15 novembre 2009

Rançon de Kinder-Surprise à qui trouvera le bug...

EDIT : Problème réglé. J'ai donc mit hors ligne les fichiers de mon projet étant donné qu'il n'est pas terminé. Je les remettrai sans doute en ligne plu tard dans l'année sous licence Creatives Commons.

Bonjour à tous les mathématiciens qui traineront dans le coin ! I need you !

En effet, je travaille, pour mon projet, sur l'approximation de la solution de l'équation de transport grâce aux différences finies. Cinq doivent être implémentées dans Matlab : Upwind, Lax-Wendroff, LaxFrierichs, Beam-Warming et Leap-frog. Voici les données les concernant :

Toutes ces approximations fonctionnent parfaitement sous Matlab SAUF celle de Leap-frog qui est toujours décalé sur la droite, quoi que je fasse !

Voilà pourquoi je promets la rançon d'une boite de Kinder-Surprise à la première personne qui trouvera le bug caché dans mon programme.

Pour ce faire, voilà le fichier zip de mes programmes Matlab : progs-matlab.zip

Celui concernant LeapFrog s'appelant solleap.m. Ces programmes sont largements commentés, vous devriez vous y retrouver.

PS : Je rappelle que le problème avec cette méthode est qu'elle est toujours décalée sur la droite ou sur la gauche quoique je fasse alors qu'elle devrait être bien meilleure que cela (ordre 2 en temps et en espace). Du coup, cela fausse le graphe de l'erreur L2 et l'approximation de l'ordre (pente de la droite de l'erreur en coordonnées logarithmiques)... Merci d'avance pour votre aide !

dimanche 18 octobre 2009

Ce jour où... l'Analyse Numérique m'a bluffé...

Bien le bonjour à tous mes inconditionnels lecteurs dont mon absence teste la patience jour après jour,

Je passe par ici pour vous parler d'une matière qui me suis depuis maintenant trois bonnes années. Pour toutes les personnes qui penseraient que je vais écrire un article entier sur le cachemire (matière préférée de Sophie Marceau dans Lol), je tiens à préciser que ce billet évoquera une matière scolaire... Et cette matière porte un nom (qui fait peur a première vue, je vous l'assure) : l'Analyse Numérique. Cela vous permettra, à vous peuple étranger des mathématiques, d'avoir un aperçu sur ce qui se fait au bout de quatre ans d'études dans les mathématiques...

Pour vous la présenter en quelques mots, l'Analyse Numérique, c'est l'art de d'approcher des valeurs mathématiques incalculables de la meilleure façon numérique possible, c'est-à-dire avec une erreur la plus minime possible. Ainsi, en vulgarisant beaucoup le discours, l'Analyse Numérique est le Terminator des maths : aucune expression mathématique ne lui résiste.

Venons-en donc au sujet de ce billet... Cette année, dans ma très grande classe (de cinq étudiants), nous devons rédiger des projets assez poussés dans cette matière. Celui d'une amie consiste (entre autres) à approcher une fonction incalculable sur un intervalle. Public sensible, fermez les yeux, je présente maintenant ladite fonction :

Il s'avère que tout mathématicien, même en passant des jours à étudier cette fonction, ne parviendrait pas à calculer de manière exacte les valeurs exactes de cette fonction. De la même façon, auriez-vous pensé que dessiner cette fonction sur l'intervalle [0,25] (pour T=1) puisse être possible sans que la fonction ne soit calculable ? Et si l'on parvient à tracer cette courbe de manière approchée, apparaitra-t-elle continue ou non ? Voila deux questions sans réponses...

Et bien, 1h30 de programmation et de fous-rires plus tard, la réponse aux deux questions est oui comme en témoigne le graphe dessiné ci-dessous :

Et c'est à cet instant que vous me demandez : Mais comment cela est-ce donc possible ?! Pour vous représenter (de façon imagée) le caractère impressionnant de la chose, parvenir à cela en mathématiques c'est comme si vous étiez capable de dessiner l'allure d'un meuble avant qu'il ne soit monté en ne disposant que des divers éléments (sans la notice de montage). Facile avec une table basique, mais très complexe pour un meuble sophistiqué made in Ikea. En mathématiques, c'est identique et la fonction ci-dessus est aussi peau de vache que le meuble Ikea.

Sauf que, contrairement à ce dernier, on est capable avec les outils d'Analyse Numérique, d'approcher la fonction récalcitrante de façon très réaliste. Comment faisons-nous ? Une intégrale (le symbole étrange au début de la fonction) est un calcul d'aire sous la courbe. On peut l'approcher en découpant l'intervalle en sous-intervalles beaucoup plus petits et en approchant l'aire de la courbe sur ces sous-intervalles.

Par exemple, on peut utiliser la méthode dite des rectangle à gauche qui approche l'aire sous la courbe de la façon suivante :

On voit bien que plus les sous-intervalles (i.e. la largeur des rectangles) seront petits, plus les rectangles vont venir se coller à la courbe. Donc plus il y aura de sous-intervalles, plus l'intégrale sera mieux approchée...

Ainsi, avec cette méthode (ou d'autres plus compliquées mais plus performantes), on est capable d'approcher la valeur de la fonction en un point donné. Il ne reste donc plus qu'à calculer la valeur approchée de l'intégrale sur le nombre de points que l'on souhaite de [0,25] et à demander un graphe de ces points à l'ordinateur. Si le nombre de points est assez élevé, la magie de l'informatique opère et l'ordinateur vous sort une courbe continue approchant votre fonction incalculable...

Si c'est pas formidable ça...

PS : Désolé pour ceux qui n'auront rien compris à ce billet...

PS2 : Si des savant-fous passent par là, et qu'il parviennent à primitiver l'intégrale récalcitrante, qu'ils se fassent connaître car cela intéressera mon amie... ;) Bon courage... ...

Nota Bene : Je m'excuse auprès des mathématiciens puristes pour l'exemple du meuble Ikea. Je n'ai pas trouvé d'autres situations communes pour vulgariser cette réflexion mathématique. Mais je reste ouvert à toutes les propositions. Tout comme les lecteurs j'imagine...