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]