La simplification des données du problèmes entraine un certain nombre
de substitutions dans les différentes équations nous utilisons. En
conséquence, nous définissons un ensemble simple dont les
éléments correspondent à toutes les simplification auxquelles nous
allons procéder. L'ensemble pulse correspond aux notations
et
que nous nommerons respectivement
omega[0] et omega[1] (Maple ne fournit pas facilités
pour noter des symboles particuliers telque
,
etc. C'est pourquoi nous utilisons omega[0] pour
et
omega[1] pour
).
> simple:={k_1=k_0,k_2=k_0,m_1=m,m_2=m}; > pulse:={k_0+2*k=omega[1]^2*m, k_0=omega[0]^2*m};
L'ensemble des valeurs et des vecteurs propres de W est obtenue à l'aide de la fonction eigenvects.
> eigenvects(subs(simple,op(W)));
Ce qui s'interprète de la façon suivante: et
sont
les deux vecteurs propres de W et leurs valeurs propres associées sont
respectivement
et
.
Nous notons les vecteurs propre et
de W, et
,
les valeurs propres associées. Les propriétés
des éléments propres de W sont résumées par la relation matricielle:
Si on note la matrice dont les colonnes sont constituées
respectivement de
et de
(i.e.
), alors
constitue une matrice de
passage qui diagonalise W.
Le système différentiel original s'écrit alors:
On pose symboliquement alors (i.e.
) et le nouveau système différentiel s'écrit:
Autrement dit, le système est à présent découplé, c'est-à-dire constitué de deux équations différentielles indépendante l'une de l'autre.
En conclusion, le changement de variable judicieux est celui que nous notons chang. Le changement de variable inverse est noté quant à lui chang_inv.
> chang:={u1(t)=w1(t)+w2(t),u2(t)=w1(t)-w2(t)}; > chang_inv:=solve(chang,{w1(t),w2(t)});
Il ne reste qu'à faire apparaître w1 et w2 dans les équations différentielles dyn_1 et dyn_2, puis à additionner et soustraire les deux équations pour obtenir le système final:
> subs(chang union simple,{dyn_1,dyn_2}); > expand("); > newdyn:={(op(1,")-op(2,"))/2,(op(1,")+op(2,"))/2};
La résolution de ce système différentielle se fait aisément avec la fonction dsolve:
> dyn_sol:=dsolve(newdyn,{w1(t),w2(t)});
Nous faisons apparaître les pulsations et
par
substitution, puis nous reportons ces valeurs calculées dans les
expressions de
et
.
> subs(pulse,dyn_sol): > real_dyn_sol:=subs(",chang);