Introduction pratique aux EDP
JP Chehab
Modèles physiques et EDP
( Illustrations Maple du chapitre 1)
On présente ici la classification des EDP en effectuant les calculs avec Maple. Quelques illustrations d'EDP de chaque type sont également proposées.
Classification des EDP
On se restreint au cas de deux variables et on considère l'équation :
Le type de cette EDP est donné par le discriminant de la partie principale :
soit
On suppose que A, B et C sont des constantes et on se propose de déterminer un changement de variables linéaire tel que l'équation s'exprime plus simplement avec les nouvelles variables, qu'on notera et .
On pose
où a et b sont à déterminer.
Exprimons, à l'aide de Maple, les dérivées secondes en (x,y) en fonctions de dérivées en ( ).
> restart;with(PDEtools):
> EDP:=A*diff(diff(u(x,y),x),x)+B*diff(diff(u(x,y),x),y)+C*diff(diff(u(x,y),y),y);
> eq:={eta = x+y*a, xi = x+b*y}:
> eqn:=solve(eq,{x,y});
> EQ:=dchange(eqn,EDP,[eta,xi]);
>
> EQ1:=expand(subs(u(eta,xi,a,b)=u(eta,xi),EQ));
>
EQ3:=collect(collect(collect(EQ1,diff(u(eta,xi),eta,eta)),
diff(u(eta,xi),eta,xi)),diff(u(eta,xi),xi,xi));
Les coefficients de et de sont respectivement P(a) et P(b) où P(x) est le polynôme du second degré
dont le discriminant est, on pouvait s'y attendre (!), .
On distingue naturellement 3 cas.
: cas hyperbolique
: cas parabolique
: cas elliptique
Quelques exemples d'EDP
Equation de conservation
Soit l'équation
On considère le changement de variables
L'équation se réécrit alors avec les nouvelles coordonnées
Ainsi u ne dépend que de la variable . D'où
où F est une fonction inconnue.
Les droites x-ct=cste sont appelées caractéristiques ; ce sont les courbes qui transportent le signal.
Exemple 1 : translation d'un profil
> restart;with(DEtools):
> EQ:=diff(u(x,t),t)+a*diff(u(x,t),x)=0;
avec la donnée initiale
>
u(x,0):=(x+1)*piecewise(x <=0and x>=-1,1,0)
+(1-x)*piecewise(x <=1and x>=0,1,0);
> a:=1;
> g:=unapply(u(x,0),x);
> plot(g(x),x=-2..2);
>
> pdesolve(EQ,u(x,t));
> u:=(x,t)->g(t-x);
> plot(u(x,0),x=-1..1);
> with(plots):
> animate(u(x,t),x=-1..10,t=0..10,color=RED,numpoints=200);
Exemple 2 : résolution avec Maple
> restart;with(PDEtools):
> eqc1:=diff(u(x,t),t)+c*diff(u(x,t),x)=0;
> pdesolve(eqc1,u(x,t));
On procède analoguement pour résoudre l'équation
En effet
> ecq:=diff(v(x,t),t)+c*diff(v(x,t),x)+a*v(x,t) = t;
> pdesolve(ecq,v(x,t));
Equation des ondes
On s'intéresse aux vibrations d' une corde flexible de longueur infinie.
On décrit l'amplitude des déplacements de la corde par une fonction u(x,t) , les déplacements suivant le plan perpendiculaire à Ox sont supposés négligeables.
> restart;with(PDEtools):
> eq_ondes:=diff(u(x,t),t,t)-c^2*diff(u(x,t),x,x) = 0;
Ici c est la vitesse de l'onde.
Déterminons la forme générale des solutions de eq_ondes
> pdesolve(eq_ondes,u(x,t));
Les solutions sont donc une superposition de deux ondes l'une se deplaçant vers la gauche, l'autre vers la droite, et toutes deux à la vitesse c.
Formule de d'Alembert
On considère à nouveau le problème de Cauchy
> diff(u(x,t),t,t)-c^2*diff(u(x,t),x,x) = 0;u(x,0)=f(x);diff(u(x,t),t)(0)=g(x);
La formule de d'Alembert nous fournit la solution :
Illustration
On programme ici la formule de d'Alembert
> restart;with(DEtools):
>
dalembert:=proc(f,g,c)
local u;
u:=(f(x-c*t)+f(x+c*t)+int(g(s),s=x-c*t..x+c*t)/c)/2;
end;
> f:=x->exp(-x^2);g:=x->0;
> u:=unapply(dalembert(f,g,3),(x,t));
> plot3d(u(x,t),x=-8..8,t=0..2,title=`Equation des ondes`,axes=BOXED);
On peut voir l'évolution au cours du temps :
> with(plots):
> animate(u(x,t),x=-8..8,t=0..2,color=RED);
La solution apparait bien comme superposition de deux ondes.
Equations de diffusion
On repart d'une équation de conservation
Si l'on suppose que est relié à u par la relation :
alors u satisfait l'équation
qu'on appelle encore équation de diffusion
Remarque : on obtient par le même cheminement les équations de diffusion pour des fonctions de plusieurs variables d'espace ( remplacer par div( ) et par )
Equation de la chaleur dans un domaine non-borné
On considère l'équation de la chaleur dans R tout entier (cas d'une barre homogène infinie)
pour x dans R et pour tout t >0.
> restart;with(DEtools):assume(nu>0):
> eq:=diff(u(x,t),t)-nu*diff(u(x,t),`$`(x,2))=0;
> U:=unapply(rhs(pdsolve(eq,u(x,t),build)),(x,t));
> V:=simplify(limit(U(x,t),t=0));