{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapitre 17  Ondes mécaniques périodiques\n",
    "\n",
    "## Exercice 16  p 356 : Représenter un signal périodique\n",
    "\n",
    "**Enoncé :**    \n",
    "Le programme suivant permet de représenter l'élongation $y_{\\mathrm{S}}(t)$ de l'extrémité S d'une corde dont la représentation temporelle est donnée dans l'exercice 15.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*La ligne 8 de la cellule suivante est à compléter en tenant compte de la période du signal déterminée dans l'exercice 15.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#!/usr/bin/python                                                                       \n",
    "# -*- coding: utf-8 -*-\n",
    "from matplotlib import pyplot as plt\n",
    "from math import ceil\n",
    "\n",
    "n = 7         # Nombre de points décrivant une impulsion\n",
    "Delta_t = 8   # ∆t entre 2 positions successives (en ms)\n",
    "T = ...       # Période du signal (en ms)\n",
    "tmax = 180    # Date de fin (en ms)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">\n",
    "**Question a :**    \n",
    "Les listes `t` et `y`, introduites lignes 4 et 5 de la cellule suivante, définissent les coordonnées de l’élongation $y(t)$ de S pour une impulsion de durée 48 ms débutant à l’instant de date `t0`.   \n",
    "*Décrire l’action des lignes 5 et 6 sur ces deux listes et l’intérêt de ces instructions.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Fonction représentant un motif de durée T commençant à t\n",
    "def motif(t0,T):\n",
    "    \"\"\"t0=date de début du motif en ms, T=période en ms\"\"\"\n",
    "    t = [t0+Delta_t*i for i in range(n)]\n",
    "    y = [0,1,2,1,0,-1,0]\n",
    "    t.append(t0+T)\n",
    "    y.append(0)\n",
    "    return plt.plot(t,y,'r')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">\n",
    "**Question b :**   \n",
    "*Décrire l’action de la boucle* `for` *lignes 3 et 4 de la cellule suivante pour la représentation du signal périodique.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Représentation du signal périodique entre t=0 et tmax\n",
    "N=ceil(tmax/T) # Nombre de périodes arrondi à l'entier supérieur\n",
    "for i in range(N):\n",
    "    motif(i*T,T)\n",
    "plt.xlim(0,tmax)\n",
    "plt.grid()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    ">\n",
    "**Question c :**   \n",
    "*Proposer une modification de la ligne 4 de la cellule précédente afin de représenter au cours du temps l’élongation d’un point M présentant un retard de 50 ms par rapport à la source S.*"
   ]
  }
 ],
 "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
}
