Examen type / pratique Décembre 2017, réponses PDF

Title Examen type / pratique Décembre 2017, réponses
Course Informatique
Institution Université Clermont-Auvergne
Pages 6
File Size 231.6 KB
File Type PDF
Total Downloads 8
Total Views 124

Summary

Examen algorithmique, traitement statistique de données, fonctions mathématiques, en Python sur machine....


Description

04/06/2018

CC_Info_corrige

CC Informatique corrigé In [1]: %matplotlib inline from pylab import *

Exercice 1 In [2]: def pgcd(a,b): while b != 0: a, b, = b, a%b return a pgcd(123456, 234567) Out[2]: 3 In [3]: # Q 2 def phi(n): cpt = 0 for a in range(1, n+1): if pgcd(a, n) == 1: cpt += 1 return cpt print("Nomre de frac irred avec q=30:", phi(30)) Nomre de frac irred avec q=30: 8 In [4]: def farey(n): return sum([phi(k) for k in range(n+1)]) + 1

https://ent.uca.fr/moodle/pluginfile.php/311479/mod_resource/content/0/CC_Info_corrige.html

1/6

04/06/2018

CC_Info_corrige

In [5]: F = array([farey(n) for n in range(10, 100)]) plot(F) show() logF = log(F) logN = log(arange(10, 100)) plot(logN, logF)

Out[5]: []

In [6]: %%time # complexité n**3 F500a = [ farey(n) for n in range(10, 501)] CPU times: user 10.2 s, sys: 11.5 ms, total: 10.2 s Wall time: 10.2 s

https://ent.uca.fr/moodle/pluginfile.php/311479/mod_resource/content/0/CC_Info_corrige.html

2/6

04/06/2018

CC_Info_corrige

In [7]: %%time # complexité n**2 philist = [phi(n) for n in range(10, 501)] F500b = cumsum(philist) + farey(9) CPU times: user 68.5 ms, sys: 1.54 ms, total: 70 ms Wall time: 68.9 ms In [8]: print(all(F500a == F500b)) True In [9]: %%time philist = [phi(n) for n in range(10, 2001)] F2000 = cumsum(philist) + farey(9) print(mean(F2000)) 407728.167253 CPU times: user 1.17 s, sys: 2.46 ms, total: 1.17 s Wall time: 1.17 s

Exercice 2 In [10]: pat_moy = [] nbr_red = [] region = [] commune = [] dep = [] with open("isf_2015.csv") as f: for ligne in f: L = ligne.split(',') region.append(L[0]) commune.append(L[3]) nbr_red.append(int(L[4])) pat_moy.append(int(L[5])) dep.append(L[1]) In [15]: # Q 1 nbr_total = sum(nbr_red) print("Nombre total des redevables", nbr_total) nbr_idf = 0 for i, nbr in enumerate(nbr_red): if region[i] == "ILE-DE-FRANCE": nbr_idf += nbr print("Proportion en IDF:", nbr_idf / nbr_total *100, "%") Nombre total des redevables 186348 Proportion en IDF: 58.959580999 % https://ent.uca.fr/moodle/pluginfile.php/311479/mod_resource/content/0/CC_Info_corrige.html

3/6

04/06/2018

CC_Info_corrige

In [17]: # Q 2 def patrimoine_total(reg): pat = 0 for i, nbr in enumerate(nbr_red): if region[i] == reg: pat += nbr * pat_moy[i] return pat print("Patrimoine ARA:", patrimoine_total("AUVERGNE RHONE ALPES")) Patrimoine ARA: 30796324947 In [18]: # Q 3 reg_uniques = [] reg_prec = "" for reg in region: if reg != reg_prec: reg_uniques.append(reg) reg_prec = reg print(reg_uniques) ['AUVERGNE RHONE ALPES', 'BOURGOGNE FRANCHE-COMTE', 'BRETAGNE', 'CENTRE VA L-DE-LOIRE', 'CORSE', 'GRAND EST', 'GUADELOUPE', 'HAUTS DE FRANCE', 'ILE-D E-FRANCE', 'MARTINIQUE', 'NORMANDIE', 'NOUVELLE AQUITAINE', 'OCCITANIE', 'PAYS DE LA LOIRE', "PROVENCE ALPES COTE-D'AZUR", 'REUNION'] In [19]: # Q 4 for reg in reg_uniques: print("Patrimoine en", reg, ":", patrimoine_total(reg)) Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine Patrimoine

en en en en en en en en en en en en en en en en

AUVERGNE RHONE ALPES : 30796324947 BOURGOGNE FRANCHE-COMTE : 5210184022 BRETAGNE : 7778858220 CENTRE VAL-DE-LOIRE : 5941687847 CORSE : 983684449 GRAND EST : 16571234418 GUADELOUPE : 223255050 HAUTS DE FRANCE : 16940767763 ILE-DE-FRANCE : 355737768424 MARTINIQUE : 449189803 NORMANDIE : 5971022514 NOUVELLE AQUITAINE : 22781586273 OCCITANIE : 18950406008 PAYS DE LA LOIRE : 11995298056 PROVENCE ALPES COTE-D'AZUR : 50150660285 REUNION : 3076174744

https://ent.uca.fr/moodle/pluginfile.php/311479/mod_resource/content/0/CC_Info_corrige.html

4/6

04/06/2018

CC_Info_corrige

In [20]: # Q 5 imin = argmin(array(pat_moy)) print("Patrimoine moyen est maximal à", commune[imin] ) icf = 0 for i in range(len(commune)): if commune[i] == "CLERMONT-FERRNAD": icf = i pat_cf = pat_moy[icf] devant = 0 for pm in pat_moy: if pm > pat_cf: devant += 1 print("Rang de Clermont-Ferrand", devant+1) Patrimoine moyen est maximal à GUYANCOURT Rang de Clermont-Ferrand 329 In [21]: hist(pat_moy, bins=45);

# nombre de bins entre 30 et 60

Exercice 3 In [22]: def cinq_annivs(): annivs = randint(0, 365, 5) return annivs

https://ent.uca.fr/moodle/pluginfile.php/311479/mod_resource/content/0/CC_Info_corrige.html

5/6

04/06/2018

CC_Info_corrige

In [23]: nbr_exp = 2000000 # minimun 1 million fav = 0 for _ in range(nbr_exp): jours = cinq_annivs() jours.sort() if jours[3] - jours[1] < 30 or jours[4] - jours[1] < 30: fav += 1 print("Probabilité de serie:", fav / nbr_exp) Probabilité de serie: 0.055207

In [24]: def cinq_annivs_max(): annivs = randint(0, 365, 5) return max(annivs) - min(annivs) nbr_exp = 2000000 L = [cinq_annivs_max() for _ in range(nbr_exp)] print("Nombre de jours en moyenne:", mean(L)) hist(L, bins=arange(30, 370, 1)); Nombre de jours en moyenne: 243.3312565

In [ ]:

https://ent.uca.fr/moodle/pluginfile.php/311479/mod_resource/content/0/CC_Info_corrige.html

6/6...


Similar Free PDFs