Détermination d'un seuil (2)

Soit \((u_n)\) la suite définie pour tout entier naturel \(n\) par :

\[ \begin{cases} u_0 = 1 \\ u_{n+1} = 0,75 u_n + 7 \quad \text{ pour }n \geqslant 0 \end{cases} \]

On peut montrer que cette suite tend vers \(28\) quand \(n\) tend vers \(+\infty\). Cela signifie que pour toute valeur de \(\epsilon > 0\), il existe un rang \(N\) à partir duquel on a, pour tout \(n \geqslant N\) :

\[28 - \epsilon \leqslant u_n \leqslant 28 + \epsilon\]

La dernière condition peut aussi s'écrire de façon plus concise:

\[|u_n - 28| \leqslant \epsilon\]

On rappelle à ce titre que \(|a - b|\) est la valeur absolue de \(a-b\) et peut s'interpréter comme la distance entre les nombres \(a\) et \(b\). Python permet de calculer la valeur absolue d'un nombre x en faisant abs(x).

Écrire le code de la fonction seuil qui prend en paramètre le nombre precision et renvoie la valeur du plus petit entier tel que l'on ait \(|u_n - 28| \leqslant \text{precision}\).

On garantit que precision est un nombre réel supérieur ou égal à \(10^{-14}\).

assert ?

Le mot clé assert est utilisé en Python afin de vérifier que des propositions sont vraies.

Ainsi, l'instruction assert 3 + 5*7 == 38 permet de vérifier que l'expression 3 + 5*7 est bien évaluée à 38.

Si c'est le cas, le programme continue de se dérouler normalement. Dans le cas contraire, le programme est interrompu et une erreur est signalée.

Exemples
>>> seuil(1)    # u_12 ≃ 27,1 et ǀ27,1 - 28ǀ ⩽ 1
12
>>> seuil(0.1)  # u_20 ≃ 27,91 et ǀ27,91 - 28ǀ ⩽ 0,1
20

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013rv568be:olg1ma*(cd7 tu4S2hws;pk=.30/Piyn)+f-050s0h0v0o0M0k0C0u0r0k0o0C0C0G010v0M0E010406050C0w0n0n0o0b0N040y0j0k0w0-0j0O050K0@0_0{0}0=0E04161d051g0K1g1i1d0=0s0M0c0#0%0)0+0A0M0l0A0k1w0A0v0:050W0g0k0h1r0(0*011v1x1z1x0v1F1H1D0v0g0j0s0}1E0b1e0v0A0#100C0E0o0O0+0z011J1t010R0Y0h0O0o0n0h1D1+1-1=1L1^1H1{1}0:0a0u0L0b0j0E0j0C0M130O0u0U1)0b0b0h0r2i16200O1e0K1%2v0v1#1!1$0s220+1z0O1`2f1D1o1q0$1K2F0M2H0O1X1p1D0E2o1e2t2v2Z0?1,2j2N1?2S0b0`0k0:0m2s2%0;2$212)1L2+2-0:0z2;1-2?2t2E012{0o2.040I2 2u0=322_0+35370x3a312%333g0:0d3j3c3l3e340j2,360:0e3q2@2(1s2`3v2|040t3j1f2X162L2y0s2C330r1X1~1e3N1h3L2#172=053S0U2Y3s3D0+0F0:0U0R3J3d3+010B0:0u3;3*2O340R0:0C0h0w0Y3{2^3?0/040q453C3}0O0:2W2p0M2g144b33480P0i3q0u4r3`3=4d0:153!304t3|1?0j0:0G3j4A463}0n0M0:0J4q4s3B3m0:0w4G4Q3t4D044F4y2u4H4c1?4K2/4O4r4V3?3-040B1v1H4U4u2*0g0:0o0g0C4l3t484a4!3)4I2*4S4@4B1L4X0S58551L4)040z0f4 470:0P5d4%5a0:020l0v0D5o4R044g0r4i0M4k534-3}484p53064s5L4$5x4x2Z5N4W4E5w3t4e045P2=5R3?4X0Q5U3?5g2:5J5M4P4^2`57535!3}4X4Z5Q5F4(3 040J0H0t3p5=5{5q040p5(4v044T635/0+5$684(4L3H4+5?1?4/2o0v0w0b5Y4z643f4w3A0K3%0h2v4g2v3W2w3P162z2y1W1Y2y4|1H6D1p2?0K0U0W0Y0C04.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10

.128013rv568be:olg1ma*(cd7 tu4S2hws;pk=.30/Piyn)+f-050s0h0v0o0M0k0C0u0r0k0o0C0C0G010v0M0E010406050C0w0n0n0o0b0N040y0j0k0w0-0j0O050K0@0_0{0}0=0E04161d051g0K1g1i1d0=0s0M0c0#0%0)0+0A0M0l0A0k1w0A0v0:050W0g0k0h1r0(0*011v1x1z1x0v1F1H1D0v0g0j0s0}1E0b1e0v0A0#100C0E0o0O0+0z011J1t010R0Y0h0O0o0n0h1D1+1-1=1L1^1H1{1}0:0a0u0L0b0j0E0j0C0M130O0u0U1)0b0b0h0r2i16200O1e0K1%2v0v1#1!1$0s220+1z0O1`2f1D1o1q0$1K2F0M2H0O1X1p1D0E2o1e2t2v2Z0?1,2j2N1?2S0b0`0k0:0m2s2%0;2$212)1L2+2-0:0z2;1-2?2t2E012{0o2.040I2 2u0=322_0+35370x3a312%333g0:0d3j3c3l3e340j2,360:0e3q2@2(1s2`3v2|040t3j1f2X162L2y0s2C330r1X1~1e3N1h3L2#172=053S0U2Y3s3D0+0F0:0U0R3J3d3+010B0:0u3;3*2O340R0:0C0h0w0Y3{2^3?0/040q453C3}0O0:2W2p0M2g144b33480P0i3q0u4r3`3=4d0:153!304t3|1?0j0:0G3j4A463}0n0M0:0J4q4s3B3m0:0w4G4Q3t4D044F4y2u4H4c1?4K2/4O4r4V3?3-040B1v1H4U4u2*0g0:0o0g0C4l3t484a4!3)4I2*4S4@4B1L4X0S58551L4)040z0f4 470:0P5d4%5a0:020l0v0D5o4R044g0r4i0M4k534-3}484p53064s5L4$5x4x2Z5N4W4E5w3t4e045P2=5R3?4X0Q5U3?5g2:5J5M4P4^2`57535!3}4X4Z5Q5F4(3 040J0H0t3p5=5{5q040p5(4v044T635/0+5$684(4L3H4+5?1?4/2o0v0w0b5Y4z643f4w3A0K3%0h2v4g2v3W2w3P162z2y1W1Y2y4|1H6D1p2?0K0U0W0Y0C04.