\Titre{Équation de \textsc{Van der Pol}}

\begin{multicols}{2}
L'\textbf{équation de Van der Pol} est une équation différentielle du
second ordre de la forme:
\[y''- c(1-y^2)y' + y = 0\]
où \(c\) est une constante.  Elle est équivalente au système différentiel:
\[\left\{\begin{matrix}x'(t) &=& c(1-y^2(t))x(t)-y(t)\\ y'(t) &=& x(t)\hfill
\end{matrix}\right.\]

Sa traduction en code Scilab, pour \(c=0.5\), est:

.s function [Xprime] = VanDerPol(t,X)
.s   Xprime(1) = 0.5 * (1-X(2)^2) * X(1) - X(2)
.s   Xprime(2) = X(1)
.s endfunction

En réalité la forme que nous donnons là est une forme simplifiée de
l'équation qui est utilisée en physique pour modéliser un
\textit{oscillateur entretenu}. Cette équation n'est pas linéaire et
nous ne pouvons pas en donner de solution explicite.


Pour des compléments, voir l'article sur
\href{http://fr.wikipedia.org/wiki/Oscillateur_de_Van_der_Pol}{Wikipédia}; 
plus généralement une recherche sur \textit{Internet} livre une
littérature abondante sur le sujet ainsi que des animations.


Représentons le champ de vecteur dans l'espace des phases \((x,y)\):

.s s=linspace(-5,5,11);
.s fchamp(VanDerPol,0,s,s)

.f width=0.9\linewidth


Superposons la solution avec les conditions initiales
\(x(0)=0\), \(y(0)=1\), autrement dit \(y(0)=1\) et \(y'(0)=0\).

.s t=linspace(0,50,1000); X0=[0;1]; 
.s [u]=ode(X0,0,t,VanDerPol);
.s plot(u(1,:)',u(2,:)',2)

.f


Représentons la solution \(y\) en fonction de \(t\):

.s clf; plot(t,u(2,:))

.f


Comme nous pouvons le constater la solution déterminée tend vers un
\textit{cycle limite} dans l'espace des phases, elle devient quasimément
\textit{périodique}. C'est la cas, pour la valeur de \(c\) choisie ici,
quelles que soient les conditions initiales.

.s clf;
.s X0=[-3;3]; 
.s [u]=ode(X0,0,t,VanDerPol);
.s plot(u(1,:)',u(2,:)',2);

.f

\end{multicols}

\newpage
Représentons plusieurs solutions sur le même champ.

\begin{enumerate}
\item Tracé du champs de vecteur issu de l'équation de \textsc{Van der Pol}:

.s n = 30; dx = 6; dy = 4;
.s x = linspace(-dx,dx,n); 
.s y = linspace(-dy,dy,n);
.s clf();
.s fchamp(VanDerPol,0,x,y,1,[-dx,-dy,dx,dy],"031")
.s xselect()
\item Résolution de l'équation différentielle:

.s m = 500 ; T = 30; t = linspace(0,T,m);
.s couleurs = [21 2 3 4 5 6 19 28 32 9 13 22 18 21 12 30 27];  // 17 couleurs
.s num = -1;
.s while %t
.s  [c_i,c_x,c_y]=xclick();
.s  if c_i == 0 then
.s    plot2d(c_x, c_y, -9, "000")
.s    u0 = [c_x;c_y];
.s    [u] = ode(u0, 0, t, VanDerPol);
.s    num = modulo(num+1,length(couleurs));
.s    plot2d(u(1,:)',u(2,:)',couleurs(num+1),"000")
.s  elseif c_i == 2 then
.s    break
.s  end
.s end
\end{enumerate}

.f

Ce document est largement inspiré de celui que vous trouverez ici:\\
\url{http://www.iecn.u-nancy.fr/~pincon/scilab/Doc/node80.html}\\
En particulier, le dernier segment de code permettant de choisir, à la
souris, les conditions initiales est repris intégralement.

