a) Afficher \(u_0\) avant la mise à jour permet de voir exactement les vingt termes \(u_0\) à \(u_{19}\) :
u = 1
for n in range(20):
print(n, u)
u = (u + 3) / 2
b) Les premiers termes \(1,2,2{,}5,2{,}75,\ldots\) suggèrent la limite 3. Une équation de point fixe fournit un candidat, mais ne prouve pas la convergence. Posons \(v_n=u_n-3\). Alors
\[\begin{aligned}v_{n+1}&=\frac{u_n+3}{2}-3,\\[.35em]&=\frac{u_n-3}{2},\\[.35em]&=\frac12v_n.\end{aligned}\]
Avec \(v_0=-2\), la suite géométrique donne \(v_n=-2(1/2)^n\), donc
\[\begin{aligned}u_n &= 3-2(1/2)^n\\[.35em]&\to 3.\end{aligned}\]
c)
u = 1
n = 0
while abs(u - 3) >= 1e-6:
u = (u + 3) / 2
n = n + 1
print(n) # 21
La terminaison suit de \(|u_n-3|\to0\). Le seuil strict demandé donne
\[\begin{aligned}|u_n-3|<10^{-6}
&\iff 2\times2^{-n}<10^{-6},\\[.35em]&\iff 2^n>2\times10^6,\\[.35em]&\iff n>\frac{\ln(2\times10^6)}{\ln2}\approx20{,}93.\end{aligned}\]
Le premier entier est 21 ; contrôler les rangs 20 et 21 permet aussi de vérifier le test de boucle.