{"cells": [{"cell_type": "markdown", "id": "6076202c", "metadata": {}, "source": ["\n", "# Analyse de donn\u00e9es de gravim\u00e8tres.\n", "\n", "_Extrait du sujet d'examen pos\u00e9 en 2021/2022_\n", "\n", "Un gravim\u00e8tre est un appareil qui mesure l'acc\u00e9l\u00e9ration de la pesanteur. A Paris, elle vaut $g\\sim 9.81$ m/s$^2$. Dans cet exercice nous allons analyser des donn\u00e9es provenant du gravim\u00e8tre \u00e0 atomes froids du laboratoire LNE-SYRTE (\u00e0 Paris) et celles provenant d'un gravim\u00e8tre \u00e0 supraconducteur qui ont \u00e9t\u00e9 enregistr\u00e9es en parall\u00e8le, pendant 27 jours, entre le 7 avril et le 4 mai 2015. Le gravim\u00e8tre \u00e0 atomes froids (CAG, cold atoms gravimeter) est un gravim\u00e8tre dit absolu dans le sens o\u00f9 il mesure $g$ directement en m/s$^2$. Le gravim\u00e8tre \u00e0 supraconducteur ('iGRAV') est un gravim\u00e8tre dit relatif dans le sens o\u00f9 il mesure une tension en V qui peut \u00eatre reli\u00e9e \u00e0 $g$. Ce dernier doit donc \u00eatre calibr\u00e9. Ceci peut justement se faire \u00e0 l'aide du CAG. C'est ce que nous allons faire dans un premier temps.\n", "\n", "\n", "Vous trouverez un fichier texte {download}`data/CAGiGrav.txt` dans le dossier data qui contient : la date (en [jour Julien modifi\u00e9](https://fr.wikipedia.org/wiki/Jour_julien) 'MJD'), la mesure du gravim\u00e8tre (en nm/s$^2$, par rapport \u00e0 la valeur $g = 9.808~907~500$ m/s$^2$), la mesure de l'iGRAV (en V) et le r\u00e9sidu entre les deux mesures apr\u00e8s \u00e9talonnage de l'iGRAV (en nm/s$^2$). Ce contenu est s\u00e9par\u00e9 par des ``'tabulations'``. La premi\u00e8re ligne correspond \u00e0 l'en-t\u00eate. \n", "\n", "\n", "\n", "1. Importer le fichier ``'CAGiGRAV.txt'`` et cr\u00e9er quatres tableaux de flottants (``float``) correspondant \u00e0 la date, la mesure du CAG, celle de l'iGRAV et le r\u00e9sidu apr\u00e8s calibration. On pourra utiliser la fonction ``np.loadtxt()`` dont les arguments peuvent \u00eatre retrouv\u00e9s \u00e0 partir de sa documentation : il faudra savoir 1/ comment utiliser le ``\\t`` comme s\u00e9parateur et 2/ comment \u00e9liminer la premi\u00e8re ligne (en-t\u00eate) du fichier."]}, {"cell_type": "markdown", "id": "f1fdbec2", "metadata": {}, "source": ["2. Tracer l'\u00e9volution de l'acc\u00e9l\u00e9ration de la pesanteur en fonction de la date (en MJD) mesur\u00e9e \u00e0 l'aide du CAG et \u00e0 l'aide du iGRAV. On pourra utiliser la fonction ``plt.subplots`` dont les arguments peuvent \u00eatre retrouv\u00e9s \u00e0 partir de sa documentation : notamment un des arguments permettra de partager l'axe des abscisses.\n", "\n", "Le r\u00e9sultat typique que l'on observe est le suivant: \n", "\n", "![alt text](gcagigrav.png \"Title\")\n", "\n", "Les variations de grandes amplitudes et de longues p\u00e9riodes sont li\u00e9es \u00e0 l'attraction de la lune et du soleil (ph\u00e9nom\u00e8ne des mar\u00e9es). Dans ce graphique, les unit\u00e9s sont en Gal. 1 \u00b5Gal = 1 nm/s$^2$.\n"]}, {"cell_type": "markdown", "id": "62a219b2", "metadata": {}, "source": ["Comme pour beaucoup de jeux de donn\u00e9es exp\u00e9rimentales, il manque des donn\u00e9es (ici soit parce que les mesures ont \u00e9t\u00e9 perturb\u00e9es par des tremblements de terre soit parce que l'asservissement des lasers (servant au refroidissement laser des atomes) du gravim\u00e8tre atomique a saut\u00e9). Ces donn\u00e9es manquantes sont repr\u00e9sent\u00e9es par des 'nan' (not a number). \n", "\n", "La fonction ``np.isnan`` permet de cr\u00e9er un tableau de bool\u00e9en contenant les nombres qui sont des 'nan'. Le code suivant permet de creer un masque (tableau de bool\u00e9en) contenant uniquement les donn\u00e9es valides en m\u00eame temps pour les deux gravim\u00e8tres: "]}, {"cell_type": "code", "execution_count": 3, "id": "c6bae855", "metadata": {"tags": ["keep"]}, "outputs": [], "source": ["mask = ~(np.isnan(CAG) | np.isnan(iGRAV))"]}, {"cell_type": "markdown", "id": "17c64950", "metadata": {}, "source": ["3. Pourquoi avoir utilis\u00e9 ``~`` et ``|`` au lieu de ``not`` et ``or`` ?"]}, {"cell_type": "markdown", "id": "455ee57c", "metadata": {}, "source": ["4. Quelle \u00e9tait la valeur moyenne et l'\u00e9cart type de $g$ entre le 7 avril et le 4 mai 2015 (c'est \u00e0 dire sur l'ensemble des donn\u00e9es) ?"]}, {"cell_type": "markdown", "id": "73b6116c", "metadata": {}, "source": ["Les donn\u00e9es de l'iGRAV sont donn\u00e9es en volt. On note $K$ le coeficient de calibration de l'instrument (en nm.s$^{-2}$/V). On prendra $K=-898.25$nm.s$^{-2}$/V.\n", "\n", "5. Calculer et tracer la diff\u00e9rence entre les mesures enregistr\u00e9es par le CAG et celles enregistr\u00e9es par l'iGRAV apr\u00e8s calibration: CAG-K*iGRAV. V\u00e9rifier graphiquement que votre r\u00e9sultat correspond bien \u00e0 la quatri\u00e8me colonne du fichier ``'CAGiGRAV.txt'``. "]}, {"cell_type": "markdown", "id": "fb74c8cc", "metadata": {}, "source": ["6. Quel est l'\u00e9cart type de ces r\u00e9sidus sur la p\u00e9riode des 27 jours de mesures ? Comparer celui-ci avec l'\u00e9cart type des mesures du gravim\u00e8tre atomique (CAG) seules, calcul\u00e9es \u00e0 la question 4. Commenter."]}, {"cell_type": "markdown", "id": "6324709b", "metadata": {}, "source": ["Gr\u00e2ce au gravim\u00e8tre \u00e0 supraconducteur, il a \u00e9t\u00e9 possible d'\u00e9liminer les variations dues aux effets des mar\u00e9es et d'en d\u00e9duire le bruit du CAG (le bruit de l'iGRAV est n\u00e9gligeable en comparaison). Lorsque l'on n'a pas cet appareil (l'IGRAV), il est possible de caract\u00e9riser le bruit de l'instrument (le CAG) grace \u00e0 un outils math\u00e9matique appel\u00e9 **la variance d'Allan**. L'id\u00e9e est que entre deux mesures cons\u00e9cutives, le signal varie peu et que seul le bruit de l'instrument va changer le r\u00e9sultat. \n", "\n", "La variance d'Allan est d\u00e9finie par : \n", "\n", "$$\\sigma_\\mathrm{Allan}^2 = \\frac{1}{2} \\left<\\left(x_{l+1} - x_l\\right)^2\\right>_l$$\n", "\n", "7. (facultative) Question de statistique: v\u00e9rifier que si les $x_i$ sont ind\u00e9pendants, $\\sigma_\\mathrm{Allan}$ correspond \u00e0 l'\u00e9cart type des $x$."]}, {"cell_type": "markdown", "id": "6b1ddd38", "metadata": {}, "source": ["8. \u00c9crire une fonction ``allan_variance(x)`` qui calcule la variance d'Allan d'un jeu de donn\u00e9es x. Bien que ce ne soit pas exactement le cas, nous allons ici supposer que chaque mesure du CAG est r\u00e9alis\u00e9e pendant un temps $\\tau_0=177$ s. Calculer **l'\u00e9cart type d'Allan** $\\sigma_{Allan}(\\tau_0)$ du jeu de donn\u00e9es du CAG et v\u00e9rifier que l'on a le m\u00eame ordre de grandeur qu'\u00e0 la question 6."]}, {"cell_type": "markdown", "id": "f21444f3", "metadata": {}, "source": ["8. (bis) Si ce n'est pas d\u00e9j\u00e0 fait, \u00e9crire la fonction ``allan_variance(x)`` sans boucle for."]}], "metadata": {"celltoolbar": "Tags", "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.8.8"}, "varInspector": {"cols": {"lenName": 16, "lenType": 16, "lenVar": 40}, "kernels_config": {"python": {"delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())"}, "r": {"delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) "}}, "types_to_exclude": ["module", "function", "builtin_function_or_method", "instance", "_Feature"], "window_display": false}}, "nbformat": 4, "nbformat_minor": 5}