{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Python - Les boucles\n\n\n\n### Compétences attendues\n    - Savoir programmer en Python : fonctions d'entrée et de sortie, boucles \\pyv{if}, \\pyv{for}, \\pyv{while}.\n    \n### Liste des commandes Python exigibles aux concours\n    - Comparaison et connecteurs logiques pour les booléens : ==, >, <, >=, <=, !=, True, False, and, or, not\n    - Programmation : range, for, while,..."},{"metadata":{},"cell_type":"markdown","source":"## Les boucles while\n### Présentation\n##### Définition:\nPour répéter un bloc d'instructions tant qu'une condition est vérifiée, on utilise une boucle while. \n\nLa syntaxe est la suivante :"},{"metadata":{},"cell_type":"markdown","source":"while condition :\n\tinstructions"},{"metadata":{},"cell_type":"markdown","source":"Tant que la condition est vérifiée, les instructions sont effectuées. Dès que la condition n'est plus vérifiée, les instructions sont ignorées.\n\nRemarques:\n    - Même remarque que pour les boucles if et for : attention aux deux points et à l'indentation !\n    - Attention également à la condition : elle doit se révéler fausse à un moment donné, sinon la boucle est sans fin ...\n    \n#### Exemple: \nTaper dans l'éditeur de texte le script suivant puis l'exécuter. Que calcule-t-il ?"},{"metadata":{"trusted":false},"cell_type":"code","source":"s = 0\ni = 2\nwhile i <=100 :\n    s = s + i\n    i = i+2\nprint(s)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"### Les boucles classiques et fondamentales\n#### Exercice II.8 (Rang d'une suite dépassant un seuil)\nSoit $\\left(u_n\\right)_{n \\in \\mathbb{N}}$ une suite définie par $u_0=1$ et pour tout $n \\in \\mathbb N$, $u_{n+1}=u_n^2+1$.\n\n1. Montrer que la suite $\\left(u_n\\right)$ est croissante, puis que $\\displaystyle \\lim _{n \\to +\\infty} u_n=+\\infty$."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"2. Définir une fonction rang qui, à un réel $a$, renvoie le rang du premier terme de la suite $\\left(u_n\\right)_{n \\in \\mathbb{N}}$ qui est supérieur ou égal à $a$."},{"metadata":{"trusted":false},"cell_type":"code","source":"def rang(a) :\n...\n    while ... :\n        ...\n    return ...","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Exercice II.9:\nSoient $\\left(u_n\\right)_{n \\in \\mathbb{N}^*}$ et $\\left(v_n\\right)_{n \\in \\mathbb{N}^*}$ les suites définies par : $$\\forall \\, n \\in \\mathbb{N}^*, \\; u_n=\\sum_{k=1}^n \\frac{1}{k^2} \\quad \\text{ et } \\quad v_n=u_n+\\frac{1}{n}.$$\n\n1. Montrer que les suites $\\left(u_n\\right)_{n \\in \\mathbb{N}^*}$ et $\\left(v_n\\right)_{n \\in \\mathbb{N}^*}$ sont adjacentes. \nEn déduire un encadrement de leur limite."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"2. Écrire une fonction approx qui, à un réel strictement positif $\\varepsilon$, associe une approximation de $\\displaystyle \\sum_{k=1}^{+\\infty} \\frac{1}{k^2}$ à $\\varepsilon$ près."},{"metadata":{"trusted":false},"cell_type":"code","source":"def approx(eps) :\n    ...\n    return ...","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Exercice II.10:\nOn reprend la suite de l'exercice II.1: $u_0=\\frac12$ et $\\forall \\,  n\\in \\mathbb N$, $u_{n+1}=\\dfrac{2u_n}{u_n+1}$. On admet que $\\displaystyle \\lim_{n\\to + \\infty} u_n=1$.\n\n1. Définir une fonction valabs, qui prend en entrée un flottant et qui renvoie sa valeur absolue."},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"2. À l'aide de la fonction valabs, écrire un programme permettant de déterminer le plus petit entier naturel $n$ pour lequel on a : $$\\left|u_n-1\\right| \\leq 10^{-3}.$$"},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Exercice II. 11 ($\\star \\star$ - Raisonnement par dichotomie)\nOn considère une fonction $f$ continue et strictement monotone sur un intervalle $[a;b]$ (avec $a<b$ ) telle que $f(a) f(b)<0$. \n\nLe théorème de la bijection assure que l'équation $f(x)=0$ possède une unique solution $\\alpha$ sur $] a ; b[$.\nOn construit deux suites $\\left(a_n\\right)_{n \\in \\mathbb{N}}$ et $\\left(b_n\\right)_{n \\in \\mathbb{N}}$ définies de la manière suivante :\n$a_0=a, b_0=b$ et, pour tout entier naturel $n$,\n- Si $f\\left(a_n\\right) f\\left(\\frac{a_n+b_n}{2}\\right) \\leqslant 0$, alors $\\left.\\alpha \\in\\right] a_n ; \\frac{a_n+b_n}{2}\\left[\\right.$. On pose $a_{n+1}=a_n$ et $b_{n+1}=\\frac{a_n+b_n}{2}$.\n- Si $f\\left(a_n\\right) f\\left(\\frac{a_n+b_n}{2}\\right)>0$, alors $\\left.\\alpha \\in\\right] \\frac{a_n+b_n}{2} ; b_n\\left[\\right.$. On pose $a_{n+1}=\\frac{a_n+b_n}{2}$ et $b_{n+1}=b_n$.\n\n1. Étude des suites $\\left(a_n\\right)_{n \\in \\mathbb{N}}$ et $\\left(b_n\\right)_{n \\in \\mathbb{N}}$ :\n\n    1.a Montrer que les suites $\\left(a_n\\right)_{n \\in \\mathbb{N}}$ et $\\left(b_n\\right)_{n \\in \\mathbb{N}}$ sont adjacentes et convergent vers $\\alpha$."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"    1.b Montrer que pour tout $n \\in \\mathbb{N}$, on a $b_{n+1}-a_{n+1}=\\frac{b_n-a_n}{2}$.\n    \n    Puis que $b_n-a_n=\\frac{b-a}{2^n}$."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"2. On considère l'équation (E) : $1-x-x^3=0$, où $x$ désigne un réel.\nOn note $f$ la fonction définie sur $\\mathbb{R}$ par $f(x)=1-x-x^3$.\n    \n    2.a Construire une fonction f permettant de calculer des valeurs de $f$."},{"metadata":{"trusted":false},"cell_type":"code","source":"def f(x) :\n   return ...","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"    2.b Justifier que (E) possède une unique solution $\\alpha$, et vérifier que $\\alpha$ appartient à $] 0 ; 1[$."},{"metadata":{},"cell_type":"raw","source":""},{"metadata":{},"cell_type":"markdown","source":"     2.c Écrire un script permettant de trouver et d'afficher une valeur approchée de $\\alpha$ à 0,001 près. "},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"}},"nbformat":4,"nbformat_minor":2}