rsolve: exactes ou approchées ?

Utilisation de Xcas

Modérateur : xcasadmin

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

rsolve: exactes ou approchées ?

Message par alb » ven. sept. 25, 2009 11:56 am

Bonjour,

A l'occasion d'un TD en Terminale S sur la loi d'équilibre génétique
(cf manuel scolaire transmath 2008 page 267),
je demande après les conjectures d'usage sur le tableur,
l'expression et le comportement de 3 suites.
Les élèves vérifient pour terminer avec rsolve:

rsolve([u(n+1)=0.25*v(n)+u(n),v(n+1)=0.5*v(n),w(n+1)=0.25*v(n)+w(n)],[u(n),v(n),w(n)],[u(0)=0,v(0)=1,w(0)=0])

ce qui donne (version juillet 2009):

[[-0.5*exp((n+1-1)*-0.6931471806)+0.5,exp((n+1-1)*-0.6931471806),-0.5*exp((n+1-1)*-0.6931471806)+0.5]]

Ma question est donc la suivante:

Peut-on obtenir dans ce cas les expressions exactes ?

Merci.

luc briel, ens math lycée la roque Rodez.

parisse
Messages : 5881
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: rsolve: exactes ou approchées ?

Message par parisse » ven. sept. 25, 2009 2:02 pm

Bonjour,

Pour avoir des solutions exactes, il faut que toutes les données soient saisies exactement, sinon les données entrées sous forme de réels approchés vont "infecter" toutes les données exactes d'où le résultat que vous avez obtenu. Dans votre cas, il faut soit rentrer 1/4 à la place de 0.25 et 1/2 au lieu de 0.5, soit utiliser exact pour faire convertir les réels approchés en rationnels, ce qui donnerait:
rsolve(exact([u(n+1)=0.25*v(n)+u(n),v(n+1)=0.5*v(n),w(n+1)=0.25*v(n)+w(n)]),[u(n),v(n),w(n)],[u(0)=0,v(0)=1,w(0)=0])
Vous pouvez aussi écrire
[u,v,w]:=rsolve(exact([u(n+1)=0.25*v(n)+u(n),v(n+1)=0.5*v(n),w(n+1)=0.25*v(n)+w(n)]),[u(n),v(n),w(n)],[u(0)=0,v(0)=1,w(0)=0])[0]
ce qui stocke dans les variables u, v et w l'expression de u(n), v(n), w(n) en fonction de n. Pour avoir la valeur de par exemple u_20, on ferait alors
normal(subst(u,n=20)) (exact) ou evalf(subst(u,n=20)) (approché)
(attention u(20) ne marcherait pas car u est une expression et pas une fonction).
Pour avoir le comportement limite en l'infini, limit([u,v,w],n=inf)

a+

Répondre