PCSI - informatique commune Vendredi 6 juin 2014 : DS 3 Avertissements : Whatever works! Vous avez droit à tout document : papier, web... Allumez l ordinateur, loguez vous, lancez Python. En cas de problème, signalez-le TOUT DE SUITE. Créez TOUT DE SUITE un fichier Python, sauvegardez-le, exécutez-le. En cas de problème, signalez-le TOUT DE SUITE. Repérez dans le dossier de la classe (S\groupes\c84x)le sous-dossier comportant le matériel de ce DS. Allez chercher dans le dossier fichiers-eleves le fichier à votre nom, sous le format nom-prenom-classe-avant.txt. Sauvez-le dans votre dossier, et ouvrez-le avec Spyder (par exemple, mais pas Word TM!). Notez le paramètre alpha qui est indiqué. Ce paramètre va vous accompagner pendant tout le DS ; il est individuel et les réponses sont associées à cet. Ainsi, repomper les résultats du voisin n est pas une bonne idée 1. C est ainsi. Je vous conseille donc TRÈS VIVEMENT de mettre en début de votre fichier Python la définition de : alpha =... Dupliquez ce fichier nom-prenom-classe-avant.txt dans VOTRE dossier devoirs (auquel j ai accès) ; renommez-le 2 nom-prenom-classe-apres.txt SANS ACCENT. C est dans ce fichier que vous allez rentrer progressivement vos réponses à la place des champs [remplir]. Vous pouvez voir un exemple de fichier apres de l élève Gonnord Stéphane qui a répondu à une partie des questions, avec le paramètre 3 = 0. Ce fichier nom-prenom-classe-apres.txt devra être laissé à la fin du DS dans le dossier devoirs de votre répertoire personnel (j y ai accès). N y touchez plus APRÈS le DS (je peux le savoir...). Si vous n êtes pas capables de faire ces manipulations élémentaires, vous venez de perdre les trois premiers points du DS ; bravo. Il vous reste à sortir un vague papier sur lequel vous noterez vos réponses. Cela va me prendre un temps fou à corriger ; c est dommage pour moi, mais peut-être aussi pour vous... Ne vous amusez pas à changer le format du fichier : pas d espace ou de tabulation ou de sauts de lignes, merci! Récupérez également le fichier tableauzz.txt (en remplaçant zz par votre...), ainsi que le fichier zeta5.txt, et la base de donnée base-commandeszz.db On vous demande parfois des valeurs numériques non entières (flottants). Ces valeurs seront comparées aux «vraies» valeurs, et ne devront pas s en écarter de plus de 10 4. Il est donc conseillé de donner vos résultats avec 4 chiffres arès la virgule. Par exemple, si on vous demande une valeur approchée de π, donnez 3.1415 ou 3.1416 : les deux seront validées. 3.141 et 3.142 ne seront pas validées, mais 3.141592654 le sera. Ce DS est trop long pour être terminé. Concentrez-vous sur ce que vous faites, ne vous inquiétez pas de ce que vous ne faites pas. 1. Mal lire ce paramètre serait également une mauvaise idée : les «Rha mais je l avais bien lu mais pas noté ; tout mes résultats sont faux, mais mes programmes sont bon, c est promis» ne vous vaudront même pas une vague compassion 2. Avec votre nom bien entendu! 3. Non, ne rêvez pas : le vôtre est différent...
1 Analyse de tableaux Les quatre premières questions concernent un tableau t que vous pouvez récupérer par copier/coller depuis le fichier tableauzz.txt (remplacer zz par votre!) du dossier tableaux. Ce tableau sera noté t dans la suite. Question 1 Quelle est la longueur t de ce tableau? Question 2 Combien d éléments de ce tableau sont supérieurs ou égaux à 5000? Question 3 Combien d éléments de ce tableau sont divisibles par 3? Question 4 Déterminer le nombre de couples (i, j) tels que 0 i < j < t et t[i] > t[j]. Les quatre questions suivantes vont porter sur un tableau, disons u comportant les valeurs u 0,..., u 10 4 d une suite. Cette suite est définie par son premier terme u 0 = 10 +, et la relation de récurrence u n+1 = 15091u n [64007] (le reste dans la division euclidienne de 15091u n par 64007). Vous devez donc commencer par créér un tableau (de longueur 10001) contenant ces valeurs. Question 5 Que vaut u 42? Question 6 Combien d éléments de ce tableau sont divisibles par 10? Question 7 Donner le nombre d indices i [0, 9999] tels que u[i] u[i + 1] 1000. Question 8 Quelle est la somme des 10001 valeurs de ce tableau? Les quatre derniers exercices de cette partie utilisent le fichier 4 zeta5.txt, qui contient le premier million de décimales (après la virgule), de ζ(5) = + 1 1, 0369. Ouvrir ce fichier (avec Spyder, n=1 n 5 par exemple) : les décimales sont rangées par paquets de 10, eux-mêmes rangés par lignes de 5 paquets, elles-mêmes rangées dans des blocs de 10 lignes (qui contiennent donc 500 décimales ; il y a ainsi 2000 blocs). On va faire des statistiques sur le nombre d apparitions de 1000 + dans l écriture décimale de ζ(5). Par exemple, 92 apparaît deux fois dans les 20 premières décimales. Plus subtil : 70 apparaît deux fois dans les 40 premières décimales, dont une fois tronqué par un espace. À la 415ème décimale, on voit apparaître 1042. On le voit aussi apparaître en position 11779 (tronqué). On peut même trouver des occurrences coincées entre deux lignes (1004, en position 6199), voire entre deux blocs (1039, en position 15498). 4. Merci à son auteur Géry Huvent. 1
Question 9 Donner le nombre d occurrences de 1000 + dans les paquets de 10 décimales. On pourra appliquer un algorithme du type : «Pour chaque ligne l, on casse l selon les espaces. S il y a le bon nombre de blocs, alors pour chacun des blocs b, et pour chaque i entre 0 et 5 (inclus), on regarde si b[i : i + 4] vaut la chaîne représentant 1000 +». Question 10 Donner le nombre d occurrences de 1000 + dans les paquets de 50 décimales obtenus en concaténant les différents paquets de chaque ligne. Question 11 Donner le nombre d occurrences de 1000+ dans les paquets de 500 décimales obtenus en concaténant les différents paquets de chaque ligne de chaque bloc de 10 lignes. Question 12 Donner le nombre global d occurrences de 1000+ dans les 10 6 premières décimales (après la virgule) de ζ(5). 2 Une base de données Si ce n est déjà fait, récupérer dans le dossier de travail la base de données indexée par votre. L ouvrir. On dispose de trois tables, modélisant des commandes de produits réalisées par des clients pendant une année 5. Pour chaque table on dispose d une clé primaire (id...) permettant d identifier chaque élément de la relation. Les clients disposent d un taux de réduction individuel, entre 0 et 30%. Chaque produit est du type Livre ou CD. Chaque ligne de la table commande décrit quel produit (identifié par sa clé primaire) a été acheté par quel client (identitifé par sa clé primaire), en quelle quantité, et quel jour de l année. Il est très vivement conseillé d écrire sur une feuille (oui, vraiment, pas seulement d imaginer, visualiser) le schéma relationnel de cette base. Question 13 Combien de lignes possède la table produit? Question 14 Combien de lignes possède la table commande? Question 15 Combien de clients ont une réduction égale à 0? Question 16 Combien existe-t-il de commandes réalisées sur une quantité 10 un jour 100? Question 17 Combien de lignes possède la jointure «naturelle» 6 des deux tables produit et commande? Question 18 Combien de commandes ont été réalisées par des clients ayant un taux de réduction strictement positif? 5. Vu les chiffres, peut-être des libraires commandant à leur grossiste! 6. Au sens : comme expliqué dans le préambule. 2
Question 19 Quel est le nombre global 7 de CD qui ont été commandés? Question 20 Pour les commandes concernant des livres, quelle est la moyenne des quantités commandées? Question 21 Quel est le nombre de commandes concernant des CD, réalisées par des clients avec une réduction nulle? Question 22 Quel est le numéro du client ayant acheté le plus de livres 8? Question 23 Donner le nombre de livres achetés par ce client (celui de la question précédente). Question 24 Quel est le numéro du client ayant en moyenne commandé les plus petites quantités? 3 Quelques calculs Rappel : Question 25 Donner une approximation de Question 26 +1 ( ) cos t dt. Donner une approximation de l unique réel positif solution de l équation x 2 + x 10 =. Question 27 Donner une approximation de l unique réel positif t tel que +t ( 2 + x + cos x ) dx = 10. Dans les 3 questions suivantes, on travaille avec la matrice 0 1 32 243 A = 1 32 243 1024 32 243 1024 3125 243 1024 3125 7776 de terme général a i,j = (i + j 2) 5 (en maths). Attention, avec la numérotation Python/numpy des tableaux, le terme général est (i + j) 5. 7. On ne demande pas le nombre de commandes, mais bien la somme des quantités... 8. Ici encore, tenir compte des quantités, pas seulement du nombre de commandes. 3
Question 28 x 1 Résoudre le système A x 2 x 3 = x 4 poubelle!). 1 2 3. Donner la valeur de x 1 (vous pouvez jeter les autres à la Question 29 Calculer B = A 3, et donner le reste de b 1,1 (l élément en haut à gauche, donc indexé [0, 0] en numpy...) modulo 10000 + (dix mille, pas mille ou cent mille...). N.B. : Les tableaux de numpy disposent de la méthode dot pour faire des produits. Question 30 Dans A, on change le zéro en haut à gauche par. Donner la valeur du déterminant de cette nouvelle matrice, modulo 1515 (c est évidemment un entier!). On termine par des résolutions numériques d équations différentielles. Question 31 Donner une valeur approchée de x(1), avec x l unique fonction vérifiant x(0) =, et pour tout t R : x (t) = 3 cos (x(t)) + t. Question 32 Donner une valeur approchée de x ( 1 + 10), avec x l unique fonction vérifiant x(0) = 0, x (0) = 0, et pour tout t R : x (t) = 1 + cos (t + x(t)). Question 33 Donner une valeur approchée de x ( 1 + 10), avec x l unique fonction vérifiant x(0) = 0, x (0) = 1, et pour tout t R : x (t) = 1 + cos (t + x(t)). Question 34 Donner (une approximation de) β R pour que l unique solution de x (t) = 1 + cos (t + x(t)) avec les conditions initiales x(0) = 0 et x (0) = β... vérifie : ( x 1 + ) = 1 + 2 10 3. 4