{"cells":[{"metadata":{},"cell_type":"markdown","source":"# Les exercices du cahier d'été\n"},{"metadata":{},"cell_type":"markdown","source":"## Analyse - Exercice 4\n\nQuestion 1  "},{"metadata":{"trusted":false},"cell_type":"code","source":"import matplotlib.pyplot as plt\nimport numpy as np\n\nab = np.linspace(0,7/2,100) # On trace sur l'intervalle [0;7/2]\nord = ...\nplt.plot( ... , ... )\nplt.plot( ... , ... )\nplt.show()","execution_count":11,"outputs":[{"output_type":"display_data","data":{"application/javascript":"element.append(window._basthonDomNodeBus.pop(0));"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"La courbe proposée dans l'énoncé est inexacte. C'est le graphe de $f:\\, x\\mapsto \\sin(x)/2+1/2$... :("},{"metadata":{},"cell_type":"markdown","source":"Question 5"},{"metadata":{"trusted":false},"cell_type":"code","source":"def approx(eps) :\n    u=1\n    erreur=1 # initialisation\n    while  ... : # Tant que l'erreur commise est supérieure à la précision demandée, on continue\n          u= ...\n          erreur= ... # A chaque étape, l'erreur commise est au moins divisée par 2.\n    return u        ","execution_count":5,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":" # On teste le programme\nlapprox=approx(0.001)    \nprint(lapprox)\nprint('à comparer à ', np.sin(lapprox)/2+2)","execution_count":10,"outputs":[{"output_type":"stream","text":"2.3542369884129033\nà comparer à  2.354244794167439\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"## Analyse - Exercice 7\n\nQuestion 2 \n\nOn utilise la relation de récurrence de la question précédente avec l'initialisation $u_0=\\int_1^e t^2 dt=(e^3-1)/3.$"},{"metadata":{"trusted":false},"cell_type":"code","source":"def suite(n) :\n    u=(np.exp(1)**3-1)/3\n    termes=[u]\n    for i in range(1,n) :\n        u= ...\n         ...# Comment ajouter la nouvelle valeur u à la liste termes ?\n    return termes   \n","execution_count":21,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# On teste en affichant les 25 premiers termes\nplt.clf() # on efface le graphe précédent\nn=25\nind=range(n) \nplt.plot(ind,suite(n),'k+')\nplt.show()","execution_count":33,"outputs":[{"output_type":"display_data","data":{"application/javascript":"element.append(window._basthonDomNodeBus.pop(0));"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"On conjecture une décroissance de la suite et une convergence vers 0."},{"metadata":{},"cell_type":"markdown","source":"## Probabilité - Exercice 5\n\nUne réponse détaillée est donnée à l'exercice 11."},{"metadata":{},"cell_type":"markdown","source":"## Python - Exercice 10"},{"metadata":{"trusted":false},"cell_type":"code","source":"# question 1\n\ndef moment(val,loi,s) :\n    n=len(val)\n    m=0\n    for i in range(n) :\n        m=m+ ...\n    return m\n","execution_count":36,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Test du programme avec l'espérance d'une loi uniforme\n\nimport numpy as np\nn=10\nvalU=np.arange(1,n+1)\nloiU=np.ones(n)/n\nprint('le résultat', moment(valU,loiU,1))\n\n# résultat à comparer avec la valeur exacte (attention aux arrondis)\n\nprint('valeur exacte',(n+1)/2)\n","execution_count":37,"outputs":[{"output_type":"stream","text":"le résultat 5.500000000000001\nvaleur exacte 5.5\n","name":"stdout"}]},{"metadata":{"trusted":false},"cell_type":"code","source":"# question 2\n\ndef variance(val,loi) : \n    # utilisation de la formule de Koenig-Huygens\n    v= ...\n    return v","execution_count":38,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# De nouveau, on teste \nprint(variance(valU,loiU), 'à comparer à', (n**2-1)/12)","execution_count":39,"outputs":[{"output_type":"stream","text":"8.24999999999999 à comparer à 8.25\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"## Python - Exercice 11"},{"metadata":{},"cell_type":"markdown","source":"Question 1. La variable $X$ suit une loi de Bernoulli de paramètre $p=1/5$. Un code possible est  \n"},{"metadata":{"trusted":false},"cell_type":"code","source":"import numpy.random as rd\np=1/5\nprint(rd.random()<p)\n# On identifie ici True avec 1 et False avec 0.","execution_count":40,"outputs":[{"output_type":"stream","text":"True\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"Question 2. La variable $Y$ compte le nombre de succès dans $n$ répétitions d'une expérience de Bernoulli de paramètre $p$. Les expériences sont mutuellement indépendantes. C'est donc une loi binomiale.\n$$\\boxed{\\, Y\\hookrightarrow \\mathcal{B}(n;1/5).\\, }$$\nPour simuler la variable $Y$, on simule $n$ parties et on compte le nombre de parties gagnantes. "},{"metadata":{"trusted":false},"cell_type":"code","source":"def SimuY(p,n) :\n    Compteur=0\n    for i in range(n) :\n        Compteur+= ... # utiliser la questions précédente\n    return Compteur  ","execution_count":41,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Une seconde solution en remarquant que l'on peut écrire Y comme somme de variables suivant une loi de Bernoulli \n\ndef SimuY(p,n):\n    Y=sum( ...)\n    return Y\n","execution_count":42,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Question 3. La variable $Z$ est le rang du premier succès dans une infinité de répétitions d'épreuves de Bernoulli mutuellement ind\\'ependantes. La probabilité de succès est $p$. Par conséquent, $Z$ suit une loi géométrique de paramètre $p$.\n$$\\boxed{\\, Z\\hookrightarrow \\mathcal{G}(p).\\, }$$\nOn peut simuler la loi par"},{"metadata":{"trusted":false},"cell_type":"code","source":"def SimuZ(p) :\n    Rang=1\n    while rd.random()>p : # Tant qu'on a un échec, on continue...\n        Rang+= ...\n    return Rang     ","execution_count":43,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Question 4.  La variable $X_2$ peut s'obtenir comme la somme de deux variables aléatoires de loi géométrique de paramètre $p$. Ainsi,\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"def SimuX2(p) :\n    x2= ...  # utiliser SimuZ\n    return x2","execution_count":44,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Ce code se généralise à $r$ boules :"},{"metadata":{"trusted":false},"cell_type":"code","source":"def SimuXr(p,r) :\n    x=0\n    for i in range(r) :\n        x+= ...\n    return x","execution_count":45,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Python - Exercice 12"},{"metadata":{},"cell_type":"markdown","source":"On cherche à résoudre l'équation $13 x^2+1=y^2$ où $x$ et $y$ sont des entiers naturels non nuls. Précisons que l'on ne regarde que les solutions réalistes (inférieures au million d'hommes, par exemple)."},{"metadata":{"trusted":false},"cell_type":"code","source":"def zhu_di(n) :\n    for i in range(int(n**(1/2))) :\n    # le coté du carré sera de longueur max n**(1/2)\n        for j in range(i-1) :\n            if  ... :\n                print(13*j**2)","execution_count":46,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Pour éviter d'avoir à préciser un maximum de soldats, on peut utiliser une boucle while qui incrémente $x$ et $y$ jusqu'à ce que la condition soit rencontrée."},{"metadata":{"trusted":false},"cell_type":"code","source":"x=1\ny=1\nwhile  ... :\n    y+=1\n    for x in range(y) :\n        if (13*x**2 + 1 == y**2) :\n            print(13*x**2)\n            break","execution_count":47,"outputs":[{"output_type":"stream","text":"421200\n","name":"stdout"}]},{"metadata":{},"cell_type":"markdown","source":"L'instruction break permet de sortir de la boucle for lorsque la condition est rencontrée."},{"metadata":{},"cell_type":"markdown","source":"## Exercice 13"},{"metadata":{"trusted":true},"cell_type":"code","source":"# Question 1\ndef distance(xA,yA,xB,yB) :\n    return ... # il suffit de mettre la formule","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Tester votre code, par exemple\ndistance(0,0,1,1)\n# doit renvoyer racine de 2 (faire un dessin et Pythagore).","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Question 2\n\ndef longueur(...) : # mettre les arguments\n    d = 0\n    x = np.linspace(a,b,n)\n    # abscisses des points\n    f_x = f(x)\n    # ordonnées\n    for i in range(len(x)-1) :\n        d += ....\n        # On somme les distances entre chaque point créé\n    return d","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"celltoolbar":"Format de la Cellule Texte Brut"},"nbformat":4,"nbformat_minor":2}