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

.128013ben4vi+3mo5t;Phklpwf(: cg.a=ry0S6*-u/72)s18d050S0c0m0B0g0r0P0x0y0r0B0P0P0C010m0g0s010406050P0K0j0j0B0D0E040G0k0r0K0-0k0d050L0@0_0{0}0=0s04051d161g0L1d0=0S0g0f0#0%0)0+0p0g0z0p0r1u0p0m0:050W0b0r0c1p0(0*011t1v1x1v0m1D1F1B0m0D1e0m0p0#100P0s0B0d0+0N011H1r010u0Y0c0d0B0j0c1B1!1$1+1J1.1F1;1?0:0a0x0o0D0k0s0k0P0g130d0x0U1Y0D0D0c0y2b161_0d1e0L1W2o1T1V1U1C0S1{0+1x0d1:281B1m1o0$1I2y0g2A0d0k2E1B0s2h1e2m2o2S0?1#2c2G1,2L0D0`0r0:0Q2l2W0;2V1`2Y1J2!2$0:0N2*1$2,2m2x012;0B2%040i2^2n0=2{2/0+2~300e332`2W2|390:0l3c353e372}0k2#2 0:0H3j2-2X1q2:3o2=040M3c1h2Q162E2r0S1V2w3m0y2M1@1e3G1f3E2U172+053M0U2R3l3w0+0q0:0U0u3C363#010t0:0x3+3!2H2}0u0:0P0c0K0Y3=2.3-0/040v3 3v3@0d0:2P2i0g2914452|420O0w3j0x4l3;3,470:153U2_4n3?1,0k0:0C3c4u403@0j0g0:0F4k4m3u3f0:0K4A4K3m4x044z4s2n4B461,4E2(4I4l4P3-3%040t1t1F4O4o2Z0b0:0B0b0P4f3m42444U3Z4C2Z4M4.4v1J4R0J524 1J4Z040N0R4_410:0O574X540:020z0m0n5i4L044a0y4c0g4e4}4%3@424j4}064m5F4W5r4r2S5H4Q4y5q3m48045J2+5L3-4R0h5O3-5a2)5D5G4J4/2:514}5U3@4R4T5K5z4Y3_040F0A0M3i5,5=5k040I5Y4p044N5}5)0+5W624Y4F3A4#5-1,4)2h0m0K0D5S4t5~384q3t0L3X0c2o4a2o3Q2p3I162s6B4?1F6x1n2,0L0U0W0Y0P04.

###(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

.128013ben4vi+3mo5t;Phklpwf(: cg.a=ry0S6*-u/72)s18d050S0c0m0B0g0r0P0x0y0r0B0P0P0C010m0g0s010406050P0K0j0j0B0D0E040G0k0r0K0-0k0d050L0@0_0{0}0=0s04051d161g0L1d0=0S0g0f0#0%0)0+0p0g0z0p0r1u0p0m0:050W0b0r0c1p0(0*011t1v1x1v0m1D1F1B0m0D1e0m0p0#100P0s0B0d0+0N011H1r010u0Y0c0d0B0j0c1B1!1$1+1J1.1F1;1?0:0a0x0o0D0k0s0k0P0g130d0x0U1Y0D0D0c0y2b161_0d1e0L1W2o1T1V1U1C0S1{0+1x0d1:281B1m1o0$1I2y0g2A0d0k2E1B0s2h1e2m2o2S0?1#2c2G1,2L0D0`0r0:0Q2l2W0;2V1`2Y1J2!2$0:0N2*1$2,2m2x012;0B2%040i2^2n0=2{2/0+2~300e332`2W2|390:0l3c353e372}0k2#2 0:0H3j2-2X1q2:3o2=040M3c1h2Q162E2r0S1V2w3m0y2M1@1e3G1f3E2U172+053M0U2R3l3w0+0q0:0U0u3C363#010t0:0x3+3!2H2}0u0:0P0c0K0Y3=2.3-0/040v3 3v3@0d0:2P2i0g2914452|420O0w3j0x4l3;3,470:153U2_4n3?1,0k0:0C3c4u403@0j0g0:0F4k4m3u3f0:0K4A4K3m4x044z4s2n4B461,4E2(4I4l4P3-3%040t1t1F4O4o2Z0b0:0B0b0P4f3m42444U3Z4C2Z4M4.4v1J4R0J524 1J4Z040N0R4_410:0O574X540:020z0m0n5i4L044a0y4c0g4e4}4%3@424j4}064m5F4W5r4r2S5H4Q4y5q3m48045J2+5L3-4R0h5O3-5a2)5D5G4J4/2:514}5U3@4R4T5K5z4Y3_040F0A0M3i5,5=5k040I5Y4p044N5}5)0+5W624Y4F3A4#5-1,4)2h0m0K0D5S4t5~384q3t0L3X0c2o4a2o3Q2p3I162s6B4?1F6x1n2,0L0U0W0Y0P04.