Pour fabriquer une séquence ou une liste : seq $

### 6.40.5 Pour fabriquer une séquence ou une liste : seq $

seq peut renvoyer une séquence (avec la même syntaxe que Maple) ou une liste (avec la même syntaxe que TI) selon la forme de ses arguments qui sont : une expression dépendant d’un paramètre (par exemple j) et des paramètres décrivant la variation de j.
$ renvoie toujours une séquence et c’est la version infixée de seq lorsque seq a comme arguments : une expression dépendant d’un paramètre (par exemple j) et (j=a..b) où a et b sont des nombres réels (par exemple j`^`2$ (j=-1..3)).
Mais lorsque seq a comme arguments une expression constante et un nombre n seq renvoie une liste (par exemple seq(4,3) renvoie [4,4,4]) alors que 4$3 renvoie la séquence (4,4,4).
seq a deux, quatre ou cinq arguments car on peut exprimer la variation de j de a à b avec un seul argument (j=a..b) (avec la syntaxe Maple où il n’y a pas la possibilité de mettre un paramètre de saut) ou avec trois arguments (j,a,b) ou avec quatre arguments (j,a,b,p) (syntaxe TI avec la possibilité de mettre p comme paramètre de saut).

- Syntaxe simplifiée Xcas
  Si seq a deux arguments un intervalle de réels a..b et un réel p (le pas) seq renvoie la séquence des réels entre a et b par pas de p.
  $ a les même arguments mais est une fonction infixée et il faut parenthéser les arguments.
  On tape :
  seq(1..3,0.2)
  Ou on tape :
  (1..3)$0.2
  On obtient :
  (1,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0)
  On tape :
  seq(1..3,2/10)
  Ou on tape :
  (1..3)$(2/10)
  On obtient :
  (1,6/5,7/5,8/5,9/5,2,11/5,12/5,13/5,14/5,3)
  Pour avoir une liste il suffit de rajouter des crochets :
  On tape :
  [seq(1..3,0.2)]
  Ou on tape :
  [(1..3)$0.2]
  On obtient :
  [1,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0]
  Si seq a deux (resp trois ou quatre) arguments une expression dépendant d’un paramètre (par exemple j) et j=a..b (resp j,a,b) où a et b sont des nombres réels seq renvoie la séquence (resp la liste) obtenue en remplacant j par a, a+1..b si b>a dans l’expression et par a, a−1..b si b<a.
  On tape avec 2 arguments :
  seq(2k+1,k=0..6)
  Ou on tape :
  (2k+1)$(k=0..6)
  On obtient une séquence :
  (1,3,5,7,9,11,13])
  Mais si on tape 4 arguments :
  seq(2k+1,k,0,6)
  On obtient une liste :
  [1,3,5,7,9,11,13]
  Dans ce cas, on peut ajouter un troisième ou un cinquième argument, le pas (qui vaut par défaut 1 ou -1).
  On tape :
  seq(2k+1,k=0..6,2)
  Ou on tape :
  seq(2k+1,k,0,6,2)
  On obtient :
  [1,5,9,13]
  Si seq a trois arguments :
  une expression dépendant d’une variable, le nom de cette variable et une liste.
  seq(expression,variable,liste) équivaut à :
  map(liste,unapply(expression,variable)) On tape :
  seq(2k+1,k=0..6,2)
  On obtient :
  [1,5,9,13]
  On tape :
  seq(2k+1,k,[1,5,10,15])
  On obtient :
  [3,11,21,31]
  $ a les même arguments mais est une fonction infixée et il faut parenthéser les arguments.
  On tape :
  seq(1..3,0.2)
  Ou on tape :
  (1..3)$0.2
  On obtient :
  (1,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0)
  On tape :
  seq(2k+1,k=0..2)
  Ou on tape :
  (2k+1)$(k=0..2)
  On obtient :
  (1,3,5)
  On tape :
  seq(2k+1,k=(0..6)$2)
  Ou on tape :
  (2k+1)$(k=0..6,2)
  Ou on tape :
  (2k+1)$(k=(0..6)$2)
  On obtient :
  [1,5,9,13]
- Syntaxe compatible Maple
  Si seq a comme arguments une expression constante et un nombre n, seq renvoie la liste formée par n fois la constante : par exemple seq(4,3) renvoie la liste [4,4,4] alors que 4$3 renvoie la séquence (4,4,4).
  Si seq a comme arguments une expression dépendant d’un paramètre (par exemple j) et j=a..b où a et b sont des nombres réels seq renvoie la séquence obtenue en remplacant j par a, a+1..b si b>a dans l’expression et par a, a−1..b si b<a : par exemple seq(2k+1,k=0..3) renvoie (1,3,5,7) et seq(2k+1,k=3..0) renvoie (7,5,3,1). Dans ce cas, on peut ajouter un troisième argument, le pas (qui vaut par défaut 1 ou -1) : par exemple seq(2k+1,k=0..6,2) renvoie (1,5,9,13).
  $ a les même arguments mais est une fonction infixée et il faut parenthéser les arguments et le pas (qui vaut par défaut 1 ou -1) doit être précédé de $ : par exemple (2k+1)$(k=0..3) renvoie (1,3,5,7) et (2k+1)$(k=(0..6)$2 renvoie (1,5,9,13).
  On tape :
  seq(0.4,5)
  Ou on tape :
  0.4$5
  On obtient :
  (0.4,0.4,0.4,0.4,0.4)
  On tape :
  seq(t,5)
  Ou on tape :
  t$5
  On obtient :
  (t,t,t,t,t)
  Attention si t est une séquence il faut évaluer le résultat à l’aide de la commande eval, par exemple :
  On tape :
  t:=(1,2,3)
  eval(seq(t,4))
  On obtient :
  [1,2,3,1,2,3,1,2,3,1,2,3]
  Ou on tape :
  eval(t$4)
  On obtient :
  (1,2,3,1,2,3,1,2,3,1,2,3)
  Lorsque le 2ième argument est de la forme k=a..b On tape :
  seq(2*k+1,k=1..5)
  Ou on tape :
  (2*k+1)$(k=1..5)
  On obtient :
  (3,5,7,9,11)
  On tape :
  seq(2*k+1,k=1..10,2)
  Ou on tape :
  (2*k+1)$(k=(1..10$2))
  On obtient :
  (3,7,11,15,19)
  Pour avoir une liste il suffit de rajouter des crochets :
  On tape :
  [seq(2*k+1,k=1..5)]]
  Ou on tape :
  [(2*k+1)$(k=1..5)]
  On obtient :
  [3,5,7,9,11]
- Syntaxe compatible TI
  Si seq a quatre arguments une expression dépendant d’un paramètre (par exemple j), le nom du paramètre (par exemple j), puis a et b où a et b sont des nombres réels. seq définit la liste obtenue en remplaçant dans l’expression j par a, a+1..b si b>a ou par a, a−1..b si b<a).
  Si seq a cinq arguments une expression dépendant d’un paramètre (par exemple j), le nom du paramètre (par exemple j), puis a et b (où a et b sont des nombres réels) et p le pas (où p est un nombre réel positif ou négatif).
  seq définit la liste obtenue en remplaçant dans l’expression j par a, a+p..a+k*p (a+k*p ≤ b <a+(k+1)*p ou a+k*p ≥ b> a+(k+1)*p). Par défaut, on a p=1 si b>a et p=-1 si b<a. Si p n’a pas le bon signe, ce signe est rectifié par le logiciel!

Remarque :
Dans la syntaxe Maple, seq renvoie une séquence et il n’y a pas la possibilité de mettre un paramètre de saut, contrairement à la syntaxe TI où seq renvoie une liste avec la possibilité de mettre un paramètre de saut.
On tape pour avoir une liste d’éléments identiques :

seq(t,4)

On obtient :

[t,t,t,t]

Ou on tape pour avoir une séquence d’éléments identiques :

seq(t,k=1..4)

Ou on tape

t$4

On obtient :

(t,t,t,t)

Attention si t est une séquence il faut évaluer le résultat à l’aide de la commande eval, par exemple :
On tape :

t:=(1,2,3)
eval(seq(t,4))

On obtient :

[1,2,3,1,2,3,1,2,3,1,2,3]

Ou on tape :

eval(t$4)

On obtient :

(1,2,3,1,2,3,1,2,3,1,2,3)

On tape pour avoir une séquence :

seq(j`^`3,j=1..4)

Ou on tape

(j`^`3)$(j=1..4)

On obtient :

(1,4,9,16)

Ou on tape pour avoir une liste :

seq(j`^`3,j,1,4)

On obtient :

[1,4,9,16]

On tape :

seq(j`^`3,j,0,5,2)

On obtient :

[0,8,64]

On tape :

seq(j`^`3,j,5,0,-2)

ou

seq(j`^`3,j,5,0,2)

On obtient :

[125,27,1]

On tape :

seq(j`^`3,j,1,3,0.5)

On obtient :

[1,3.375,8,15.625,27]

On tape :

seq(j`^`3,j,1,3,1/2)

On obtient :

[1,27/8,8,125/8,27]

Exemples d’utilisation du $ ou de seq

- On tape pour avoir la dérivée troisième de ln(x) (bien mettre les ’ autour de x ou mettre quote(x) car sinon il faut que x soit purgé):
  diff(ln(x),’x’$3)
  ou bien
  diff(ln(x),x,x,x)
  On obtient :
  2)/x`^`3)
  ou on tape en utilisant function_diff et @@), (attention ! function_diff a comme argument une fonction et renvoie une fonction) :
  g:=function_diff @@3;g(ln)(x)
  On obtient :
  (‘ x‘)->((’function_diff’)@@3)(‘ x‘),2/x`^`3
  On tape :
  l:=[[2,3],[5,1],[7,2]]
  eval(seq((l[k][0])$(l[k][1]),k=0..size(l)-1))
  On obtient :
  2,2,2,5,7,7
- On tape pour transformer une chaîne en la séquence de ses caractères :
  char(asc("abracadabrant")[k])$(k=0..dim("abracadabrant")-1)
  ou on tape :
  f(chn):={ local l; l:=size(chn); return seq(chn[j],j,0..l-1); }
  puis,
  f("abracadabrant")
  On obtient :
  ("a","b","r","a","c","a","d","a","b","r","a","n","t"]))
- On tape pour avoir la séquence des carrés des nombres premiers de 0 à 10 :
  eval(seq(ifte(isprime(k),k`^`2,NULL),k=0..10))
  ou on tape :
  eval(ifte(isprime(k),k`^`2,NULL)$(k=0..10))
  On obtient :
  (4,9,25,49)
  Pour avoir une liste on tape :
  eval(seq(ifte(isprime(k),k`^`2,NULL),k,0,10))
  ou on tape :
  eval([ifte(isprime(k),k`^`2,NULL)$(k=0..10)])
  On obtient :
  [4,9,25,49]