{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "bd025e5e",
   "metadata": {},
   "source": [
    "# Feuille d'exercices 6\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "```{admonition} Objectifs\n",
    "* Nombres réels\n",
    "* Notion de précision\n",
    "* Affichage graphique\n",
    "```\n",
    "\n",
    "## Exercice 1. Manipulation de nombre flottant avec une précision donnée\n",
    "\n",
    "\n",
    "**Question 1 :** Effectuer successivement les instructions suivantes.\n",
    "1. Stocker dans une variable `x` le rationnel $1/7$.\n",
    "1. Stocker dans une variable `R1` le corps des réels à une précision de $1$ bit.\n",
    "1. Quelle puissance de $2$  (éventuellement d'exposant négatif) est la plus proche de $1/7$ ? Effectuer une coercion de `x` dans `R1`, puis vérifier votre réponse.\n",
    "1. Stocker dans une variable `R3` le corps des réels à une précision de $3$ bits.\n",
    "1. Effectuer une coercion de `x` dans `R3`, puis retrouver la mantisse et l'exposant correspondant. On pourra également s'aider de la méthode `.sign_mantissa_exponent()`.\n",
    "1. En effectuant une coercion de `x` dans une structure appropriée, donner les $100$ premières décimales de $1/7$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8b2b071b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0431fa95",
   "metadata": {},
   "source": [
    "## Exercice 2. Affichage graphique simple\n",
    "\n",
    "**Question 1 :** Tracer sur un même graphique les fonctions cosinus (en bleu) et sinus (en rouge), entre $0$ et $4\\pi$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fb675bf8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8acda2bf",
   "metadata": {},
   "source": [
    "**Question 2 :** \n",
    "- Tracer la fonction tangente entre $-\\pi$ et $\\pi$.\n",
    "- Puis, essayer de rendre le tracé plus \"représentatif\" en imposant une valeur maximale et minimale à l'ordonnée.\n",
    "- Pourquoi pensez-vous qu'il y a des droites verticales ? Les retirer en ajoutant l'argument optionnel `detect_poles=True` dans la fonction `plot()`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "15ed8b24",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ed2c151",
   "metadata": {},
   "source": [
    "## Exercice 3. Série harmonique\n",
    "\n",
    "On considère la suite $(H_n)_{n \\ge 1}$ définie comme : $H_n = \\sum_{i=1}^n \\frac{1}{n}$. Cette suite est appelée \"série harmonique\".\n",
    "\n",
    "**Question 1 :** Écrire une fonction `calcule_H(n)` qui prend en entrée un entier naturel `n` et qui retourne le terme $H_n$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3b470778",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "968a6854",
   "metadata": {},
   "source": [
    "**Question 2 :** Tracer sur un même graphique :\n",
    "- les $100$ premiers termes de la suite $H_n$,\n",
    "- la fonction $\\ln(x)$ pour $x \\in [1, 100]$.\n",
    "\n",
    "Pour tracer les termes de la série harmonique, on rappelle qu'on peut utiliser la fonction `points(L)` qui prend en entrée une liste de points de la forme $[ (x_1, y_1), \\dots, (x_k, y_k) ]$ , et qui retourne un objet graphique (comme le ferait `plot`) représentant tous les points de coordoonées $(x_i, y_i)$ de la liste."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cb33ae0c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5c511979",
   "metadata": {},
   "source": [
    "**Question 3 :** La différence $H_n - \\ln(n)$ semble converger vers une constante. La calculer approximativement. Pour cela, on pourra calculer des termes de $u_n := H_n - \\ln(n)$ jusqu'à ce que deux termes consécutifs de la suite $(u_n)$ soit distants de moins de $10^{-8}$.\n",
    "\n",
    "*Indication supplémentaire :* comme la convergence est lente, on pourra essayer de :\n",
    "- reformuler la valeur de $u_{n+1}-u_n$ pour éviter de calculer des sommes\n",
    "- calculer les $u_{n+1}-u_n$ avec des ordre $n$ allant de $100$ en $100$ plutôt que de $1$ et $1$\n",
    "\n",
    "Puis, comparer la valeur obtenue à l'objet `euler_gamma` de Sagemath."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1bbbd030",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c220cd45",
   "metadata": {},
   "source": [
    "## Exercice 4. Produit de Wallis et une mauvaise approximation rationnelle de $\\pi$\n",
    "\n",
    "En 1656, Wallis a démontré que \n",
    "\n",
    "$$\n",
    "    \\frac{\\pi}{2} = \\prod_{n=1}^\\infty \\frac{4n^2}{4n^2-1}.\n",
    "$$\n",
    "\n",
    "Nous allons utiliser cette formule pour obtenir une approximation rationnelle (mais peu efficace) de $\\pi$.\n",
    "\n",
    "**Question 1 :** Écrire une fonction `produit_wallis(k)` qui prend en entrée un entier strictement positif `k`, et qui retourne le produit \n",
    "\n",
    "$$\n",
    "P_k := \\prod_{n=1}^k \\frac{4n^2}{4n^2-1}.\n",
    "$$\n",
    "\n",
    "Vérifier ensuite que $P_1 = \\frac{4}{3}$ et que $P_6 = \\frac{1048576}{693693}$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "735dab7a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "911bce3e",
   "metadata": {},
   "source": [
    "**Question 2 :** Afficher le nombre flottant associé à $2 P_{100}$, puis vérifier qu'il a au moins une décimale en commun avec $\\pi$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4180b687",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e212ed1",
   "metadata": {},
   "source": [
    "**Question 3 :**  Quelle est la plus petite valeur de $k$ pour laquelle les nombres $2 P_k$ et $\\pi$ ont au moins $3$ décimales en commun ? Quel est alors le nombre de chiffres du dénominateur $d$ de la fraction  $2 P_k$ (calculer la partie entière supérieure de $\\log_{10}(d)$ pour obtenir cela) ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "95153717",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Votre réponse ici"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65a68661",
   "metadata": {},
   "source": [
    "**Remarque :** Cette manière de calculer les décimales de $\\pi$ est donc très peu efficace."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Sagemath",
   "language": "python",
   "name": "sagemath"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
