"""
""" #! /usr/bin/python3 # -*- coding: utf-8 -*- # lettres accentuées interdites sauf chaînes de caractères et commentaires from math import log doc=""" # calcul de la suite arithmético-géométrique : u(n+1) = q u(n) + r # données : u0, q, r # u0 = population initiale # q = diminution relative à chaque itération (raison géométrique) # r = apport à chaque itération (raison arithmétique) # Pour une suite arithmétique : q = 1 # Pour une suite géométrique : r = 0 """ # données de la suite : # u0 = 2000 r = 100 # arrivées annuelles q = 0.9 # départ de 10% des habitants chaque année nmax = 6 # quelle sera la population après 6 ans ? print("# Enoncé :") print(f" population initiale : u(0) = {u0}") print(f" u(n+1) = {q} u(n) + {r}") # Population après "nmax" ans print("# Evolution annuelle de la population (arrondie à l'unité) :") # ne jamais séparer (n et u) n = 0 u = u0 print(f" u({n:2d}) = {u:.0f}") for i in range(nmax) : # boucle "nmax" fois # indentation des instructions de la boucle par 4 espaces # u(n+1) = q u(n) + r n = n + 1 u = q * u + r print(f" u({n:2d}) = {u:.0f}") # fin de la boucle, donc de l'indentation par 4 espaces # Quand la population atteindra-t-elle un certain seuil seuil = 1050 print(f"# Quand la population atteindra-t-elle le seuil de {seuil} ?") print("# Calcul par boucle jusqu'à ce que u(n) < seuil") n = 0 u = u0 while u > seuil : # boucle jusqu'à ce que u(n) <= seuil # u(n+1) = q u(n) + r n = n + 1 u = q * u + r print(f" résultat : u({n:2d}) = {u:.0f}") print() print("# Calcul explicite du seuil (arrondi à 0.01) :") # 1) limite, si |q| < 1 # L = q L + r L = r / (1 - q) print(f" limite u(infini) = L = r / (1 - q) = {L:8.2f}") print("# fonction explicite u(n) :") # u(n+1)-L = q (u(n)-L) # u(n)-L = q**n (u(0)-L) # u(n) = (u(0)-L) q**n + L u = lambda n : (u0-L) * q**n + L print(f" formule explicite : u(n) = {u0-L:8.2f} * {q}**n + {L:8.2f}") print("# équation à résoudre : seuil = (u0-L) * q**n + L ; inconnue n") # on prend le logarithme népérien : # ln(seuil-L) = ln(u0-L) + n ln(q) # n = (ln(seuil-L) - ln(u0-L)) / ln(q) n_seuil = (log(seuil-L) - log(u0-L)) / log(q) print(f" n_seuil={n_seuil} -> u(n_seuil)={u(n_seuil)}") """"""