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'expression 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)
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 : 5/5

.128013(lbsSet-ph4rd;5.f180uma"ov+w7g/3=in 6k:)y *2Pc030h0a0b0r0C06080K0O060r08080B0s0b0C0d0s020E03080p0q0q0r0g0J02090t060p0(0t0D030z0/0;0?0^0-0d020318111b0z180-0h0C0u0X0Z0#0%0e0C0y0e061p0e0b0+030S07060a1k0!0$0s1o1q1s1q0b1y1A1w0b0g190b0e0X0{080d0r0D0%0M0s1C1m0s0l0U0a0D0r0q0a1w1V1X1$1E1(1A1+1-0+040K0N0g0t0d0t080C0~0D0K0Q1T0g0g0a0O25111:0D190z1R2i1O1Q1P1x0h1=0%1s0D1*221w1h1j0Y1D2s0C2u0D0t2y1w0d2b192g2i2M0.1W262A1%2F0g0=060+0m2f2Q0,2P1;2S1E2U2W0+0M2!1X2$2g2r0s2*0r2X020A2.2h0-2;2(0%2@2_0f2|2:2Q2=320+0j352~37302?0t2V2^0+0F3c2%2R1l2)3h2+020x351c2K112y2l0h1Q2q3f0O2G1.193z1a3x2O122#033F0Q2L3e3p0%0G0+0Q0l350K3n380l0+080a0p0U3v2 3U0s0*02053-3T2B2?0+2J2c0C230 3@2'3/3;0I0H3c0K483#3.3_0D0+103N2/4a3^1%0t0+0B3!3$3f0q0C0+0o47494p3/4d020p4o4b4k4m4C4j1E4r2Y4v484x3_3W020w1o1A4G424c070+0r0708413o3_3;3?4g2h4N2T0+4B4*024i4V4E020c4U4%1%4J020M0n4$2=444`2=4l02000y0b0i543f4z3|0O3~0C404:4,1E3;464:0E495r4=4{2)4e5c3/564n4:5t385w5B5l0%560v5x3_4}2Z5p5s4w4D5v4A5K4@5A2M5C4q3'020o0k0x3b5F5R5H0+0L5U5S4/5X5G0s5I5.0%4}3u5O5Q4H3V0+2b0b0p0g4f5;5*3`02652#0-0z3Q0a2i3|2i3J2j3B112m6m4Z1A6i1i2$0z0Q0S0U0802.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
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 : 5/5

.128013(lbsSet-ph4rd;5.f180uma"ov+w7g/3=in 6k:)y *2Pc030h0a0b0r0C06080K0O060r08080B0s0b0C0d0s020E03080p0q0q0r0g0J02090t060p0(0t0D030z0/0;0?0^0-0d020318111b0z180-0h0C0u0X0Z0#0%0e0C0y0e061p0e0b0+030S07060a1k0!0$0s1o1q1s1q0b1y1A1w0b0g190b0e0X0{080d0r0D0%0M0s1C1m0s0l0U0a0D0r0q0a1w1V1X1$1E1(1A1+1-0+040K0N0g0t0d0t080C0~0D0K0Q1T0g0g0a0O25111:0D190z1R2i1O1Q1P1x0h1=0%1s0D1*221w1h1j0Y1D2s0C2u0D0t2y1w0d2b192g2i2M0.1W262A1%2F0g0=060+0m2f2Q0,2P1;2S1E2U2W0+0M2!1X2$2g2r0s2*0r2X020A2.2h0-2;2(0%2@2_0f2|2:2Q2=320+0j352~37302?0t2V2^0+0F3c2%2R1l2)3h2+020x351c2K112y2l0h1Q2q3f0O2G1.193z1a3x2O122#033F0Q2L3e3p0%0G0+0Q0l350K3n380l0+080a0p0U3v2 3U0s0*02053-3T2B2?0+2J2c0C230 3@2'3/3;0I0H3c0K483#3.3_0D0+103N2/4a3^1%0t0+0B3!3$3f0q0C0+0o47494p3/4d020p4o4b4k4m4C4j1E4r2Y4v484x3_3W020w1o1A4G424c070+0r0708413o3_3;3?4g2h4N2T0+4B4*024i4V4E020c4U4%1%4J020M0n4$2=444`2=4l02000y0b0i543f4z3|0O3~0C404:4,1E3;464:0E495r4=4{2)4e5c3/564n4:5t385w5B5l0%560v5x3_4}2Z5p5s4w4D5v4A5K4@5A2M5C4q3'020o0k0x3b5F5R5H0+0L5U5S4/5X5G0s5I5.0%4}3u5O5Q4H3V0+2b0b0p0g4f5;5*3`02652#0-0z3Q0a2i3|2i3J2j3B112m6m4Z1A6i1i2$0z0Q0S0U0802.