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

.128013au ;5So03-)yv4:dfmg=w*prsh68kbc(+ite7/Pnl.12050q0K0J0b0I0P0z0d0F0P0b0z0z0u010J0I0x010406050z0c0s0s0b0y0m040g0h0P0c0-0h0O050M0@0_0{0}0=0x04051d161g0M1d0=0q0I0n0#0%0)0+0A0I0t0A0P1u0A0J0:050W0E0P0K1p0(0*011t1v1x1v0J1D1F1B0J0y1e0J0A0#100z0x0b0O0+0S011H1r010r0Y0K0O0b0s0K1B1!1$1+1J1.1F1;1?0:0a0d0N0y0h0x0h0z0I130O0d0U1Y0y0y0K0F2b161_0O1e0M1W2o1T1V1U1C0q1{0+1x0O1:281B1m1o0$1I2y0I2A0O0h2E1B0x2h1e2m2o2S0?1#2c2G1,2L0y0`0P0:0R2l2W0;2V1`2Y1J2!2$0:0S2*1$2,2m2x012;0b2%040j2^2n0=2{2/0+2~300o332`2W2|390:0f3c353e372}0h2#2 0:0B3j2-2X1q2:3o2=040L3c1h2Q162E2r0q1V2w3m0F2M1@1e3G1f3E2U172+053M0U2R3l3w0+0D0:0U0r3C363#010v0:0d3+3!2H2}0r0:0z0K0c0Y3=2.3-0/040G3 3v3@0O0:2P2i0I2914452|420l0p3j0d4l3;3,470:153U2_4n3?1,0h0:0u3c4u403@0s0I0:0i4k4m3u3f0:0c4A4K3m4x044z4s2n4B461,4E2(4I4l4P3-3%040v1t1F4O4o2Z0E0:0b0E0z4f3m42444U3Z4C2Z4M4.4v1J4R0k524 1J4Z040S0C4_410:0l574X540:020t0J0e5i4L044a0F4c0I4e4}4%3@424j4}064m5F4W5r4r2S5H4Q4y5q3m48045J2+5L3-4R0H5O3-5a2)5D5G4J4/2:514}5U3@4R4T5K5z4Y3_040i0Q0L3i5,5=5k040w5Y4p044N5}5)0+5W624Y4F3A4#5-1,4)2h0J0c0y5S4t5~384q3t0M3X0K2o4a2o3Q2p3I162s6B4?1F6x1n2,0M0U0W0Y0z04.

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

.128013au ;5So03-)yv4:dfmg=w*prsh68kbc(+ite7/Pnl.12050q0K0J0b0I0P0z0d0F0P0b0z0z0u010J0I0x010406050z0c0s0s0b0y0m040g0h0P0c0-0h0O050M0@0_0{0}0=0x04051d161g0M1d0=0q0I0n0#0%0)0+0A0I0t0A0P1u0A0J0:050W0E0P0K1p0(0*011t1v1x1v0J1D1F1B0J0y1e0J0A0#100z0x0b0O0+0S011H1r010r0Y0K0O0b0s0K1B1!1$1+1J1.1F1;1?0:0a0d0N0y0h0x0h0z0I130O0d0U1Y0y0y0K0F2b161_0O1e0M1W2o1T1V1U1C0q1{0+1x0O1:281B1m1o0$1I2y0I2A0O0h2E1B0x2h1e2m2o2S0?1#2c2G1,2L0y0`0P0:0R2l2W0;2V1`2Y1J2!2$0:0S2*1$2,2m2x012;0b2%040j2^2n0=2{2/0+2~300o332`2W2|390:0f3c353e372}0h2#2 0:0B3j2-2X1q2:3o2=040L3c1h2Q162E2r0q1V2w3m0F2M1@1e3G1f3E2U172+053M0U2R3l3w0+0D0:0U0r3C363#010v0:0d3+3!2H2}0r0:0z0K0c0Y3=2.3-0/040G3 3v3@0O0:2P2i0I2914452|420l0p3j0d4l3;3,470:153U2_4n3?1,0h0:0u3c4u403@0s0I0:0i4k4m3u3f0:0c4A4K3m4x044z4s2n4B461,4E2(4I4l4P3-3%040v1t1F4O4o2Z0E0:0b0E0z4f3m42444U3Z4C2Z4M4.4v1J4R0k524 1J4Z040S0C4_410:0l574X540:020t0J0e5i4L044a0F4c0I4e4}4%3@424j4}064m5F4W5r4r2S5H4Q4y5q3m48045J2+5L3-4R0H5O3-5a2)5D5G4J4/2:514}5U3@4R4T5K5z4Y3_040i0Q0L3i5,5=5k040w5Y4p044N5}5)0+5W624Y4F3A4#5-1,4)2h0J0c0y5S4t5~384q3t0M3X0K2o4a2o3Q2p3I162s6B4?1F6x1n2,0M0U0W0Y0z04.