Première S Mars 2016 Recherche algorithmique d’antécédents par la fonction cosinus. Comparaison de deux méthodes : balayage & dichotomie. Thème : Angles orientés & Trigonométrie. On s’intéresse à la fonction f : x ∈ [ 0 ; π ] 7→ cos x. 1. L’étude de la dérivée de la fonction cosinus n’est pas au programme de cette année (elle est vue en TS). À l’aide du cercle trigonométrique et par des considérations géométriques simples, dresser le tableau de variation de f . 2. Préciser alors l’ensemble des réels possédant un antécédent par f . Étant donné un réel y, on cherche à savoir s’il existe un antécédent α de y par f et, le cas échéant, on souhaite en obtenir un encadrement d’amplitude aussi petite qu’on veut. Pour cela, on propose l’algorithme Algo 1 (cf page 2) écrit dans le langage AlgoBox. 3. a) b) c) 4. a) Que signifie floor(n), abs(y), Math.PI et pow(10,-n) (cf lignes 9, 15, 22 et 24) ? Justifier les lignes 15, 16 et 17. Recopier et compléter les pointillés (cf page 2) du texte qui explique le rôle de Algo 1. Dans cette question, on suppose que l’utilisateur a choisi n = 1. Donner un majorant C1 du nombre de passages dans la structure itérative « tant que ». b) Pour un entier n quelconque, généraliser la question précédente et déterminer, en fonction de n, un majorant Cn du nombre de passages dans la structure itérative « tant que ». 5. On considère l’algorithme Algo 2 (cf page 2). Il s’agit d’une modification d’Algo 1. a) Préciser les modifications effectuées. Quel renseignement supplémentaire retourne cet algorithme ? b) Exécuter cet algorithme afin de compléter le tableau suivant : y n a b compteur −1 3 −0,8 5 −0,1 4 0,5 6 6. La question précédente souligne le fait que plus l’entier n choisi est grand (c-à-d plus la précision exigée de l’encadrement de l’antécédent α de y par f est forte), plus le nombre de passages dans la boucle « tant que » devient très grand. . . Afin d’optimiser l’efficacité de l’algorithme (et ainsi, de demander moins de calculs à la machine), on envisage l’algorithme Algo 3 (cf page 3). a) Exécuter cet algorithme afin de compléter le tableau suivant : y n a b compteur −1 3 −0,8 5 −0,1 4 0,5 6 b) Dans Algo 1, on « avance » pas à pas de 0 vers π, avec un pas de 10−n . Dans Algo 3, le principe est tout autre. Nous avons déjà rencontré un tel procédé. Comment s’appelle une telle méthode ? c) Comparer alors Algo 2 et Algo 3 (on pourra comparer leur précision, leur efficacité. . .). Corrigé disponible sur http://tivomaths.free.fr/ - 1/3 - LATEX 2ε Le logiiel AlgoBox est gratuitement téléhargeable à ette adresse : http://www.xm1math.net/algobox/index.html. Toute la doumentation sur le langage AlgoBox se trouve sur e site (utile pour la question 3.a). Algo 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 Algo 2 VARIABLES y EST_DU_TYPE NOMBRE n EST_DU_TYPE NOMBRE x EST_DU_TYPE NOMBRE a EST_DU_TYPE NOMBRE DEBUT_ALGORITHME LIRE y LIRE n SI (floor(n)!=n) ALORS DEBUT_SI AFFICHER "n doit ^ etre un entier !" FIN_SI SINON DEBUT_SINON SI (abs(y)>1) ALORS DEBUT_SI AFFICHER "pas de solution" FIN_SI SINON DEBUT_SINON x PREND_LA_VALEUR 0 TANT_QUE (cos(x)>=y ET x<=Math.PI) FAIRE DEBUT_TANT_QUE x PREND_LA_VALEUR x+pow(10,-n) FIN_TANT_QUE a PREND_LA_VALEUR x-pow(10,-n) AFFICHER "a=" AFFICHER a AFFICHER "b=" AFFICHER x FIN_SINON FIN_SINON FIN_ALGORITHME 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 VARIABLES y EST_DU_TYPE NOMBRE n EST_DU_TYPE NOMBRE x EST_DU_TYPE NOMBRE a EST_DU_TYPE NOMBRE compteur EST_DU_TYPE NOMBRE DEBUT_ALGORITHME LIRE y LIRE n SI (floor(n)!=n) ALORS DEBUT_SI AFFICHER "n doit ^ etre un entier !" FIN_SI SINON DEBUT_SINON SI (abs(y)>1) ALORS DEBUT_SI AFFICHER "pas de solution" FIN_SI SINON DEBUT_SINON x PREND_LA_VALEUR 0 compteur PREND_LA_VALEUR 0 TANT_QUE (cos(x)>=y ET x<=Math.PI) FAIRE DEBUT_TANT_QUE x PREND_LA_VALEUR x+pow(10,-n) compteur PREND_LA_VALEUR compteur+1 FIN_TANT_QUE a PREND_LA_VALEUR x-pow(10,-n) AFFICHER "a=" AFFICHER a AFFICHER "b=" AFFICHER x AFFICHER "Nombre de passages : " AFFICHER compteur FIN_SINON FIN_SINON FIN_ALGORITHME Question 3.c) Compléter les phrases suivantes qui expliquent le rôle de l’algorithme Algo 1. À partir de la donnée d’un réel y et d’un entier naturel n, Algo 1 précise s’il existe un . . . . . . . . . . . . . . ...................................................................................................... Si un tel . . . . . . . . . . . . . . . . existe (notons-le α), Algo 1 retourne alors deux réels a et b (a < b) tels que : ® ........................... b − a = ................ Corrigé disponible sur http://tivomaths.free.fr/ - 2/3 - LATEX 2ε Algo 3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 VARIABLES y EST_DU_TYPE NOMBRE n EST_DU_TYPE NOMBRE x EST_DU_TYPE NOMBRE a EST_DU_TYPE NOMBRE b EST_DU_TYPE NOMBRE m EST_DU_TYPE NOMBRE compteur EST_DU_TYPE NOMBRE DEBUT_ALGORITHME LIRE y LIRE n SI (floor(n)!=n) ALORS DEBUT_SI AFFICHER "n doit ^ etre un entier !" FIN_SI SINON DEBUT_SINON SI (abs(y)>1) ALORS DEBUT_SI AFFICHER "pas de solution" FIN_SI SINON DEBUT_SINON a PREND_LA_VALEUR 0 b PREND_LA_VALEUR Math.PI compteur PREND_LA_VALEUR 0 TANT_QUE (b-a>pow(10,-n)) FAIRE DEBUT_TANT_QUE m PREND_LA_VALEUR (a+b)/2 SI (cos(m)>y) ALORS DEBUT_SI a PREND_LA_VALEUR m FIN_SI SINON DEBUT_SINON b PREND_LA_VALEUR m FIN_SINON compteur PREND_LA_VALEUR compteur+1 FIN_TANT_QUE AFFICHER "a=" AFFICHER a AFFICHER "b=" AFFICHER b AFFICHER "Nombre de passages : " AFFICHER compteur FIN_SINON FIN_SINON FIN_ALGORITHME Corrigé disponible sur http://tivomaths.free.fr/ - 3/3 - LATEX 2ε