"""
"""
#! /usr/bin/python3
# -*- coding: utf-8 -*-
# lettres accentuées interdites (sauf dans les commentaires et les chaînes de caractères)
# objet : résoudre pn = p0 a^n > b p0 pour l'inconnue n entière
# Application aux suites géométriques :
# population initiale : p0
# population première année : p1 = a p0
# population finale : pn = p0 a^n
#
# Exemple : Soit une population qui croît au taux de 5% (suite géométrique de raison a=1,05)
# Après combien d'années aura-t-elle été multipliée par 2 (b=2) ?
# Résultat attendu :
# La population croît du facteur 2.0 en 14.206699082890461 années réelles
# La population croît d'un facteur > 2.0 après 15 années entières
#
# résoudre pn > b p0
# soit : p0 a^n > b p0
# soit : a^n > b
# la solution en n de a^n = b n'est pas entière :
# on appelle la solution réelle x : a^x = b
from math import log
def equation_log(a, b) :
"""
résoud l'équation a^x = b
ln(a^x) = ln(b) (ok car ln() est monotone)
x ln(a) = ln(b)
x = ln(b) / ln(a)
"""
print(f"equation_log() : résoud {a}^x = {b}")
# contrôle des données
# pour que log(a) soit défini :
assert( a > 0 )
# pour que x soit positif :
assert( log(b) * log(a) > 0 )
x = log(b) / log(a)
print(f" La population atteint {b} en {x:9.5f} années réelles")
print(f" {a}^{x:9.5f} = {a**(x):9.5f} ≈ {b} ")
# solution entière
if a > 1 :
# la population croît
n = int(x) + 1
print(" La population dépasse", b, "après", n, "années entières")
print(f" {a}^{n-1} = {a**(n-1):9.5f} < {b} < {a}^{n} = {a**(n):9.5f}")
else : # 0 < a < 1
# la population décroît
n = int(x)
print(" La population passe au-dessous de", b, "après", n, "années entières")
print(f" {a}^{n-1} = {a**(n-1):9.5f} > {b} > {a}^{n} = {a**(n):9.5f}")
print()
return (x, n)
help(equation_log)
# données du problème :
a = 1.05 # coefficient multiplicateur annuel
b = 2. # facteur multiplicateur pour x années
print("# données : facteur de croissance annuel : a =", a)
print("# question : quand la population dépassera-t-elle b =", b, "?")
print()
x, n = equation_log(a, b)
# données du problème :
a = 0.9 # coefficient multiplicateur annuel
b = 1/10 # facteur multiplicateur pour x années
print("# données : facteur de croissance annuel : a =", a)
print("# question : quand la population passera-t-elle au-dessous de b =", b, "?")
print()
x, n = equation_log(a, b)
print("fin")
"""
"""