extraitssujetsprecedents

publicité
M2 TICE – Epreuve sur logiciels -­ Extraits « Python » 2011 et 2012 Exo 5 (2011) – Arithmétique en Python (40 min) – 40 min pour avoir le temps de trouver …
Le nombre d’or φ vérifie la relation φ = 1+1/φ, ce qui amorce par exemple son écriture en fractions continues. Autrement il est aussi solution de la suite récurrente : u0 = 1 et un+1 = 1+1/un. On se propose d’utiliser cette relation pour calculer, en entiers longs, 100 ou 150 chiffres significatifs du nombre d’or. 5.a. Commencer par un algorithme ordinaire, sur les nombres réels, pour calculer, à la précision standard de l’ordinateur, la valeur de φ par cette suite récurrente. Cette première partie devrait vous sensibiliser au critère d’arrêt de la boucle. Enregistrer ce premier programme sous le nom nbor1.py Il s’agit maintenant d’adapter ce premier algorithme à une utilisation sur des entiers longs. Le schéma général est le même, et l’algorithme ne fait que quelques lignes. Le principe est qu’au lieu de partir de u0 = 1, on par de u0=10p, par exemple avec p =10 (10**p en Python) pour vos premiers essais. Dans ce cas, il va falloir remarquer que les deux nombres 1 de la relation et un+1 = 1+1/un n’ont en fait pas le même sens et ne vont plus être égaux (penser à l’algorithme de Héron par exemple). De même il faut, bien entendu, repenser le critère d’arrêt. 5.b. Faire vos premières approches avec p=10. On devrait arriver rapidement (avec un nombre d’étapes seulement indicatif, selon votre critère d’arrêt) à quelque chose comme Vous remarquerez qu’il y a plus de 10 décimales exactes (et que la dernière est fausse d’au plus une unité). Autrement dit, le critère d’arrêt utilisé ici n’a pas porté sur le nombre de décimales … il y a bien des façons de procéder. 5.c. Enregistrer votre programme sous le nom nbor_long.py Relancer votre programme avec p=100 par exemple Quelques remarques : • penser à utiliser la division entière // au lieu d’un floor, même si pour des nombres jusqu’à 300 chiffres, floor fonctionne encore. • si votre programme ne s’arrête pas (critère d’arrêt trop restrictif ou faux), il suffit de modifier votre programme et de le relancer : Python est très souple pour cela. • le programme final est très court. (pour p = 150, avec une erreur de ±1 sur le dernier chiffre on arrive à) Exo 6 (de 2012) – Arithmétique en Python – (30 à 40 min)
Vous choisissez l’un des deux exercices suivant (et un seul) 6.a. Crible d’Ératosthène
Étape 1. Le programme rendra les nombres premiers dans une liste ne contenant que les nombres premiers inférieurs à n=1000. Il rendra aussi le nombre de nombres premiers. « ne contenant que des nombres premiers » signifie en particulier que dans la dernière étape on supprime les 0. Indication : une façon radicale et rapide est de passer des listes aux ensembles, il faut regarder la syntaxe. On peut faire un simple balayage final aussi. Pour information : Il y a 168 nombres premiers inférieurs à 1000. Étape 2. Améliorer (éventuellement) le programme en optimisant les calculs intermédiaires, pour aller jusqu’à n=100000. Ne pas afficher la liste des nombres premiers !
Mais calculer le nombre de nombres premiers inférieurs à 100000. 6.b. Coefficients de Bézout
Faire un programme de calcul des coefficients de Bézout en Python. Pour cela on peut utiliser l’écriture matricielle proposée par Blankinship (1963) Rappel : une fonction Python peut renvoyer plusieurs nombres. On peut aussi retourner une liste. La présentation sous forme de matrice à 2 lignes est un moyen de comprendre plus rapidement l’algorithme, mais il n’y a pas de calcul matriciel dans cet algorithme. Après avoir testé votre algorithme sur des petits nombres, tester sur des grands nombres comme par exemple ici : Exo 7 (2012) – Simulation de probabilité en Python – (40 min)
On se propose d’étudier ici le paradoxe de Bertrand par des simulations de tirages en Python. Rappel du texte original de Joseph Bertrand (1889) : On trace une corde « au hasard » sur un cercle. Quelle est la probabilité quʼelle soit plus
longue que le côté dʼun triangle équilatéral inscrit dans le cercle ? Pour chaque choix de modélisation du « tracé d’une corde au hasard » sur le cercle, on fera un programme et un calcul de fréquence pour 10000 lancers. • Vous enregistrerez votre programme dans votre dossier, • Sur votre copie, vous indiquerez les choix que vous avez fait (pour chaque situation, il y a différentes approches possibles), puis la probabilité conjecturée pour cette modélisation. On utilisera au choix random() pour un nombre entre 0 et 1, ou uniforme(a,b). Dans les deux cas les bornes ne sont pas atteintes (intervalles ouverts). Il faut bien entendu utiliser en début de programme from random import* , et from math import* 7.a. Première modélisation : pour choisir une corde, on peut choisir deux points au hasard sur le cercle -­‐ c’est-­‐à-­‐dire deux angles entre 0 et 360° -­‐ et calculer leur distance. 7.b. Deuxième modélisation : à une rotation prés (choix qui n’influence pas sur la probabilité), choisir la longueur d’une corde, c’est choisir tout simplement un angle au centre … 7.c. Troisième modélisation : une corde est entièrement déterminée par son milieu M, que l’on choisit uniformément dans le disque. (Détailler vos choix sur la copie, il peut y avoir bien des façons de faire). 7.d. Quatrième modélisation : une corde est définie par son milieu M sur un rayon [OI], le point I étant déterminé par le choix d’un angle (ou d’une rotation), ce qui n’influence pas sur la probabilité finale. Donc le milieu M dans ce cas est déterminé par un point sur un rayon. 7.e. Quelle interprétation donnez vous – donneriez-­‐vous à vos élèves de terminale -­‐ au fait que l’on trouve des résultats différents avec des modélisations différentes ? 
Téléchargement