{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Chapitre 17\n", "## Activité 4 p 351 : Parc à vagues\n", "\n", "### Réaliser : Simulation de la propagation d'une onde sinusoïdale\n", "**Confirmé**" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from matplotlib import pyplot as plt\n", "from matplotlib import animation as anim\n", "from math import pi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", " **Préliminaire à lire absolument** \n", "\n", "Pour accèder aux outils de figure interactive et aux animations dans un calepin **JupyterLab**, il est nécessaire d'introduire en début de programme la commande 'magique': \n", ">`%matplotlib widget` \n", "\n", "après avoir installé l'extension disponible __[ici](https://github.com/matplotlib/jupyter-matplotlib)__ lorsque cette extension n'est pas automatiquement disponible sous la version JupyterLab installée.\n", "\n", "**Remarque importante :**\n", "Cette commande magique **ne fonctionne pas** dans l'environnement **Colaboratory**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Une alternative à l'outil précédent pour visualiser une animation dans un calepin **JupyterLab** consiste à introduire les 2 lignes d'instructions de la cellule suivante. \n", "Il faudra dans ce cas : \n", "$\\quad$ - retirer les `#` des 2 lignes suivantes et mettre un `#` devant la commande magique `%matplotlib widget` ; \n", "$\\quad$ - appeler l'animation par son nom en toute fin de programme (en retirant le `#` devant le nom `animation` de la dernière ligne de la dernière cellule) ; \n", "$\\quad$ - faire preuve de patience (le temps pour la machine de faire tous les calculs) après l'éxécution de la dernière cellule pour visualiser l'animation.\n", "\n", "**Remarque importante :**\n", "Cette méthode est celle à utiliser dans l'environnement **Colaboratory**." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#from matplotlib import rc\n", "#rc('animation', html='jshtml')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Question 2 c** \n", "Compléter les lignes du code selon les consignes à l'aide de la fiche méthode disponible sur le site sirius.nathan.fr puis exécuter le programme pour simuler la propagation des vagues destinées aux surfeurs expérimentés du parc à vagues à la fréquence maximale." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "%matplotlib widget\n", "\n", "x = ...A compléter... # Domaine des abcisses (en m) de 0 à 100m 256 points\n", "v = 4.7 # Célérité (en m/s)\n", "delta_t = (x[1]-x[0])/v # Intervalle de temps (en s)\n", "\n", "A = ...A compléter... # Amplitude (en m)\n", "T = ...A compléter... # Période (en s)\n", "\n", "# Initialisation de la figure\n", "figure = plt.figure('Propagation d\\'une onde sinsusoïdale')\n", "plt.axis([0,100,-10,10])\n", "plt.xlabel(...A compléter...)\n", "plt.ylabel(...A compléter...)\n", "\n", "# Initialisation du graphe tracé mis à jour au fur et à mesure\n", "courbe, = ...A compléter... # Graphe sans point\n", "\n", "# Fonction fixant l'arrière de l'animation présent à chaque image\n", "def init():\n", " ...A compléter...\n", " return ...A compléter...\n", "\n", "# Création de la fonction 'onde' appelée à chaque nouvelle image i\n", "def onde(...): \n", " t = i*delta_t\n", " y = A*np.cos((2*pi/T)*t-(2*pi/(v*T))*x)\n", " ...A compléter... # Mise à jour du graphe\n", " return ...A compléter...\n", "\n", "# Animation de la figure affichant onde(i), à chaque image i, pour i\n", "# entier de 0 à 255 avec un délai entre 2 images égal à interval en ms\n", "# blit=True indique que seuls les éléments modifiés sont redessinés\n", "animation = anim.FuncAnimation(...,...,...,frames=...,\n", " blit=True,interval=delta_t*1000, repeat=False)\n", "#animation" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.1" } }, "nbformat": 4, "nbformat_minor": 2 }