Title: Capacités numériques

Q: Rappeler la formule de Taylor donnant [$]f(x + h)[/$] à l'ordre 3 en [$]h[/$].
A: [$$]f(x + h) = f(x) + h\, f'(x) + \frac{h^2}{2}\, f''(x) + \frac{h^3}{6}\, f'''(x) + \mathcal{O}(h^4)[/$$]

Q: Donner la formule du développement de Taylor.
A: [$$]f(x+h) = \sum_{k=0}^n \frac{h^k}{k!}\, f^{(k)}(x) + \mathcal{O}(h^{n+1})[/$$]

Q: Donner la formule approximant la dérivée d'une fonction [$]f[/$] en [$]t[/$] à  l'ordre 1 en [$]\Delta t[/$].
A: [$$]f'(t) \approx \frac{f(t+\Delta t) - f(t)}{\Delta t} [/$$]

Q: Donner le schéma d'Euler explicite permettant de résoudre l'équation
[$$] u' = -\frac{u}{\tau} + \alpha\, u^3 [/$$]
A: On discrétise la dérivée selon
[$$] u'(t) \approx \frac{u(t + \Delta t) - u(t)}{\Delta t}[/$$]
puis, en écrivant [$]u_k = u(t_k)[/$] avec [$]t_k = k\, \Delta t[/$], on reconstruit l'équation différentielle :
[$$]u_{k+1} = u_k + \Big( -\frac{u_k}{\tau} + \alpha\, u_k^3 \Big)\, \Delta t [/$$]

Q: Comment s'approxime l'intégrale
[$$] \int_a^b \frac{x\, \text{e}^{-x}}{1+x}\, \dd x [/$$]
par la méthode des rectangles?
A: On l'approxime par sa somme de Riemann. En posant [$]N[/$] le nombre de rectangles, chaque rectangle aura une longueur [$]\Delta x = (b-a)\, /\, N[/$]. Si on note [$]x_i = a + i\, \Delta x[/$], alors on a
[$$] \int_a^b \frac{x\, \text{e}^{-x}}{1+x}\, \dd x \approx \sum_{i=0}^{N-1} \frac{x_i\, \text{e}^{-x_i}}{1 + x_i}\, \Delta x [/$$]

Q: Comment peut-on réécrire autrement cette boucle en python? [$]\texttt{l}[/$] est une liste
[$$] \begin{array}{l}
\texttt{s = 0} \\
\texttt{for i in range(len(l)) :} \\
\qquad \texttt{s += l[i]}
\end{array} [/$$]
A: On peut sommer directement sur les éléments de la liste en écrivant
[$$] \begin{array}{l}
\texttt{s = 0} \\
\texttt{for i in l :} \\
\qquad \texttt{s += i}
\end{array} [/$$]

Q: Que renvoient [$]\texttt{range(10)}[/$],
[$]\texttt{range(2, 10)}[/$],
[$]\texttt{range(2, 10, 3)}[/$]
et [$]\texttt{range(10, 2, -1)}[/$] en python?
A: Respecitvement une liste de 0 à 9 :
[$$] \begin{array}{l}
\texttt{> range(10)} \\
\texttt{[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]}
\end{array}
[/$$]
une liste de 2 à 9 :
[$$] \begin{array}{l}
\texttt{> range(2, 10)} \\
\texttt{[2, 3, 4, 5, 6, 7, 8, 9]}
\end{array}
[/$$]
une liste de 2 à 9 par pas de 3 :
[$$] \begin{array}{l}
\texttt{> range(2, 10, 3)} \\
\texttt{[2, 5, 8]}
\end{array}
[/$$]
et une liste de 10 à 3 par pas de -1 :
[$$] \begin{array}{l}
\texttt{> range(10, 2, -1)} \\
\texttt{[10, 9, 8, 7, 6, 5, 4, 3]}
\end{array}
[/$$]

Q: On donne [$]\texttt{[a, b]}[/$] un intervalle. On cherche le zéro d'une fonction [$]f[/$] dans cet intervalle (on sait par ailleurs qu'il existe et qu'il est unique).
Comment code-t-on une étape de l'algorithme de recherche par dichotomie?
A: On regarde si la racine est dans la première moitié de l'intervalle ou dans la deuxième. La moitié est [$]c = (a + b) / 2[/$]. On évalue donc [$]f(c)[/$] et on compare son signe par rapport à celui de [$]f(a)[/$]. On adapte ensuite l'intervalle en remplaçant soit la borne basse pour passer à [$]\texttt{[c, b]}[/$], soit la borne haute pour passer à [$]\texttt{[a, c]}[/$].
[$$]\begin{array}{l}
\texttt{c = (a + b) / 2} \\
\texttt{if f(c) * f(a) > 0 :} \\
\qquad \texttt{a = c} \\
\texttt{else :} \\
\qquad \texttt{b = c}
\end{array} [/$$]