In [1]:
from IPython.display import display, Latex
from IPython.core.display import HTML
%reset -f
%matplotlib inline
%autosave 300
from matplotlib.pylab import *
Autosaving every 300 seconds

Approximation de la dérivée seconde

Montrer que pour $f$ régulière de $\mathbb R$ dans $\mathbb R$, $$ f^{\prime \prime}(x_0) = \frac {f(x_0-h)-2f(x_0)+f(x_0+h)}{h^2}+\mathcal O(h^2). $$

Une tige encastrée

On considère une tige de longueur $L$ encastrée aux extrémités. On note $x$ l'abscisse curviligne le long de la tige $(0\le x\le L)$. Cette tige est soumise à des efforts verticaux le long de la tige, modélisés par une fonction $f\in \mathcal C^0([0,L],\mathbb R)$. La déformation de la tige selon la verticale est représentée par la fonction déplacement $u\in \mathcal C^2([0,L],\mathbb R)$, elle répond à l'équation suivante, $$ \begin{cases} -u''(x)=f(x), ~\forall x \in [0,L],\\ u(0)=u(L)=0, \text {(condition d'encastrement).} \end {cases} $$ Montrer que la fonction $$ -\int_0^x\int_0^t f(s)\,dsdt+\frac x L\int_0^L\int_0^t f(s)\,dsdt $$ est solution du problème. Montrer que c'est la seule.

On suppose que $f(x)=e^x\sin(x)$ et $L=2$. A l'aide de la commande integrate en calcul formel (librairie sympy), donner l'expression analytique de $u$ et tracer la solution sur $[0,2]$.

Approximation du problème

On propose une technique d'approximation pour calculer le déplacement de la tige. On note $x_i=ih$ les points de subdivisions de la tige, avec $h=\frac L {N+1}$, soit $N+2$ points équirépartis pour couvrir la tige extrémités comprises.

On propose d'écrire pour les $N$ points internes à la tige,

$$-u''(x_i)=\frac {-u(x_i-h)+2u(x_i)-u(x_i+h)}{h^2}+\mathcal O(h^2)=f(x_i).$$

On note alors $u_i\sim u(x_i)$ qui satisfait, $$ \frac {-u_{i-1}+2u_i-u_{i+1}}{h^2}=f(x_i),~1\le i\le N, $$ avec $u_0=u_{N+1}=0$.

Pourquoi a-t-on le système suivant? $$ \frac 1 {h^2}\left (\matrix{ 2&-1&0&-&-&-&0\\ -1&2&-1&0&-&-&0\\ 0&-1&2&-1&0&-&0\\ -&-&-&-&-&-&-\\ 0&-&0&-1&2&-1&0\\ 0&0&-&0&-1&2&-1\\ 0&0&-&-&0&-1&2\\ }\right) \left (\matrix{u_1\\u_2\\-\\-\\-\\u_{N-1}\\u_N}\right)=\left (\matrix{f(x_1)\\f(x_2)\\-\\-\\-\\f(x_{N-1})\\f(x_N)}\right) $$

Coder la résolution de ce système pour $N=100$ après avoir renseigné la matrice et le second membre du système.
Représenter le graphe de la solution approchée à l'aide des points $(x_i,u_i)_{1\le i \le N}$.

Comparer la solution discrète $(x_i,u_i)_{1\le i \le N}$ au graphe de la fonction $u$ calculée de façon exacte.

Calculer l'erreur entre la solution exacte et approchée pour la norme $l^\infty(\mathbb R^N)$, c'est à dire, $\max_{1\le i \le N}|u_i-u(x_i)|$ lorsque $N=20$, $N=40$, $N=80$, $N=160$.

Comment se comporte l'erreur en fonction de $N$? Pouvait-on s'en douter?