{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "8ec2f341",
   "metadata": {},
   "source": [
    "# Methode de Badal pour les lentilles divergentes"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "992668fc",
   "metadata": {},
   "source": [
    "On exploite la méthode de Badal pour déterminer la distance focale d'u e lentille divergente.\n",
    "On réalise l'image d'un objet à l'infini par une lentille convergente de distance focale connue $fo'$. On place alors la lentille à étudier de distance focale f' au foyer objet de cette lentille de référence. On observe que l'image de l'objet à l'infini est déplacée d'une distance algébrique d le long de l'axe optique.\n",
    "\n",
    "La distance focal f'de la lentille testée est alors exprimée par la relation \n",
    "$$ f'=\\frac{f_{o}'^2}{d}$$\n",
    "\n",
    "<img src=\"Badal.jpg\" alt=\"drawing\" width=\"400\"/>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "27038898",
   "metadata": {},
   "outputs": [],
   "source": [
    "#on commence classiquement par importer la library numpy (sous l'alias np) pour le calcul numérique\n",
    "#son sous module numpy.random pour effectuer les tirages aléatoires selon des lois bien controlées\n",
    "#et la library matplotlib.pyplot (sous l'alias pl) pour la réalisation de graphique.\n",
    "import numpy as np\n",
    "import numpy.random as rd\n",
    "import matplotlib.pyplot as pl\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "df167757",
   "metadata": {},
   "source": [
    "On doit donc déterminer dans cette expérience la distance focale fo' de la lentille de référence avec son incertitude u(fo') et la distance algébrique d en déterminant la position de Fo' et de B.\n",
    "On estime d'abord d et son incertude sachant que d est issue d'une formule de type somme."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "de03f576",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5773502691896258 0.5773502691896258\n",
      "la distance d est estimée à 84 en mm\n",
      "l'incertitude type sur d est estimée à 0.8164965809277261 en mm\n"
     ]
    }
   ],
   "source": [
    "#entrer la position de l écran quand l image est nette \n",
    "#sans la lentille L et la 1/2 largeur associée en mm\n",
    "XFo,L_XFo= 540,1 \n",
    "\n",
    "#entrer la position de l écran quand l image est nette \n",
    "#avec la lentille L et la 1/2 largeur associée en mm\n",
    "XB,L_XB= 624,1\n",
    "\n",
    "#les incertitudes types associées à ces deux mesures sont\n",
    "U_XFo,U_XB=L_XFo/np.sqrt(3),L_XB/np.sqrt(3)\n",
    "print(U_XFo,U_XB)\n",
    "\n",
    "#on calcule alors d\n",
    "d=XB-XFo\n",
    "#d est issue d'une formule de type somme\n",
    "U_d=np.sqrt(U_XFo**2+U_XB**2)\n",
    "print(\"la distance d est estimée à\",d,\"en mm\")\n",
    "print(\"l'incertitude type sur d est estimée à\",U_d,\"en mm\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69113806",
   "metadata": {},
   "source": [
    "On peut alors s'attaquer à l'estimation de la distance focale f' issue d'une formule de type produit\n",
    "\n",
    "$$z=k*x^a*y^b$$\n",
    "\n",
    "pour laquelle on sait que la formule de propagation des incertitudes s'écrit :\n",
    "\n",
    "$$\\left(\\frac{u\\left(z\\right)}{z}\\right)^2=a^2*\\left(\\frac{u\\left(x\\right)}{x}\\right)^2+b^2*\\left(\\frac{u\\left(y\\right)}{y}\\right)^2$$\n",
    "\n",
    "ce qui donne pour $$ f'=\\frac{f_{o}'^2}{d}$$ une expression \n",
    "$$\\left(\\frac{u\\left(f'\\right)}{f'}\\right)^2=4*\\left(\\frac{u\\left(f_{o}'\\right)}{f_{o}'}\\right)^2+\\left(\\frac{u\\left(d\\right)}{d}\\right)^2$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b8fa20a3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "la distance focale de la lentille testée est f'= -119.04761904761905 en mm\n",
      "l'incertitude type associée est u(f')= 2.6472567341043933 en mm\n"
     ]
    }
   ],
   "source": [
    "#entrer la valeur de fo' et l'incertitude type associée en mm\n",
    "fo,U_fo=100,1\n",
    "\n",
    "#calcul de f'\n",
    "f=-fo**2/d\n",
    "\n",
    "#calcul de l'incertitude par exploitation de la formule\n",
    "U_f=np.abs(f)*np.sqrt(4*(U_fo/fo)**2+(U_d/d)**2)\n",
    "\n",
    "print(\"la distance focale de la lentille testée est f'=\",f,\"en mm\")\n",
    "print(\"l'incertitude type associée est u(f')=\",U_f,\"en mm\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b8440642",
   "metadata": {},
   "source": [
    "## Comparer avec votre voisin.\n",
    "\n",
    "Les lentilles étudiées sortent tous d'un même lot, elles présentent toutes une distance focale annoncée à 10,0cm, mais l'incertitude sur cette valeur n'est pas connue.\n",
    "Pour vérifier que deux évaluations d'une grandeur sont cohérentes, on peut introduire le Z-score qui compare l'écart entre les évaluations obtenues et les incertitudes associées à ces évaluations :\n",
    "\n",
    "- le groupe 1 trouve une valeur de $f'_{1}$ avec une incertitude $u_{1}(f')$\n",
    "- le groupe 2 trouve une valeur de $f'_{2}$ avec une incertitude $u_{2}(f')$\n",
    "\n",
    "Le Z-score associé à ce couple d'évaluation s'écrit :\n",
    "$$Z_{1/2}=\\frac{|f'_{1}-f'_{2}|}{\\sqrt{u_{1}^2(f')+u_{2}^2(f')}}$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7e0f865b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " le Z-score obtenu est évalué à  1.5811388300841895\n",
      "les deux évaluations sont cohérentes\n"
     ]
    }
   ],
   "source": [
    "#groupe 1\n",
    "f1,u1=-149,3\n",
    "#groupe 2\n",
    "f2,u2=-154,1\n",
    "\n",
    "#calcul du Z-score\n",
    "\n",
    "Z=np.abs(f1-f2)/np.sqrt(u1**2+u2**2)\n",
    "\n",
    "print(\" le Z-score obtenu est évalué à \",Z)\n",
    "\n",
    "if Z>2 :\n",
    "    print (\"les deux évaluations sont incohérentes\")\n",
    "    \n",
    "else :\n",
    "    print (\"les deux évaluations sont cohérentes\")\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f7b09cab",
   "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.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
