Quelques calculs autour de la membrane vibrante

Partant de l'equation des ondes,

[Maple Math]

ou [Maple Math] est le laplacien, il s'agit d'apprendre a manipuler Maple en vue d'experimenter autour de la "resolution" de l'equation des ondes sur une membrane circulaire (un tambour). Le principe du calcul est le suivant :

1. l'equation se separe en temps, ramenant ainsi l'etude a la recherche de fonctions propres du laplacien ;

2. la partie en espace se separe en coordonnees polaires, la partie angulaire est elementaire, la partie radiale s'exprime a l'aide des fonctions de Bessel ;

3. etant donnees des conditions initales (F(R)=0 au bord, qu'on prendra en R=1, et F(t), ainsi que [Maple Math] donnes en t=0 comme fonctions de r, [Maple Math] , il reste a developper la solution generale sur la base des fonctions propres.

Le temps ne permettra pas d'aborder ce dernier point. L'objectif de la seance (qui est meme peut-etre un peu optimiste) est de parvenir a afficher l'animation d'un des modes propres. Le but est de decouvrir le systeme "par immersion", en alternant manipulations simples et recherches dans l'aide en ligne.

1. Exprimer l'equation des ondes en coordonnes polaires et effectuer la separation en temps.

> F:=f(r,theta,t);

[Maple Math]

> wave_eq:=linalg[laplacian](F,[r,theta,z],coords=cylindrical)-diff(F,t,t);

[Maple Math]

> eval(subs(F=A(r,theta)*T(t),wave_eq));

[Maple Math]

> expand(%/A(r,theta)/T(t));

[Maple Math]

> time_part:=numer(select(has,%,t)-lambda^2);

[Maple Math]

> space_part:=numer(select(has,%%,r)+lambda^2);

[Maple Math]

2. Resoudre la partie temporelle.

> sol_time:=dsolve(time_part,T(t));

[Maple Math]

3. Separer la partie spaciale en parties angulaire et radiale.

> eval(subs(A(r,theta)=phi(r)*U(theta),space_part));

[Maple Math]

> expand(%/phi(r)/U(theta));

[Maple Math]

> polar_part:=numer(select(has,%,theta)+kappa^2);

[Maple Math]

> radius_part:=numer(select(has,%%,r)-kappa^2);

[Maple Math]

4. Resoudre la partie angulaire et deduire de la physique une contrainte sur les valeurs du parametre.

> dsolve(polar_part,U(theta));

[Maple Math]

> assume(kappa,integer);

5. Resoudre la partie radiale. La physique impose que la solution soit reguliere a l'origine. Par definition, la fonction [Maple Math] de Bessel est reguliere a l'origine pour [Maple Math] entier. Verifier que c'est la seule solution possible a une constante multiplicative pres.

> dsolve(radius_part,phi(r));

[Maple Math]

> dsolve(radius_part,phi(r),series);

[Maple Math]

Ce developpement montre que l'espace des solutions regulieres a l'origine est de dimension 1.

> sol_radius:=eval(subs(BesselY=0,%%));

[Maple Math]

La fonction csgn a pour effet de renvoyer | [Maple Math] |, il suffit donc de se restreindre a [Maple Math] . De meme, changer [Maple Math] en [Maple Math] change le signe de BesselJ, on peut donc se contenter du cas [Maple Math] positif.

6. Exploiter la condition aux limites F(R)=0 en R=1. (Il existe miraculeusement une fonction BesselJZeros).

> sol_lambda:=BesselJZeros(kappa,nu);

[Maple Math]

> sol_radius:=BesselJ(kappa,sol_lambda*r);

[Maple Math]

7. Animer en fonction du temps la partie radiale pour un mode propre particulier.

> plots[animate](subs(kappa=2,nu=3,sol_radius*cos(sol_lambda*t)),r=0..1,t=0..2*Pi/subs(kappa=2,nu=3,sol_lambda),frames=10);

8. Animer ce mode propre en trois dimensions.

> plots[animate3d]([r,theta,subs(kappa=2,nu=3,sol_radius*cos(sol_lambda*t)*cos(kappa*theta))],r=0..1,theta=0..2*Pi,t=0..2*Pi/subs(kappa=2,nu=3,sol_lambda),coords=cylindrical,frames=20);

>