Opérateur sur une suite

Utilisation à l'épreuve de modélisation de l'agrégation de mathématiques

Modérateur : xcasadmin

Denizou
Messages : 61
Inscription : mer. juin 13, 2012 7:23 am

Opérateur sur une suite

Message par Denizou » mer. nov. 14, 2012 4:25 pm

Bonjour,

Je souhaiterai à partir d'une série alternée de terme général (-1)^k U(k) l'accélérer avec la transformée d'Euler. Pour cela j'avais pensé définir l'opérateur sur U : D(U)(k):=U(k)-U(k+1) pour pour pouvoir le composer avec @@ et faire calculer à Xcas sum((D@@k)(U)(0)/2^(k+1),k=0..1000) par exemple.

Je tape donc D(U)(k):=U(k)-U(k+1) (U n'étant a priori pas définie) Xcas renvoie "sto (D(U))(k)=U(k)-(U(k+1)) not allowed! Erreur: Type Argument Incorrect"

J'ai cru qu'il fallait définir U ( U(k):=1/(k+1) par exemple) mais j'ai alors "unapply(U(k)-(U(k+1))) dans D( (k)->(-1)^k/(k+1)) instruction #1 erreur, essayez debug(D( (k)->(-1)^k/(k+1)))
Type Argument Incorrect"

J'ai essayé D(U,k):=unapply(U(k)-U(k+1),U) je ne peux pas composer puisque D(U,0) renvoie en fait la fonction constante 3/2

J'ai alors essayé D(U):=unapply(U(k)-U(k+1),U) que Xcas interprète mais D(U)(0) renvoie 0 (j'avoue que je ne vois pas pourquoi)

Si j'essaie avec U:=1/(k+1) alors D(U)(0) renvoie 1/(k(k)+1)-(1/(k(k+1)+1)) et 0 n'a visiblement pas été à k...

Ma question est donc comment puis - je définir un opérateur sur une suite de manière à pouvoir le composer et faire calculer D^k(U)(n) sans chercher les coefficients des U(ni) (c'est à dire faire faire les calculs à Xcas sans avoir besoin de réfléchir).

Merci par avance

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

Re: Opérateur sur une suite

Message par parisse » mer. nov. 14, 2012 4:57 pm

D(U):=unapply(U(k+1)-U(k),k)
Ensuite D(U)(n) renvoie bien U(n+1)-(U(n)) si U n'est pas définie, et si par exemple U(n):=1/n alors D(U)(n) renvoie 1/(n+1)-1/n et par exemple (D@@3)(U)(n) renvoie 1/(n+3)-(1/(n+2))-(1/(n+2))+1/(n+1)-(1/(n+2))+1/(n+1)+1/(n+1)-(1/n)

Attention toutefois, D@@k est très couteux à exécuter, il vaudra mieux faire une boucle et calculer successivement les D(D(...(D())))) dans une boucle que de faire une sum sur des D@@k

Denizou
Messages : 61
Inscription : mer. juin 13, 2012 7:23 am

Re: Opérateur sur une suite

Message par Denizou » mer. nov. 14, 2012 6:33 pm

parisse a écrit :D(U):=unapply(U(k+1)-U(k),k)
Effectivement, j'avais mal utilisée unapply

Attention toutefois, D@@k est très couteux à exécuter, il vaudra mieux faire une boucle et calculer successivement les D(D(...(D())))) dans une boucle que de faire une sum sur des D@@k
je confirme !

Merci de la rapidité de votre réponse.

Denizou
Messages : 61
Inscription : mer. juin 13, 2012 7:23 am

Re: Opérateur sur une suite

Message par Denizou » mer. nov. 14, 2012 6:39 pm

Au fait, pourquoi la première expression D(U)(k):=U(k)-U(k+1) n'est-elle pas acceptée ?

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

Re: Opérateur sur une suite

Message par parisse » mer. nov. 14, 2012 7:05 pm

Il faudrait debugguer au niveau du parser pour savoir précisément pourquoi cette erreur est retournée, mais c'est sur que c'est invalide, car on ne sait pas si on définit U->D(U) ou k->D(U)(k).

Répondre