Somme des termes d'une suite mathématique

Soit \((u_n)\) la suite définie pour tout \(n > 0\) par \(u_n = \frac{1}{n}\). On souhaite calculer la somme \(S_n\) des \(n\) premiers termes de cette suite.

Par exemple, la somme des \(70\) premiers termes est :

\[ \begin{align*} S_{70} &=\sum_{k=1}^{70}u_n\\ &=u_1+u_2+\dots+u_{70}\\ &= 1+\frac12+\frac13+\dots+\frac1{70}\\ &\approx 4,832~836~75 \end{align*} \]

Écrire la fonction somme_termes qui calcule la somme \(S_n\) des n premiers termes de \((u_n)\).

On garantit que \(1 \leqslant n \leqslant 10^3\).

Comparaison de nombres flottants

Lorsqu'on écrit a = x ou x est un nombre réel, la valeur de a enregistrée en machine est une valeur approchée de x (quelques fois la valeur exacte). Cette valeur approchée a la forme d'un nombre flottant (le type float en Python). En conséquence, alors que des calculs et des comparaisons peuvent être effectués de manière exacte sur des réels, ils ne le sont que de manière approchée sur leur représentation en machine. On peut donc obtenir par exemple, avec a = x et b = y, l'expression a == b évaluée à True alors que x et y sont différents.

C'est pourquoi les tests ne vérifient pas l'égalité des résultats et des valeurs attendues mais leur proximité.

Ainsi, on peut vérifier que \(\sqrt{2} \approx 1,414214\) en faisantassert abs(1.414214 - sqrt(2)) < 1e-6. Ce test vérifie que les deux valeurs sont proches à \(10^{-6}\) près.

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.

La vidéo ne s'affiche pas... ?

Il peut arriver que les vidéos ne s'affichent pas sur des navigateurs basés sur Chrome, ou si un ad-blocker est activé sur le navaigateur. Essayer avec un autre navigateur si vous êtes dans ce cas (FireFox, typiquement), ou désactivez l'ad-blocker.

Exemples
>>> somme_termes(1)
1.0
>>> somme_termes(2)
1.5
>>> somme_termes(3)
1.8333333333333333
>>> somme_termes(70)
4.832836757638071

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

.128013:pbv(40i2+edm3s= 1o5w_lSnatf)h6,crgyPku/050m0l0B0A0i0x0p0r0H0x0A0p0p0q010B0i0c010406050p0N0n0n0A0I0K040y0t0x0N0)0t0z050O0:0=0@0_0.0c041219051c0O1c1e190.0m0i0e0X0Z0#0%0E0i0J0E0x1s0E0B0,050S0d0x0l1n0!0$011r1t1v1t0B1B1D1z0B0d0t0m0_1A0I1a0B0E0X0|0p0c0A0z0%0j011F1p010C0U0l0z0A0n0l1z1%1)1.1H1;1D1@1_0,0a0r0L0I0t0c0t0p0i0 0z0r0Q1#0I0I0l0H2e121|0z1a0O1Z2r0B1X1W1Y0m1~0%1v0z1?2b1z1k1m0Y1G2B0i2D0z1T1l1z0c2k1a2p2r2V0/1(2f2J1/2O0I0?0x0,0s2o2Z0-2Y1}2#1H2%2)0,0j2-1)2/2p2A012@0A2*040o2{2q0.2~2=0%31330g362}2Z2 3c0,0u3f383h3a300t2(320,0F3f1b2T122H2u0m2y2 0H1T1`1a3A1d3y2X132.053F0Q2U3o1o1H0M0,0Q0C3w393U0%0v0,0r3!3T2K300C0,0p0t0=0l0w0B0l2(0l0p3+2;3$010+040f3~2!400z0,113N2|2:463-420D0b3m0r4k3*3#3-48043;3?3f4m3,1/0t0,0q4t4d2 0n0i0,0h4j4l4B3p3W040C3r4A4n2$0,0M4P4v1H0t3(042M4U3 4o0d0,0I1)0J0l452 42444b2q4J404D2+4.3p420G4#4e4R044a2V4u4$4w0,0k4 4C4E042,4=3S561H4g4i5f064l5n55502?3:3=1_5a3p4x044z5f5p3i5s4s5A4@3-5x595F4Q1H4_5d5v405x0O5P4o4S3m5m4I5L0%4L2k0B0N0I532.5B3p4p4r5u5l123Q0l2r2S5@3z1l3B2u2w2s1S1U2u0A1C5`0O3A0.670R0T0V04.

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

.128013:pbv(40i2+edm3s= 1o5w_lSnatf)h6,crgyPku/050m0l0B0A0i0x0p0r0H0x0A0p0p0q010B0i0c010406050p0N0n0n0A0I0K040y0t0x0N0)0t0z050O0:0=0@0_0.0c041219051c0O1c1e190.0m0i0e0X0Z0#0%0E0i0J0E0x1s0E0B0,050S0d0x0l1n0!0$011r1t1v1t0B1B1D1z0B0d0t0m0_1A0I1a0B0E0X0|0p0c0A0z0%0j011F1p010C0U0l0z0A0n0l1z1%1)1.1H1;1D1@1_0,0a0r0L0I0t0c0t0p0i0 0z0r0Q1#0I0I0l0H2e121|0z1a0O1Z2r0B1X1W1Y0m1~0%1v0z1?2b1z1k1m0Y1G2B0i2D0z1T1l1z0c2k1a2p2r2V0/1(2f2J1/2O0I0?0x0,0s2o2Z0-2Y1}2#1H2%2)0,0j2-1)2/2p2A012@0A2*040o2{2q0.2~2=0%31330g362}2Z2 3c0,0u3f383h3a300t2(320,0F3f1b2T122H2u0m2y2 0H1T1`1a3A1d3y2X132.053F0Q2U3o1o1H0M0,0Q0C3w393U0%0v0,0r3!3T2K300C0,0p0t0=0l0w0B0l2(0l0p3+2;3$010+040f3~2!400z0,113N2|2:463-420D0b3m0r4k3*3#3-48043;3?3f4m3,1/0t0,0q4t4d2 0n0i0,0h4j4l4B3p3W040C3r4A4n2$0,0M4P4v1H0t3(042M4U3 4o0d0,0I1)0J0l452 42444b2q4J404D2+4.3p420G4#4e4R044a2V4u4$4w0,0k4 4C4E042,4=3S561H4g4i5f064l5n55502?3:3=1_5a3p4x044z5f5p3i5s4s5A4@3-5x595F4Q1H4_5d5v405x0O5P4o4S3m5m4I5L0%4L2k0B0N0I532.5B3p4p4r5u5l123Q0l2r2S5@3z1l3B2u2w2s1S1U2u0A1C5`0O3A0.670R0T0V04.