

\documentclass[10pt,a4paper]{report}
\usepackage[height=250mm,width=183mm]{geometry}
\usepackage{preambule}
\usepackage[upright]{fourier}
\graphicspath{{/home/moi/Figures/figuresTS/}{/home/moi/Photos/Maths/}{/home/moi/Photos/Tehessin/}}
\entete{\theNumLecon - \NomLecon}{\rightmark}{T\textsuperscript{ale}S5 - Lycée Jean \textsc{Perrin}}%g,d,b
\begin{document}
\setlength{\parindent}{0pt}
\thispagestyle{empty}



%%%%%% TITRE{vide}{intitule chapitre : lecon, chapitre ...}{debut titre}{fin titre}{titre toc}{dessin}
%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



\setcounter{NumLecon}{1}

\setlength{\parindent}{0pt}


\TITRE{II}{Informatique}{L'exponentielle et XCAS}{}{L'exponentielle et XCAS}{xcaschat.eps}



\section{Méthode d'Euler}

\subsection{Approximation affine}

On s'intéresse aux fonctions $f$ dérivables sur $\bbr$ satisfaisant la condition \[f'(x)=k\cdot f(x)\qquad (1) \] pour tout $x\in\bbr$,
avec $k$ un réel arbitrairement fixé.

On va tenter, dans cette section, d'obtenir une approximation de l'allure de la courbe
représentative d'une solution de (1).

On va pour cela considérer que pour $h$ \og~suffisamment petit~\fg et pour tout réel $a$, $f'(a)\simeq \frac{f(a+h)-f(a)}{h}$.



Montrez alors que $f(a+h)\simeq (1+kh)f(a)$.



\subsection{Subdivision}

Pour obtenir ce tracé, nous allons choisir un réel $k$, un segment $[a\pv b]$, nous allons fixer
l'image de $a$ par $f$ pour avoir une solution unique de (1) dans un premier temps.

Nous allons subdiviser le segment $[a\pv b]$ en N segments de même longueur~:~quelle sera la
longueur de chaque petit segment~?



\subsection{Tracé d'une ligne brisée}


Ouvrons une fenêtre de géométrie en tapant simultanément sur \Alt et \keystroke{g}.

On définit un point dont on connaît les coordonnées avec la commande \code{point}~:

\begin{lstlisting}
A:=point(1,2);
B:=point(3,-1);
C:=point(4,5);
\end{lstlisting}


On relie ces points par des segments de droite grâce à la commande
\code{polygone\_ouvert(liste de points)}~:


\begin{lstlisting}
polygone_ouvert(A,B,C)
\end{lstlisting}

\subsection{Tracé en boucle}

Oublions pour un temps notre problème et voyons comment nous pourrions tracer «~point par point~»
sur $[-3\pv 3]$ la courbe représentative d'une fonction $g$ vérifiant~:
\[\frac{g(b)-g(a)}{b-a}=2\] pour tous réels distincts $a$ et $b$ de $[-3\pv 3]$ et $f(-3)=-1$.



On peut par exemple subdiviser le segment
$[-3\pv 3]$ en segments de longueurs 0,25 et réfléchir au moyen d'obtenir les images par $f$ de
chacune des extrémités des segments de la subdivision.

Il suffit de penser que $\frac{g(x+0,25)-g(x)}{x+0,25-x}=2$, c'est-à-dire  $g(x+0,25)=......+g(x)$.


On peut donc calculer $g(x+0,25)$ si l'on connaît $g(x)$.


On va donc partir du point de coordonnées $(-3\pv -1)$ et obtenir de proche en proche les
coordonnées de plusieurs points de la courbes en faisant des petits sauts de 0,25 et en s'arrêtant à
3~:



\begin{lstlisting}
S:=NULL; // on crée une suite de points  vide au départ
X:=-3;  // au départ X vaut -3
Y:=-1;  // au départ Y vaut -1
tantque X<=3  faire  // tant que s'écrit tantque en XCAS
   S:=S,point(X,Y);  // on  rajoute le point de coordonnées (X,Y) à notre liste
   X:=X+0.25; // on avance de 0,25 à chaque tour de boucle
   Y:=0.5+Y; // on sait que g(X+0,25)=0,5+g(X) 
ftantque:;  // f comme fin de la boucle
polygone_ouvert(S); // on relie les points de la liste S à la règle
\end{lstlisting}


et on découvre sans surprise qu'il s'agit d'un segment de droite.





\subsection{Procédure}

Cela fonctionne pour ce cas particulier mais ça devrait aussi «~marcher~» si l'on change les valeurs
du pas, du coefficient directeur, des bornes de l'intervalle de définition, de l'image de la borne
inférieure de cet intervalle.

On a donc envie de créer un fonction informatique, une \emph{procédure}, qui reprend cette méthode
mais dans le cas général, avec des coefficients quelconques qu'on donnera à l'ordinateur. On crée
ainsi une sorte de fonction de plusieurs variables~:


Notons donc h le pas, m le coefficient directeur, $[a\pv b]$ l'intervalle de définition et yo
l'image de a.

Donnons également un nom à notre procédure, par exemple \code{TraceAffine}.

On va ouvrir une fenêtre de programmation en tapant \Alt \keystroke{p}~:

\begin{lstlisting}
TraceAffine(h,m,a,b,yo):={ // on précise quels sont les variables de notre procédure
S:=NULL; // on crée toujours une suite de points  vide au départ
X:=a;  // au départ X vaut a cette fois
Y:=yo;  // au départ Y vaut yo
tantque X<=b  faire  // on s'arrête à X=b
   S:=S,point(X,Y);  // on  rajoute le point de coordonnées (X,Y) à notre liste
   X:=X+h; // on avance de h à chaque tour de boucle
   Y:=h*m+Y; // on sait que g(X+h)=h*m+g(X) 
ftantque:;  // f comme fin de la boucle
polygone_ouvert(S); // on relie les points de la liste S à la règle
}:;  // on termine la procédure en fermant l'accolade
\end{lstlisting}

Pour valider, on clique sur \keystroke{OK}.

Pour exécuter cette procédure, on place le curseur sur une ligne de commande.

Par exemple, pour retrouver le cas précédent, on rentre~:

\begin{lstlisting}
TraceAffine(0.25,2,-3,3,-1)
\end{lstlisting}



\subsection{À vous de jouer}


Vous êtes maintenant armés pour adapter ce que nous venons de voir à la méthode d'Euler sachant que
cette fois $f(X+h)=(1+kh)f(X)$ comme nous l'avons vu au {\bf a.}

Construisez donc une procédure \code{Euler(h,k,a,b,yo)}...


\subsection{Estimation de l'erreur}


Nous avons vu en cours que la solution de l'équation différentielle $y'=y$ avec $y(0)=1$ s'appelle
la fonction exponentielle qui se note \code{exp} pour XCAS.

Nous avons utilisé une approximation pour obtenir son tracé par la méthode d'Euler. Il est bien sûr
primordial de l'ordre de grandeur de l'erreur commise.  

Nous avons écrit que $\exp(a+h)\simeq (1+h)\times\exp(a)$.

Créons alors une fonction \code{Exp(h,x)} qui donne une approximation de $\E^x$ pour un h donné.

Il suffit d'utiliser la procédure précédente en ôtant la partie tracé et en prenant $a=0$, $k=1$,
$b=x$~:

\begin{lstlisting}
Exp(h,x):={ 
X:=0;  
Y:=1;  
tantque X<=x  faire  
   X:=X+h; 
   Y:=(1+h)*Y; 
ftantque:;  
}:;  
\end{lstlisting}

Par exemple, on peut comparer \code{Exp(h,1)} et $\exp(1)$ pour des valeurs successives de h entre
0,1 et 0,0001, puis en prenant d'autres valeurs de $x$.



Étudiez le rapport $\frac{Exp(0.01,x)-\exp(x)}{\exp(x)}$ pour différentes valeurs de $x$.



Que pensez-vous de l'approximation~?




\medskip

On peut visualiser l'erreur commise en créant une fonction \code{erreur}~:

\begin{lstlisting}
erreur(x):=(1-Exp(0.01,x)/evalf(exp(x)))*100
\end{lstlisting}


Puis en créant la suite des points de coordonnées (x,erreur(x)) pour x variant de 0 à 100 avec un
pas de 1.

La commande \code{seq} comme séquence\footnote{C'est-à-dire suite} permet de créer cette suite de
valeurs~:

\begin{lstlisting}
seq(point(x,erreur(x)),x=0..100)
\end{lstlisting}

Des commentaires~?




\section{Exploration libre de la fonction exponentielle}


Lors de la recherche d'exercices, l'utilisation des capacités formelles de XCAS peut s'avérer utile
pour illustrer ses recherches, vérifier ses résultats, guider son intuition.

Pour obtenir un graphe, on utilise \code{graphe}~:

\begin{lstlisting}
graphe(exp(1-x),x=-5..5)
\end{lstlisting}


Pour la dérivée, on peut obtenir $f'(x)$ de plusieurs manières. Directement~:

\begin{lstlisting}
diff(x*exp(x^2+1))
\end{lstlisting}


Puis on factorise car c'est le signe qui nous intéresse~:

\begin{lstlisting}
factoriser(ans())
\end{lstlisting}




On peut aussi définir la fonction dérivée~:

\begin{lstlisting}
f:=x->x*exp(x^2+1);
fp:=fonction_derivee(f);
fp(3);
fp(a);
factoriser(fp(t));
\end{lstlisting}

On peut calculer des limites~:

\begin{lstlisting}
g(x):=(exp(x^2)-1)/x^2;
limite(g(x),x,0)
\end{lstlisting}


Et pour regarder à droite et à gauche~:

\begin{lstlisting}
h(x):=(exp(x^2)-1)/x^3;
limite(h(x),x,0,1);
limite(h(x),x,0,-1);
\end{lstlisting}


C'est tout pour l'instant.

Commencez à explorer les exercices du chapitre...



\end{document}

%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
