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);