Kala te souhaite la bienvenueKalaMaths

Algorithmique et programmation (Python)

🔴 Expert

Les énoncés sont gratuits, et les 2 premiers corrigés sont offerts. Les autres corrigés détaillés sont réservés aux abonnés.

S'abonner
  1. 1

    On lance une pièce truquée qui tombe sur Pile avec probabilité p = 0,6, n fois, et on note la fréquence de Pile :
    import random
    def frequence(n):
    s = 0
    for i in range(n):
    if random.random() < 0.6:
    s = s + 1
    return s / n
    Écris un code qui appelle frequence(50) mille fois et calcule la moyenne des fréquences obtenues. Autour de quelle valeur devrait-elle se situer ?

    Voir le corrigéoffert

    a) Le nombre de Piles S sur n = 50 lancers indépendants suit la loi binomiale B(50 ; 0,6). Son espérance vaut E(S) = n × p = 50 × 0,6 = 30. On attend donc environ 30 Piles.
    b) La fréquence s/n est la proportion de Piles observée. Quand n devient très grand, elle se rapproche de la probabilité p = 0,6. C'est la LOI DES GRANDS NOMBRES : la fréquence observée d'un événement converge vers sa probabilité.
    c) On stocke chaque fréquence dans un accumulateur, puis on divise par le nombre d'essais :
    total = 0
    for i in range(1000):
    total = total + frequence(50)
    print(total / 1000)
    Chaque frequence(50) est proche de 0,6 (avec des écarts dus au hasard) ; leur moyenne sur 1000 essais devrait donc se situer autour de 0,6.

  2. 2

    On approche l'aire sous la courbe de f(x) = x² entre 0 et 1 par la méthode des rectangles (points à gauche), avec n rectangles :
    def f(x):
    return x**2
    def rectangles(n):
    s = 0
    p = 1 / n
    for k in range(n):
    s = s + f(k * p) * p
    return s
    Vers quelle valeur exacte l'approximation tend-elle quand n devient grand ?

    Voir le corrigéoffert

    a) p=1np = \frac{1}{n} : c'est la LARGEUR de chaque rectangle. On partage l'intervalle [0 ; 1][0 \,;\, 1] (de longueur 1) en n morceaux égaux. La hauteur du rectangle numéro k est f(k×p)f(k \times p), valeur de la fonction au bord gauche du morceau.
    b) Pour n=4n = 4 : p=14=0,25p = \frac{1}{4} = 0{,}25. On somme f(k×0,25)×0,25f(k \times 0{,}25) \times 0{,}25 pour k=0k = 0, 1, 2, 3.
    k=0k = 0 : f(0)=02=0f(0) = 0^{2} = 0
    k=1k = 1 : f(0,25)=0,252=0,0625f(0{,}25) = 0{,}25^{2} = 0{,}0625
    k=2k = 2 : f(0,5)=0,52=0,25f(0{,}5) = 0{,}5^{2} = 0{,}25
    k=3k = 3 : f(0,75)=0,752=0,5625f(0{,}75) = 0{,}75^{2} = 0{,}5625
    Somme des hauteurs : 0+0,0625+0,25+0,5625=0,8750 + 0{,}0625 + 0{,}25 + 0{,}5625 = 0{,}875.
    On multiplie par la largeur 0,25 : rectangles(4) =0,875×0,25=0,21875= 0{,}875 \times 0{,}25 = 0{,}21875.
    c) Quand n grandit, les rectangles épousent de mieux en mieux la courbe : la somme tend vers l'aire exacte, c'est-à-dire l'intégrale ∫01x2dx=13≈0,333_{0}^{1} x^{2} dx = \frac{1}{3} \approx 0{,}333.
    Cohérence : notre valeur 0,21875 (points à gauche, avec seulement 4 rectangles) est inférieure à 13\frac{1}{3}, ce qui est normal car la fonction est croissante.

  3. 3

    a) Écris une fonction pgcd(a, b) qui calcule le plus grand commun diviseur de deux entiers positifs par l'algorithme d'Euclide (restes successifs).
    b) Déroule pgcd(48, 36) en détaillant les étapes.
    c) Utilise ce résultat pour rendre la fraction 3648\frac{36}{48} irréductible.

    🔒 Corrigé réservé aux abonnésS'abonner →
  4. 4

    a) Écris une fonction est_premier(n) qui renvoie True si l'entier n (avec n ≥ 2) est premier, False sinon.
    b) Déroule est_premier(21) et est_premier(23) en expliquant.
    c) À l'aide de est_premier, écris une instruction construisant la liste des nombres premiers inférieurs à 30.

    🔒 Corrigé réservé aux abonnésS'abonner →
  5. 5

    On additionne les inverses des carrés : S(n) = 1 + 14\frac{1}{4} + 19\frac{1}{9} + … + 1n2\frac{1}{n^{2}}.
    def S(n):
    s = 0
    for k in range(1, n+1):
    s = s + 1 / (k*k)
    return s
    Sachant que S(n) se rapproche de π26\frac{\pi ^{2}}{6} quand n grandit, S(n) peut-elle un jour dépasser 2 ?

    🔒 Corrigé réservé aux abonnésS'abonner →
  6. 6

    On veut approcher une solution de l'équation x³ + x − 5 = 0 dans l'intervalle [1 ; 2] par dichotomie. On pose :
    def f(x):
    return x**3 + x - 5
    Écris une fonction dicho(n) qui renvoie le milieu de l'intervalle obtenu après n étapes.

    🔒 Corrigé réservé aux abonnésS'abonner →
  7. 7

    Une liste L est triée dans l'ordre croissant. On y cherche une valeur v par dichotomie :
    def recherche(L, v):
    a = 0
    b = len(L) - 1
    while a <= b:
    m = (a + b) // 2
    if L[m] == v:
    return True
    elif L[m] < v:
    a = m + 1
    else:
    b = m - 1
    return False
    On prend L = [2, 5, 8, 11, 14, 17, 20].
    Combien d'étapes au maximum faut-il pour une liste de 7 éléments ? Et pour 1000 éléments ?

    🔒 Corrigé réservé aux abonnésS'abonner →
  8. 8

    On considère la suite définie par u0u_0 = 10 et, pour tout n, un+1u_{n+1} = 0,5 unu_n + 4.
    Donne le plus petit entier n tel que un<8,05u_n < 8{,}05, puis décris le comportement de la suite quand n grandit.

    🔒 Corrigé réservé aux abonnésS'abonner →
  9. 9

    Un QCM comporte 10 questions ; à chacune on répond au hasard parmi 4 propositions, donc juste avec probabilité p=0,25p = 0{,}25. On note X le nombre de bonnes réponses.
    Écris un programme qui, à partir de 10000 appels à simul(), estime la probabilité P(X≥5)P(X \ge 5).

    🔒 Corrigé réservé aux abonnésS'abonner →
  10. 10

    La suite de Syracuse part d'un entier N : tant qu'on n'a pas atteint 1, si le terme est pair on le divise par 2, sinon on le remplace par 3 fois lui-même plus 1. On compte le nombre d'étapes (le « temps de vol ») :
    def vol(N):
    n = N
    c = 0
    while n != 1:
    if n % 2 == 0:
    n = n // 2
    else:
    n = 3 * n + 1
    c = c + 1
    return c
    Que renvoie vol(1) ? Explique.

    🔒 Corrigé réservé aux abonnésS'abonner →

Comment ça s'est passé ?

Retrouve tout dans Mon suivi.