{ "cells": [ { "cell_type": "markdown", "id": "16b94382", "metadata": {}, "source": [ "# Exercices sur les nombres\n", "\n", "## Fonctions mathématiques\n", "\n", "* Est ce que la fonction log est le logarithme décimal ou népérien ?\n", "* Calculer $x = \\sqrt{2}$ puis calculer $x^2$. Que se passe-t-il ?\n", "* Calculer $\\arccos{\\frac{\\sqrt{2}}{2}}$ et comparer à sa valeur théorique." ] }, { "cell_type": "code", "execution_count": 1, "id": "d75da916", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.302585092994046\n" ] } ], "source": [ "from math import log\n", "\n", "print(log(10))" ] }, { "cell_type": "code", "execution_count": 24, "id": "bba315c1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0000000000000004" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from math import sqrt\n", "sqrt(2)**2" ] }, { "cell_type": "code", "execution_count": 25, "id": "478ab27c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.7853981633974483\n", "0.7853981633974483\n" ] } ], "source": [ "from math import acos, pi\n", "\n", "print(acos(sqrt(2)/2))\n", "print(pi/4)" ] }, { "cell_type": "markdown", "id": "fb6c743d", "metadata": {}, "source": [ "## Constante de structure fine\n", "\n", "La constante de structure fine est définie en physique comme étant égale à \n", "\n", "$$ \n", "\\alpha = \\frac{e^2}{2\\epsilon_0 h c}\n", "$$ \n", "\n", "où \n", "\n", "* $e$ est la charge de l'électron et vaut $1.602176634 \\times 10^{-19} C$\n", "* $h$ est la constante de Planck et vaut $6.626\\,070\\,15 \\times 10^{-34} J s$ \n", "* $\\epsilon_0$ la permitivité du vide et vaut $8.8541878128 \\times 10^{-12} F/m$\n", "* $c$ la célérité de la lumière dans le vide, $c=299792458 m/s$\n", "\n", "Définissez en Python les variables ``e``, ``hbar``, ``epsilon_0`` et ``c``. Calculez $\\alpha$ et $1/\\alpha$" ] }, { "cell_type": "code", "execution_count": 29, "id": "ad63ad85", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "137.0359990841083\n" ] } ], "source": [ "from math import pi\n", "\n", "e = 1.602176634E-19\n", "h = 6.62607015E-34\n", "epsilon_0 = 8.8541878128E-12\n", "c = 299792458\n", "\n", "\n", "alpha = e**2/(2*epsilon_0*h*c)\n", "print(1/alpha)\n", " " ] }, { "cell_type": "markdown", "id": "1e16c06e", "metadata": {}, "source": [ "## Précision des nombres\n", "\n", "* Soit $x=1$ et $\\epsilon = 10^{-15}$. Calculez $y=x + \\epsilon$ et ensuite $y - x$. \n", "* Pourquoi le résultat est différent de $10^{-15}$. \n", "* Que vaut cette valeur ? " ] }, { "cell_type": "code", "execution_count": 30, "id": "c78f8cc2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.1102230246251565e-15\n" ] } ], "source": [ "x = 1\n", "epsilon = 1E-15\n", "y = x + epsilon\n", "print(y - x)" ] }, { "cell_type": "code", "execution_count": 31, "id": "a790a63a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.1102230246251565e-15\n" ] } ], "source": [ "print(5*2**-52)" ] }, { "cell_type": "markdown", "id": "93b96efe", "metadata": {}, "source": [ "## Calcul d'une dérivée\n", "\n", "On considère une fonction $f(x)$. On rappelle que la dérivée peut se définir comme\n", "\n", "$$\n", "f^\\prime(x) = \\lim_{\\epsilon\\rightarrow0}\\frac{f(x+\\epsilon) - f(x)}{\\epsilon}\n", "$$\n", "\n", "Pour calculer numériquement une dérivée, il faut évaluer la limite en prenant une valeur 'petite' de $\\epsilon$. \n", "\n", "On prendra comme exemple $f(x) = \\sin(x)$. \n", "\n", "* Calculer numériquement la dérivée de $f$ en $\\pi/4$ en utilisant la formule pour $\\epsilon = 10^{-6}$.\n", "* Comparer à la valeur théorique $\\cos(x)$ pour différentes valeurs de $\\epsilon$ que l'on prendra comme puissance de 10 ($\\epsilon = 10^{-n}$). Que se passe-t-il si $\\epsilon$ est trop petit ? trop grand ?\n", "* Ecrire la fonction ``sin_prime(x, epsilon)`` qui calcule la dérivée de sin en $x$\n", "* Ecrire une fonction qui prend une fonction quelconque et renvoie la fonction dérivée." ] }, { "cell_type": "code", "execution_count": 32, "id": "5ee9a942", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5.365427460879424e-06\n", "n= 1 -0.03650380828255784\n", "n= 2 -0.0035472894973379576\n", "n= 3 -0.0003536712121802177\n", "n= 4 -3.535651724428934e-05\n", "n= 5 -3.5355413900983734e-06\n", "n= 6 -3.5344236126721995e-07\n", "n= 7 -3.5807553921962665e-08\n", "n= 8 3.050251939917814e-09\n", "n= 9 3.635694267867251e-08\n", "n= 10 9.245353623787977e-07\n", "n= 11 5.365427460879424e-06\n", "n= 12 -5.7368027853721415e-06\n", "n= 13 0.00010528549967714351\n", "n= 14 0.003435954573552613\n" ] } ], "source": [ "from math import sin, pi, cos\n", "\n", "x = pi/4\n", "epsilon = 1E-11\n", "\n", "d = (sin(x + epsilon) - sin(x))/epsilon - cos(x)\n", "print(d)\n", "\n", "for n in range(1, 15):\n", " epsilon = 10**(-n)\n", " d = (sin(x + epsilon) - sin(x))/epsilon - cos(x)\n", " print('n=', n, d)\n", "\n", "# Lorsque epsilon est trop petit, il y a des erreurs d'arrondi. Lorsque epsilon est trop grand, nous\n", "# sommes loin de la limite" ] }, { "cell_type": "code", "execution_count": 33, "id": "4b8390eb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.050251939917814e-09" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def sin_prime(x, epsilon):\n", " return (sin(x + epsilon) - sin(x))/epsilon\n", "\n", "def derivee(f, epsilon):\n", " def f_prime(x):\n", " return (f(x+epsilon) - f(x))/epsilon\n", " return f_prime\n", "\n", "derivee(sin, epsilon=1E-8)(x) - cos(x)" ] }, { "cell_type": "markdown", "id": "baacad7a", "metadata": {}, "source": [ "## Nombre complexe\n", "\n", "* Ecrire une fonction qui calcule le module d'un nombre complexe $z$\n", "* Ecrire une fonction qui à partir de $r$ et $\\theta$ renvoie le nombre $z = re^{i\\theta} = r\\cos(\\theta) + ir\\sin(\\theta)$" ] }, { "cell_type": "code", "execution_count": null, "id": "78f719b3", "metadata": {}, "outputs": [], "source": [] } ], "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.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 }