You are on page 1of 63

Dmarrer en calcul formel

R. De Graeve, B. Parisse, B. Ycart


Universit Joseph Fourier, Grenoble
Xcas est un logiciel libre de calcul formel. Il est tlchargeable partir de
http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html
Cest un quivalent de Maple et Mupad, avec lesquels il est largement compatible. Il
est possible de paramtrer Xcas pour quil accepte les syntaxes de Maple, Mupad ou
des calculatrices TI (89, Voyage 200, Nspire CAS). Nous nous limiterons la syntaxe
propre Xcas.
Ce cours dintroduction est destin faciliter la prise en main de Xcas par un
utilisateur connaissant un peu de mathmatiques (niveau terminale S, premire anne
duniversit scientique), et ayant une pratique minimale de loutil informatique.
Il est hors de question dillustrer ici toutes les possibilits de Xcas. En particulier,
nous ne parlerons ni de gomtrie interactive, ni de la tortue logo, ni du tableur. Pour
une pratique plus avance, on se reportera laide en ligne et aux diffrents documents
disponibles partir de la page daccueil du logiciel.
Le but de ce qui suit est daider le dbutant en introduisant quelques unes des com-
mandes les plus courantes. Il est conseill de lire ce document aprs avoir lanc Xcas
(sous Windows, cliquer sur le raccourci xcasfr.bat, sous linux Gnome, cliquer sur
Xcas dans le menu Education ou en tapant depuis un Terminal xcas & puis la touche
enter, sur Mac en cliquant sur xcas dans le menu Applications), en excutant les
commandes proposes une par une pour en comprendre leffet.
La table des matires et lindex sont la n de ce document, cf. lappendice A
1 Pour commencer
1.1 Interface
Pour linstant, vous allez simplement saisir vos premires commandes. Linterface
offre bien dautres possibilits que vous dcouvrirez ensuite. Elle apparat comme suit
au lancement de Xcas.
1
Fich Edit Cfg Aide CAS Tableur Graphe Geo Prg Expression Cmds Phys Scolaire Tortue
1
? Save Config : exact real RAD 12 xcas 12.512M STOP Kbd X
Unnamed
x y
z t
"
(
{} []
,
;
:= | ) i

simplify
factor
convert
D I
L
sin cos tan a a a
exp 10^ log10 ln
+
-
*
/
^
%
inv
neg
1 2 3
4 5 6
7 8 9
0 . E
esc
abc
cmds
msg
b7
ctrl
X
coller
Menu general
Clavier scientifique
Nom de session
commande
Ligne de
Interrompre
Effacer
Aide
du niveau
Numero
Mettre/enlever
clavier
Fermer session
Configuration
Vous pouvez la redimensionner. De haut en bas cette interface fait apparatre :
un barre de menu gris cliquable : Fich, Edit, Cfg, Aide, CAS, Tableur,
Graphe, Geo,. . .
un onglet indiquant le nom de la session, ou Unnamed si la session na pas
encore t sauvegarde,
une zone de gestion de la session avec un bouton ? pour ouvrir lindex de laide
un bouton Save pour sauvegarder la session, un bouton Config: exact real ...
afchant la conguration et permettant de la modier, un bouton STOP permet-
tant dinterrompre un calcul trop long, un bouton Kbd pour faire apparaitre un
clavier ressemblant celui dune calculatrice, qui peut faciliter vos saisies, et un
bouton x pour fermer la session
une zone rectangulaire blanche numrote 1 (premire ligne de commande) dans
laquelle vous pouvez taper votre premire commande (cliquez si ncessaire pour
faire apparaitre le curseur dans cette ligne de commande) : 1+1, suivi de la
touche "Entre" ("Enter" ou "Return" selon les claviers). Le rsultat apparat
au-dessous, et une nouvelle ligne de commande souvre, numrote 2.
Vous pouvez modier laspect de linterface et sauvegarder vos modications pour les
utilisations futures (menu Cfg).
Vous navez pour linstant qu entrer des commandes dans les lignes de com-
mandes successives. Si vous utilisez la version html de ce cours, vous pouvez copier-
coller les commandes proposes depuis votre navigateur. Chaque ligne de commande
saisie est excute par la touche "Entre". Essayez par exemple dexcuter les com-
mandes suivantes.
1/3+1/4
sqrt(2)^5
solve(a*x^2+b*x+c,x)
50!
2
Toutes les commandes sont gardes en mmoire. Vous pouvez donc remonter dans
lhistorique de votre session pour modier des commandes antrieures. Essayez par
exemple de changer les commandes prcdentes en :
1/3+3/4
sqrt(5)^2
solve(a*x+b*x+c,x)
500!
Le menu Edit vous permet de prparer des sessions plus labores quune simple
succession de commandes. Vous pouvez crer des groupes de lignes de commandes
(sections), ajouter des commentaires ou fusionner des niveaux en un seul niveau.
1.2 Aide en ligne
Les commandes sont regroupes par thmes dans les menus du bandeau gris sup-
rieur : CAS, Graphic, Geo, Cmds, Phys, . . . Lorsquon slectionne une commande
dans un menu,
soit lindex de laide souvre la commande slectionne (par exemple pour les
commandes du menu CAS). Cliquez sur le bouton Details pour afcher la
page du manuel correspondant la commande dans votre navigateur.
soit une boite de dialogue souvre vous permettant de spcier les arguments de
la commande (par exemple pour tracer une courbe depuis le menu Graphic)
soit la commande est recopie dans la ligne de commande. Pour connaitre la
syntaxe de cette commande, appuyez sur le bouton ? en haut gauche, ou faites
afcher la zone de Messages (en utilisant le menu Cfg,). Vous pouvez aussi
congurer Xcas (menu Cfg puis Configuration generale puis cocher
la case Aide HTML automatique) pour que la page correspondante du ma-
nuel souvre automatiquement dans votre navigateur.
Le menu Aide contient les diffrentes formes daide possible : un guide de lutilisateur
(interface), un guide de rfrence (Manuels->Calcul formel, aide detaille sur
chaque commande), un Index (liste des commandes classes par ordre alphabtique
avec une ligne dentre permettant de se dplacer facilement) et une recherche par mots
clefs.
Si vous connaissez dj le nom dune commande et que vous dsirez vrier sa
syntaxe (par exemple factor), vous pouvez saisir le dbut du nom de commande
(disons fact) puis taper sur la touche de tabulation (situe gauche de la touche A
sur un clavier franais) ou cliquer sur le bouton ? en haut gauche. Lindex des com-
mandes apparat alors dans une fentre, positionn la premire compltion possible,
avec une aide succinte sur chaque commande. Par exemple, vous voulez factoriser un
polynme, vous supposez que le nom de commande commence par fact, vous tapez
donc fact puis la touche de tabulation, vous slectionnez la souris factor (ou un
des exemples) puis vous cliquez sur OK.
Vous pouvez aussi saisir ?factor pour avoir laide succinte en rponse. Si le nom
que vous avez saisi nest pas reconnu, des commandes proches vous sont suggres.
3
1.3 Entrer des commandes
Lexcution dune ligne se fait simplement par la touche "Entre". Si on ne souhaite
pas afcher le rsultat, on termine la ligne de commande par :; et on valide avec
"Entre". On peut diter plusieurs commandes la le avant leur excution condition
de les sparer par un point-virgule.
Au dbut, de nombreuses erreurs proviennent dune mauvaise traduction des ma-
thmatiques : Xcas ne peut pas les comprendre telles que vous les crivez. Votre cla-
vier vous permet de taper ax
2
+bx +c, mais votre ordinateur ne peut pas comprendre
que vous souhaitez lever x au carr, le multiplier par a, etc. . . Vous devez spcier
chaque opration, et la syntaxe correcte est a*x^2+b*x+c. La multiplication doit tre
note par une toile dans les commandes, mais est note par un point dans les rponses.
Nous insistons sur le fait que pour Xcas, ax est une variable dont le nom comporte
deux lettres, et pas le produit de a par x.
Oprations
+ addition
- soustraction
* mutiplication
/ division
^ puissance
Modulo quelques prcautions, lcriture des formules est assez directe. Les paren-
thses ont le sens usuel pour spcier lordre des oprations. Les crochets sont rservs
aux listes et aux indices. Les priorits entre oprations sont standard (la multiplication
est prioritaire sur laddition, la puissance sur la multiplication). Par exemple :
2*a+b retourne 2a+b
a/2*b retourne
ab
2
a/2/b retourne
a
b2
a^2*b retourne a
2
b
Dans le doute, il est toujours prudent de mettre des parenthses pour sassurer que
lordre des oprations est celui souhait.
Les commandes sont numrotes, ainsi que les rponses, mais, si vous avez modi-
une ligne de commande, celle-ci garde numro quelle avait. On peut rappeler par
ans() (answer) la rponse prcdente cest dire la rponse de la dernire commande
value.
2 Les objets du calcul formel
2.1 Les nombres
Les nombres peuvent tre exacts ou approchs. Les nombres exacts sont les constantes
prdnies, les entiers, les fractions dentiers et plus gnralement toute expression ne
contenant que des entiers et des constantes, comme sqrt(2)*e^(i*pi/3). Les
4
nombres approchs sont nots avec la notation scientique standard : partie entire sui-
vie du point de sparation et partie fractionnaire (ventuellement suivie de e et dun
exposant). Par exemple, 2 est un entier exact, 2.0 est la version approche du mme
entier ; 1/2 est un rationnel, 0.5 est la version approche du mme rationnel. Xcas
peut grer des nombres entiers en prcision arbitraire : essayez de taper 500! et comp-
tez le nombre de chiffres de la rponse.
On passe dune valeur exacte une valeur approche par evalf, on transforme
une valeur approche en un rationnel exact par exact Les calculs sont effectus en
mode exact si tous les nombres qui interviennent sont exacts. Ils sont effectus en mode
approch si un des nombres est approch. Ainsi 1.5+1 renvoie un nombre approch
alors que 3/2+1 renvoie un nombre exact.
sqrt(2)
evalf(sqrt(2))
sqrt(2)-evalf(sqrt(2))
exact(evalf(sqrt(2)))*10^9
exact(evalf(sqrt(2)*10^9))
Pour les nombres rels approchs, la prcision par dfaut est proche de 14 chiffres
signicatifs (la prcision relative est de 53 ou 45 bits pour les rels ottants norma-
liss selon les versions de Xcas). Elle peut tre augmente, en donnant le nombre de
dcimales dsir comme second argument de evalf.
evalf(sqrt(2),50)
evalf(pi,100)
On peut aussi changer la prcision par dfaut pour tous les calculs en modiant la
variable Digits.
Digits:=50
evalf(pi)
evalf(exp(pi*sqrt(163)))
La lettre i est rserve

1 et ne peut tre raffecte ; en particulier on ne peut
pas lutiliser comme indice de boucle.
(1+2*i)^2
(1+2*i)/(1-2*i)
e^(i*pi/3)
Xcas distingue linni non sign infinity (), de +infinity (+) et de -infinity
().
1/0; (1/0)^2; -(1/0)^2
Constantes prdnies
pi 3.14159265359
e e 2.71828182846
i i =

1
infinity
+infinity +
-infinity
5
2.2 Les caractres et les chanes
Une chane est parenthse par des guillemets ("). Un caractre est une chane
ayant un seul lment.
s:="azertyuiop"
size(s)
s[0]+s[3]+s[size(s)-1]
concat(s[0],concat(s[3],s[size(s)-1]))
head(s)
tail(s)
mid(s,3,2)
l:=asc(s)
ss:=char(l)
string(123)
expr(123)
expr(0123)
Chanes
asc chane->liste des codes ASCII
char liste des codes ASCII->chane
size nombre de caractres
concat ou + concatnation
mid morceau de chane
head premier caractre
tail chane sans le 1ier caractre
string nombre ou expression->chane
expr chane->nombre (base 10 ou 8) ou expression
2.3 Les variables
On dit quune variable est formelle si elle ne contient aucune valeur : toutes les
variables sont formelles tant quelles nont pas t affectes ( une valeur). Laffecta-
tion est note :=. Au dbut de la session a est formelle, elle devient affecte aprs
linstruction a:=3, a sera alors remplac par 3 dans tous les calculs qui suivent, et
a+1 renverra 4. Xcas conserve tout le contenu de votre session. Si vous voulez que la
variable a aprs lavoir affecte, soit nouveau une variable formelle, il faut la "vider"
par purge(a). Dans les exemples qui suivent, les variables utilises sont supposes
avoir t purges avant chaque suite de commandes.
Il ne faut pas confondre
le signe := qui dsigne laffectation
le signe == qui dsigne une galit boolenne : cest une opration binaire qui
retourne 1 ou 0 (1 pour true qui veut dire Vrai et 0 pour false qui veut dire Faux)
le signe = utilis pour dnir une quation.
a==b
6
a:=b
a==b
solve(a=b,a)
solve(2*a=b+1,a)
On peut faire certains types dhypothses sur une variable avec la commande assume,
par exemple assume(a>2). Une hypothse est une forme spciale daffectation, elle
efface une ventuelle valeur prcdemment affecte la variable. Lors dun calcul, la
variable nest pas remplace mais lhypothse sera utilise dans la mesure du possible,
par exemple abs(a) renverra a si on fait lhypothse a>2.
sqrt(a^2)
assume(a<0)
sqrt(a^2)
assume(n,integer)
sin(n*pi)
La fonction subst permet de remplacer une variable dans une expression par un
nombre ou une autre expression, sans affecter cette variable.
subst(a^2+1,a=1)
subst(a^2+1,a=sqrt(b-1))
a^2+1
Remarque : pour stocker une valeur dans une variable par rfrence, par exemple
pour modier une valeur dans une liste (un vecteur, une matrice), sans recrer une
nouvelle liste mais en modiant en place la liste existante, on utilise linstruction =<
au lieu de :=. Cette instruction est plus rapide que linstruction :=, car elle conomise
le temps de copie de la liste.
2.4 Les expressions
Une expression est une combinaison de nombres et de variables relis entre eux par
des oprations : par exemple x^2+2*x+c.
Lorsquon valide une commande, Xcas remplace les variables par leur valeur si
elles en ont une, et excute les oprations.
(a-2)*x^2+a*x+1
a:=2
(a-2)*x^2+a*x+1
Certaines oprations de simplication sont excutes automatiquement lors dune va-
luation :
les oprations sur les entiers et sur les fractions, y compris la mise sous forme
irrductible
les simplications triviales comme x +0 = x, x x = 0, x
1
= x. . .
quelques formes trigonomtriques : cos(x) =cos(x), cos(/4) =

2/2, tan(/4) =
1. . .
Nous verrons dans la section suivante comment obtenir plus de simplications.
7
2.5 Dvelopper et simplier
En-dehors des rgles de la section prcdente, il ny a pas de simplication syst-
matique. Il y a deux raisons cela. La premire est que les simplications non triviales
sont parfois coteuses en temps, et le choix den faire ou non est laiss lutilisateur ;
la deuxime est quil y a en gnral plusieurs manires de simplier une mme expres-
sion, selon lusage que lon veut en faire. Les principales commandes pour transformer
une expression sont les suivantes :
expand : dveloppe une expression en tenant compte uniquement de la distri-
butivit de la multiplication sur laddition et du dveloppement des puissances
entires.
normal et ratnormal : dun bon rapport temps dexcution-simplication,
elles crivent une fraction rationnelle (rapport de deux polynmes) sous forme de
fraction irrductible dveloppe ; normal tient compte des nombres algbriques
(par exemple comme sqrt(2)) mais pas ratnormal. Les deux ne tiennent
pas compte des relations entre fonctions transcendantes (par exemple comme
sin et cos).
factor : un peu plus lente que les prcdentes, elle crit une fraction sous
forme irrductible factorise.
simplify : elle essaie de se ramener des variables algbriquement indpen-
dantes avant dappliquer normal. Ceci est plus coteux en temps et "aveugle"
(on ne contrle pas les rcritures intermdiaires). Les simplications faisant in-
tervenir des extensions algbriques (par exemple des racines carres) ncessitent
parfois deux appels et/ou des hypothses (assume) pour enlever des valeurs
absolues avant dobtenir la simplication souhaite.
tsimplify essaie de se ramener des variables algbriquement indpendantes
mais sans appliquer normal ensuite.
Dans le menu Math du bandeau suprieur, les 4 sous-menus de rcriture contiennent
dautres fonctions, pour des transformations plus ou moins spcialises.
b:=sqrt(1-a^2)/sqrt(1-a)
ratnormal(b)
normal(b)
tsimplify(b)
simplify(b)
simplify(simplify(b))
assume(a<1)
simplify(b)
simplify(simplify(b))
La fonction convert permet de passer dune expression une autre quivalente, sous
un format qui est spci par le deuxime argument.
convert(exp(i*x),sincos)
convert(1/(x^4-1),partfrac)
convert(series(sin(x),x=0,6),polynom)
8
Transformations
simplify simplier
tsimplify simplier (moins puissant)
normal forme normale
ratnormal forme normale (moins puissant)
expand dvelopper
factor factoriser
assume rajout dhypothses
convert transformer en un format spci
2.6 Les fonctions
De nombreuses fonctions sont dj dnies dans Xcas, en particulier les fonctions
classiques. Les plus courantes gurent dans le tableau ci-aprs ; pour les autres, voir le
menu Math.
Fonctions classiques
abs valeur absolue
round arrondi
floor partie entire (plus grand entier )
ceil plus petit entier
abs module
arg argument
conj conjugu
sqrt racine carre
exp exponentielle
log logarithme naturel
ln logarithme naturel
log10 logarithme en base 10
sin sinus
cos cosinus
tan tangente
asin arc sinus
acos arc cosinus
atan arc tangente
sinh sinus hyperbolique
cosh cosinus hyperbolique
tanh tangente hyperbolique
asinh argument sinus hyperbolique
acosh argument cosinus hyperbolique
atanh argument tangente hyperbolique
Pour crer une nouvelle fonction, il faut la dclarer laide dune expression contenant
la variable. Par exemple lexpression x
2
1 est dnie par x^2-1. Pour la transformer
en la fonction f qui x associe x
2
1, trois possibilits existent :
f(x):= x^2-1
9
f:=x->x^2-1
f:=unapply(x^2-1,x)
f(2); f(a^2)
Si f est une fonction dune variable et E est une expression, f(E) est une autre ex-
pression. Il est essentiel de ne pas confondre fonction et expression. Si on dnit :
E:=x^2-1, alors la variable E contient lexpression x
2
1. Pour avoir la valeur de
cette expression en x = 2 il faut crire subst(E,x=2) et non E(2) car E nest pas
une fonction. Lorsquon dnit une fonction, le membre de droite de laffectation nest
pas valu. Ainsi lcriture E:=x^2-1; f(x):=E dnit la fonction f : x E car
E nest pas valu. Par contre E:= x^2-1; f:=unapply(E,x) dnit bien la
fonction f : x x
2
1 car E est valu.
On peut ajouter et multiplier des fonctions, par exemple f:=sin*exp. Pour com-
poser des fonctions, on utilise loprateur @ et pour composer plusieurs fois une fonc-
tion avec elle-mme, on utilise loprateur @@.
f:=x->x^2-1
f1:=f@sin
f2:=f@f
f3:=f@@3
f1(a)
f2(a)
f3(a)
On peut dnir des fonctions de plusieurs variables valeurs dans Rcomme f(x,y):=x+2*y
et des fonctions de plusieurs variables valeurs dans R
p
par exemple f(x,y):=(x+2*y,x-y)
2.7 Listes, squences, ensembles
Xcas distingue plusieurs sortes de collections dobjets, spars par des virgules :
les listes (entre crochets)
les squences (entre parenthses)
les ensembles (entre pourcentage-accolades)
liste:=[1,2,4,2]
sequence:=(1,2,4,2)
ensemble:=%{1,2,4,2%}
Les listes peuvent contenir des listes (cest le cas des matrices), alors que les squences
sont plates (un lment dune squence ne peut pas tre une squence). Dans un en-
semble, lordre na pas dimportance et chaque objet est unique. Il existe une autre
structure, appele table, dont nous reparlerons plus loin.
Il suft de mettre une squence entre crochets pour en faire une liste ou entre ac-
colades prcdes de % pour en faire un ensemble. On passe dune liste sa squence
associe par op, dune squence sa liste associe en la mettant entre crochets ou avec
la fonction nop. Le nombre dlments dune liste est donn par size (ou nops).
10
se:=(1,2,4,2)
li:=[se]
op(li)
nop(se)
nops(se)
%{se%}
size([se])
size(%{se%})
Pour fabriquer une liste ou une squence, on utilise des commandes ditration comme
$ ou seq (qui itrent une expression) ou makelist (qui dnit une liste laide
dune fonction).
1$5
k^2 $ (k=-2..2)
seq(k^2,k=-2..2)
seq(k^2,k,-2..2)
[k^2$(k=-2..2)]
seq(k^2,k,-2,2)
seq(k^2,k,-2,2,2)
makelist(x->x^2,-2,2)
seq(k^2,k,-2,2,2)
makelist(x->x^2,-2,2,2)
La squence vide est note NULL, la liste vide []. Pour ajouter un lment une
squence il suft dcrire la squence et lment spars par une virgule. Pour ajouter
un lment une liste on utilise append. On accde un lment dune liste ou dune
squence grce son indice mis entre crochets, le premier lment tant dindice 0.
se:=NULL; se:=se,k^2$(k=-2..2); se:=se,1
li:=[1,2]; (li:=append(li,k^2))$(k=-2..2)
li[0],li[1],li[2]
Les polynmes sont souvent dnis par une expression, mais ils peuvent aussi tre
reprsents par la liste de leurs coefcients par ordre de degr dcroissant, avec comme
dlimiteurs poly1[ et ]. Il existe aussi une reprsentation pour les polynmes plu-
sieurs variables. Les fonctions symb2poly et poly2symb permettent de passer de
la reprsentation expression la reprsentation par liste et inversement, le deuxime
argument dtermine sil sagit de polynmes en une variable (on met le nom de la
variable) ou de polynmes plusieurs variables (on met la liste des variables).
11
Squences et listes
E$(k=n..m) crer une squence
seq(E,k=n..m) crer une squence
[E$(k=n..m)] crer une liste
makelist(f,k,n,m,p) crer une liste
op(li) passer de liste squence
nop(se) passer de squence liste
nops(li) nombre dlments
size(li) nombre dlments
sum somme des lments
product produit des lments
cumSum sommes cumules des lments
apply(f,li) appliquer une fonction une liste
map(li,f) appliquer une fonction une liste
poly2symb polynme associ une liste
symb2poly coefcients dun polynme
2.8 Temps de calcul, place mmoire
Le principal problme du calcul formel est la complexit des calculs intermdiaires.
Elle se traduit la fois par le temps ncessaire lexcution des commandes et par la
place mmoire requise. Les algorithmes implments dans les fonctions de Xcas sont
performants, mais ils ne peuvent pas tre optimaux dans tous les cas. La fonction
time permet de connatre le temps dexcution dune commande (si ce temps est
trs court, Xcas excute plusieurs fois la commande pour afcher un rsultat plus
prcis). La mmoire utilise apparat dans les versions Unix dans la ligne dtat (en
rouge bas gauche). Si le temps dexcution dune commande dpasse quelques
secondes, il est possible que vous ayez commis une erreur de saisie. Nhsitez pas
interrompre lexcution (bouton orange stop en bas droite, il est conseill de faire
une sauvegarde de votre session auparavant).
3 Outils pour lAnalyse
3.1 Drives
La fonction diff permet de calculer la drive dune expression par rapport une
ou plusieurs de ses variables. Pour driver une fonction f , on peut appliquer diff
lexpression f (x), mais alors le rsultat est une expression. Si on souhaite dnir la
fonction drive, il faut utiliser function_diff.
E:=x^2-1
diff(E)
f:=unapply(E,x)
diff(f(x))
f1:=function_diff(f)
12
Il ne faut pas dnir la fonction drive par f1(x):=diff(f(x)), car x aurait dans
cette dnition deux sens incompatibles : cest dune part la variable formelle de driva-
tion et dautre part largument de la fonction f1. Dautre part, cette dnition valuerait
diff chaque appel de la fonction (car le membre de droite dune affectation nest ja-
mais valu), ce qui serait inefcace. Il faut donc soit utiliser f1:=function_diff(f),
soit f1:=unapply(diff(f(x)),x).
La fonction diff sapplique nimporte quelle combinaison de variables, et per-
met de calculer des drives partielles successives.
E:=sin(x*y)
diff(E,x)
diff(E,y)
diff(E,x,y)-diff(E,y,x)
simplify(ans())
diff(E,x$2,y$3)
Si le deuxime argument de diff est une liste, une liste de drives est retourne. Par
exemple pour calculer le gradient de sin(xy) : diff(sin(x*y),[x,y]) (on peut
aussi utiliser grad). Des commandes particulires permettent de calculer les combi-
naisons classiques de drives partielles.
Drives
diff(ex) drive dune expression
function_diff(f) drive dune fonction
diff(ex,x$n,y$m) drives partielles
grad gradient
divergence divergence
curl rotationnel
laplacian laplacien
hessian matrice hessienne
3.2 Limites et dveloppements limits
La fonction limit calcule les limites nies ou innies, quand elles existent. On
peut demander une limite gauche ou droite laide dun quatrime argument (+1
ou -1). Quand la fonction dpend dun paramtre, la limite obtenue peut dpendre des
hypothses faites, avec la fonction assume, sur ce paramtre.
limit(1/x,x,0)
limit(1/x,x,0,1)
limit(1/x,x,0,-1)
limit(a/x,x,0,1)
assume(a>0)
limit(a/x,x,0,1)
Pour les dveloppements limits, deux fonctions sont disponibles, series et taylor.
La diffrence est que lordre du dveloppement doit tre spci pour series, il est
gal 6 par dfaut pour taylor.
13
Lordre du dveloppement limit demand est utilis par Xcas en interne pour faire
ses dveloppements. En cas de simplications, lordre du dveloppement obtenu pourra
tre infrieur, il faudra alors recommencer le calcul avec un ordre plus grand. Lexpres-
sion retourne est constitue du polynme de Taylor, plus un reste dans lequel apparat
une fonction order_size qui est telle que pour tout a > 0, x
a
order_size(x) tend
vers 0 quand x tend vers 0. Pour supprimer le reste et ne garder que le polynme de
Taylor, on peut utiliser convert avec loption polynom.
taylor(1/(x^2+1),0)
taylor(1/(x^2+a^2),x=0)
series(1/(x^2+1),0,11)
series(1/(x^2+1),+infinity,11)
series(tan(x),pi/4,3)
series(sin(x)^3/((1-cos(x))*tan(x)),0,4)
series(sin(x)^3/((1-cos(x))*tan(x)),0,6)
series(tan(sin(x))-sin(tan(x)),0,13)
convert(ans(),polynom)
series(f(x),0,3)
g:=f@f; series(g(x),0,2)
Limites et dveloppements limits
limit(ex,x,a) limite en a
limit(ex,x,a,1) limite droite en a
limit(ex,x,a,-1) limite gauche en a
taylor(ex,a) dveloppement limit en a ordre 6
series(ex,a,n) dveloppement limit en a ordre n
3.3 Primitives et intgrales
La fonction int calcule une primitive dune expressionpar rapport x ou par rap-
port la variable donne en argument. Si lexpression comporte plusieurs variables,
il vaut prciser la variable dintgration. Si on ajoute deux arguments a et b aprs la
variable dintgration, on calcule lintgrale sur lintervalle [a, b]. Eventuellement les
bornes de lintgrale peuvent tre des expressions, ce qui permet de calculer des int-
grales multiples.
int(x^2-1)
int(x^2-1,x,-1,1)
int(x*y,x)
int(x*y,y,0,x)
int(int(x*y,y,0,x),x,0,1)
Pour calculer une intgrale, un logiciel de calcul formel recherche une primitive puis
lvalue entre les bornes, an dobtenir une valeur exacte. Dans certains cas, il est in-
utile de calculer une primitive, soit parce quil nen existe pas qui sexprime avec les
fonctions lmentaires, soit parce quun calcul numrique est plus adapt (par exemple
14
si le temps de calcul de la primitive est trop long, si la fonction prsente des singularits
dans lintervalle dintgration, etc. . . ). Dans ce cas, on demande une valeur approche
en utilisant evalf, ou bien on utilise directement la fonction romberg, qui est appe-
le par evalf.
int(exp(-x^2))
int(exp(-x^2),x,0,10)
evalf(int(exp(-x^2),x,0,10))
romberg(exp(-x^2),x,0,10)
ans()/sqrt(pi))
Intgrales
int(E) primitive dune expression
int(E,x,a,b) intgrale exacte
romberg(E,x,a,b) intgrale approche
3.4 Rsolution dquations
Comme pour les intgrales on distingue :
la rsolution exacte qui renvoie toutes les solutions lorsque cest possible (par
exemple pour certaines quations polynomiales ou sy ramenant)
la rsolution approche qui calcule par un algorithme itratif une valeur proche
dune des solutions.
La rsolution exacte seffectue laide de solve, dont le premier argument est une
quation. Le membre de droite est suppos nul sil nest pas prcis. Par dfaut solve
ne retourne pas les solutions complexes. Pour les obtenir, il faut activer loption Complex
partir du bouton rouge sur fond gris cas (en bas gauche). Excutez les commandes
suivantes avant et aprs avoir activ loption Complex.
solve(x^2-a*x+2,x)
solve(x^2+2,x)
solve(x^3=1,x)
Les racines exactes sont calcules pour les polynmes de degr 1 et 2 (les formules de
Cardan et Ferrari pour les degrs 3 et 4 ne sont pas utilises, car les solutions obtenues
ne sont pas facilement maniables). En degr suprieur, la fonction solve afche un
message derreur et renvoie une liste vide.
Pour les quations trigonomtriques, les solutions principales sont renvoyes. Pour
obtenir toutes les solutions, il faut activer loption All_trig_sol. Comparer les
commandes suivantes avec et sans cette option.
solve(cos(x),x)
solve(cos(x)+sin(x),x)
La fonction solve peut aussi rsoudre des systmes dquations. Le premier ar-
gument est la liste des quations, le second est la liste des variables.
solve([x^2+y-2,x+y^2-2],[x,y])
15
La fonction de rsolution approche est fsolve. Elle propose en option diffrents
algorithmes (menus Calc->Num_solve_eq et Calc->Num_solve_syst). Le
plus clbre est lalgorithme de Newton, qui a de multiples variantes. Le principe gn-
ral de tous ces algorithmes est de calculer les termes successifs dune suite qui converge
vers une solution de lquation ou du systme propos. Il faut pour cela choisir selon
les cas un point de dpart, ou un intervalle de recherche.
fsolve((x^5+2*x+1)=0,x,1,newton_solver)
newton(x^5+2*x+1,x,1.0)
newton(x^5+2*x+1,x,1+i)
newton(x^5+2*x+1,x,-1+i)
Equations
solve(eq,x) rsolution exacte dune quation
solve([eq1,eq2],[x,y]) rsolution exacte dun systme
fsolve(eq,x) rsolution approche dune quation
fsolve([eq1,eq2],[x,y]) rsolution approche dun systme
newton mthode de Newton
linsolve systme linaire
proot racines approches dun polynme
3.5 Equations diffrentielles
Comme dans les deux sections prcdentes, on distingue le calcul exact, qui nest
pas toujours possible, du calcul approch. La rsolution exacte seffectue par desolve.
Les drives de la fonction inconnue y peuvent scrire y

, y

, qui sont traduits en


diff(y), diff(diff(y)). Si on ne spcie pas de condition initiale, le rsultat
est donn en fonction de constantes arbitraires.
desolve(y=y,y)
desolve(y+2*y+y=0,y)
desolve((x^2-1)*y+2*y=0,y)
Les conditions initiales sont vues comme des quations supplmentaires, qui forment
une liste avec lquation diffrentielle.
desolve([y=y,y(0)=1],y)
desolve([y"+2*y+y=0,y(0)=1],y)
desolve([y"+2*y+y=0,y(0)=1,y(0)=1],y)
desolve([y"+2*y+y=0,y(0)=1,y(1)=0],y)
desolve([(x^2-1)*y+2*y=0,y(0)=1],y)
desolve((t^2-1)*diff(y(t),t)+2*y(t)=0,y(t))
La fonction odesolve permet de rsoudre par des mthodes numriques une
quation diffrentielle y

= f (x, y) passant par un point (x


0
, y
0
). Par exemple
odesolve(sin(x*y),[x,y],[0,1],2)
16
permet de calculer y(2) o y(x) est la solution de y

(x) = sin(xy), telle que y(0) = 1. La


fonction plotode reprsente graphiquement la solution dune quation diffrentielle,
plotfield reprsente le champ des tangentes. La fonction interactive_odeplot
reprsente le champ des tangentes et permet de cliquer sur le graphique pour tracer les
solutions passant par les points cliqus.
plotfield(sin(x*y),[x,y])
plotode(sin(x*y),[x,y],[0,1])
erase()
interactive_plotode(sin(x*y),[x,y])
Equations diffrentielles
desolve rsolution exacte
odesolve rsolution approche
plotode trac de trajectoire
plotfield trac dun champ de vecteurs
interactive_plotode interface cliquable
4 Outils pour lAlgbre
4.1 Arithmtique des entiers
Les oprations sur les entiers gurent dans le menu Math->Integer. Les calculs
modulo p se font en utilisant % p. Une fois dni un entier modulo p, disons a:=3%5,
tous les calculs seront efffectus dans Z/pZ : a*2 renvoie 1%5 (6 modulo 5), 1/a
renvoie 2%5, . . . Pour calculer efcacement les puissances modulo p, on peut utiliser
ce qui prcde, ou la fonction powermod ou powmod.
a:=3%5
a+12
a^4
powermod(3,4,5)
17
Nombres entiers
a%p a modulo p
powmod(a,n,p) a
n
modulo p
irem reste de la division euclidienne
iquo quotient de la division euclidienne
iquorem quotient et reste
ifactor dcomposition en facteurs premiers
ifactors liste des facteurs premiers
idivis liste des diviseurs
gcd plus grand diviseur commun
lcm plus petit multiple commun
iegcd identit de Bezout
iabcuv renvoie [u, v] tels que au+bv = c
is_prime lentier est-il premier
nextprime prochain entier premier
previousprime entier premier prcdent
4.2 Polynmes et fractions rationnelles
Les fonctions de traitement des polynmes gurent dans le menu Alg->Polynomes.
On utilise normal ou expand pour dvelopper, ou plus gnralement mettre une
fraction sous forme irrductible, et factor pour factoriser. Le rsultat dpend du
corps de nombres dans lequel on se place. Par dfaut il sagit des rationnels si les
coefcients sont exacts ou des rels sinon. Pour les complexes (exacts ou approches),
il faut activer loption Complex partir du bouton rouge cas. On peut aussi dclarer
les coefcients comme des entiers modulo p pour travailler dans Z/pZ (commande %)
ou dans un corps ni (dni par la commande GF). Excutez les commandes suivantes
avant et aprs avoir activ loption Complex.
P:=x^4-1
factor(P)
gcd(P,x^3-1)
divis(P)
propfrac(x^4/P)
partfrac(4/P)
Q:=(x^4+1)%3
factor(Q)
G:=GF(2,8,[a,G])
factor(G(a^3)*x^2+1)
genpoly(5,3,x)
genpoly(2,3,x)
genpoly(2*y+5,3,x)
18
Polynmes
normal forme normale (dveloppe et rduite)
expand forme dveloppe
ptayl forme de Taylor
peval ou horner valuation en un point par lalgorithme de Horner
genpoly polynme dni par sa valeur en un point
canonical_form trinme sous forme canonique
coeff (liste des) coefcient(s)
poly2symb de lexpression algbrique la forme symbolique
symb2poly de la forme symbolique lexpression algbrique
pcoeff polynme dcrit par ses racines
degree degr
lcoeff coefcient du terme de plus haut degr
valuation degr du monme de plus bas degr
tcoeff coefcient du terme de plus bas degr
factor dcomposition en facteurs premiers
factors liste des facteurs premiers
divis liste des diviseurs
collect factorisation sur les entiers
froot racines avec leurs multiplicits
proot valeurs approches des racines
sturmab nombre de racines dans un intervalle
getNum numrateur dune fraction rationnelle
getDenom dnominateur dune fraction rationnelle
propfrac isole partie entire et fraction propre
partfrac dcomposition en lments simples
quo quotient de la division euclidienne
rem reste de la division euclidienne
gcd plus grand diviseur commun
lcm plus petit multiple commun
egcd identit de Bezout
divpc division suivant les puissances croissantes
randpoly polynme alatoire
cyclotomic polynmes cyclotomiques
lagrange polynmes de Lagrange
hermite polynmes de Hermite
laguerre polynmes de Laguerre
tchebyshev1 polynmes de Tchebyshev
tchebyshev2 polynmes de Tchebyshev
4.3 Trigonomtrie
Le menu Math->Transcendental contient les fonctions circulaires et hyper-
boliques ainsi que leurs inverses. Pour linariser et dvelopper on utilise tlin et
texpand. Beaucoup dautres rcritures sont accessibles partir des menus
19
Math->Recriture_trig : transformation des tangentes en sinus et cosi-
nus (tan2sincos), transformations en tan(x/2) (halftan),. . .
Math->Recriture_trig_exp : transformation des fonctions trigonom-
triques en exponentielles par les formules dEuler (trig2exp), des exponen-
tielles en fonctions trigonomtriques (exp2trig), des exponentielles en puis-
sances (exp2pow)...,
Math->Recriture_trig_inv : transformation des fonctions inverses
exp2pow(exp(3*ln(x)))
exp2trig(exp(i*x))
trig2exp(cos(x))
E:=sin(x)^4+sin(x)^3
El:=tlin(E)
texpand(El)
tsimplify(E)
tsimplify(El)
tsimplify(E-El)
halftan(E)
trig2exp(El)
Et:=trigtan(E)
tan2sincos(Et)
tan2sincos2(Et)
tan2cossin2(Et)
Trigonomtrie
tlin linariser
tcollect linariser et regrouper
texpand forme polynomiale
trig2exp trigonomtrique vers exponentielle
exp2trig exponentielle vers trigonomtrique
hyp2exp hyperbolique vers exponentielle
4.4 Vecteurs et matrices
Un vecteur est une liste de nombres, une matrice est la liste de ses vecteurs lignes.
Le produit matriciel est not comme le produit ordinaire *. Les vecteurs sont a priori
des vecteurs lignes, mais le produit droite par un vecteur ligne est effectu comme si
ctait une colonne. En particulier, si v et w sont deux vecteurs de mme taille, v*w
retourne leur produit scalaire.
A:=[[1,2,3],[4,5,6],[7,8,9]]
v:=[1,1,1]
v*v
A*v
v*A
20
B:=[[1,1,1],[2,2,2]]
A*B
B*A
A*tran(B)
A partir dune fonction qui deux indices ( j, k) associe un rel a( j, k), on peut consti-
tuer une matrice avec makemat ou matrix. Pour makemat les indices commencent
0, pour matrix il commencent 1.
makemat((j,k)->j+2*k,3,2)
matrix(3,2,(j,k)->j+2*k)
On peut aussi crer des matrices par blocs avec la commande blockmatrix.
A:=makemat((j,k)->j+2*k,3,2)
B:=idn(3)
blockmatrix(1,2,[A,B])
blockmatrix(2,2,[A,B,B,A])
On accde un lment dune matrice grce deux indices spars par une virgule et
mis entre crochets. Le premier indice est lindice de la ligne et le deuxime celui de la
colonne. Les indices commencent 0. Par exemple, si A:=[[0,2],[1,3],[2,4]]
alors A[2,1] renvoie 4. Pour extraire un bloc de la matrice, on utilise des intervalles
comme indices : A[1..2,0..1] renvoie le bloc constitu des lignes 1 2 et des
colonnes 0 1.
Notez que les matrices de Xcas sont recopies entirement chaque modication
dun coefcient. Ceci est pnalisant si on modie successivement dans un programme
beaucoup de coefcients dune mme (grande) matrice.
Vecteurs et matrices
v*w produit scalaire
cross(v,w) produit vectoriel
A*B produit matriciel
A.*B produit terme terme
1/A inverse
tran transpose
rank rang
det dterminant
ker base du noyau
image base de limage
idn matrice identit
ranm matrice coefcients alatoires
4.5 Systmes linaires
La fonction linsolve rsout une liste dquations linaires, avec la mme syn-
taxe que solve. On peut aussi utiliser simult pour rsoudre plusieurs systmes dqua-
tions linaires qui ne diffrent que par leur second membre, en mettant comme premier
21
argument la matrice du systme et comme second argument la matrice dont la (ou
les) colonnes sont le (ou les) second membre(s) des systmes, ou bien rref dargu-
ment une matrice obtenue en bordant la matrice du systme avec lesecond membre
(border(A,tran(b)) si b est une matrice colonne). Quand le systme est impos-
sible, linsolve retourne la liste vide, simult retourne un message derreur, rref
retourne une matrice dont une des lignes est nulle, sauf le dernier coefcient. Quand
le systme est indtermin, linsolve retourne la solution fonction de certaines va-
riables, simult retourne seulement une solution, rref retourne une matrice dont une
ou plusieurs lignes sont nulles. Lexemple ci-dessous concerne le systme
_
_
_
x + y + az = 1
x + ay + z = 1
ax + y + z = 2
Il a une solution unique pour a = 1 et a = 2, il est impossible pour a = 1 et il est
indtermin pour a = 2.
linsolve([x+y+a*z=1,x+a*y+z=1,x+a*y+z=-2],[x,y,z])
a:=1
linsolve([x+y+a*z=1,x+a*y+z=1,x+a*y+z=-2],[x,y,z])
a:=-2
linsolve([x+y+a*z=1,x+a*y+z=1,x+a*y+z=-2],[x,y,z])
purge(a)
A:=[[1,1,a],[1,a,1],[a,1,1]]
solve(det(A),a)
A1:=subst(A,a=1)
rank(A1)
image(A1)
ker(A1)
A2:=subst(A,a=-2)
rank(A2)
image(A2)
ker(A2)
b:= [1,1,-2]
B:=tran(b)
simult(A,B)
simult(A1,B)
simult(A2,B)
M:=blockmatrix(1,2,[A,B])
rref(M)
rref(border(A,b))
rref(border(A1,b))
rref(border(A2,b))
22
Systmes linaires
linsolve rsolution dun systme
simult rsolution simultane de plusieurs systmes
rref rduction de Gauss-Jordan
rank rang
det dterminant du systme
4.6 Rduction des matrices
La fonction jordan prend en entre une matrice A et retourne en sortie une ma-
trice de passage P et une forme rduite de Jordan J telles que P
1
AP = J. Soit A est
diagonalisable auquel cas J est diagonale et contient les valeurs propres de A sur la
diagonale, soit A nest pas diagonalisable et J comporte des "1" ou des "0" au-dessus
de la diagonale. Pour les matrices exactes et symboliques, seules les valeurs propres
calculables par solve sont accessibles. Pour des matrices de nombres approchs, un
algorithme numrique est utilis, et il risque dchouer en cas de valeurs propres mul-
tiples ou trs proches. La matrice A de lexemple qui suit a pour valeurs propres doubles
1 et 2. Elle est diagonalisable pour a = 0, non diagonalisable pour a = 0.
A:=[[1,1,-1,0],[0,1,0,a],[0,-1,2,0],[1,0,1,2]
factor(poly2symb(simplify(pcar(A))))
jordan(A)
eigenvals(A)
eigenvects(A)
jordan(subs(A,a=0))
eigenvects(subs(A,a=1))
jordan(evalf(subs(A,a=0)))
jordan(evalf(subs(A,a=1)))
Certaines fonctions, dnies par des sries entires, stendent aux matrices ds lors
que lon sait calculer leur forme de Jordan. La plus utile est lexponentielle.
A:=[[0,1,0],[0,0,1],[-2,1,2]]
jordan(A)
exp(A)
ln(A)
sin(A)
Rduction des matrices
jordan diagonalisation ou rduction de Jordan
pcar coefcients du polynme caractristique
pmin coefcients du polynme minimal
eigenvals valeurs propres
eigenvects vecteurs propres
23
5 Reprsentations graphiques
Pour obtenir une reprsentation graphique dans Xcas, il faut saisir une commande
dont la sortie est un objet graphique. Pour vous aider effectuer les reprsentations gra-
phiques les plus courantes, le menu Graphic vous propose des boites de dialogue qui
se chargent de crer une ligne de commande et de le valider pour afcher le graphique
souhait.
Si vous souhaitez reprsenter plusieurs objets graphiques dans une mme reprsen-
tation, vous devez sparer les commandes les crant par un ;. Vous pouvez aussi crer
une gure (menu Geo, Nouvelle figure) et utiliser le menu Geo pour crer des
objets gomtriques.
Chaque commande graphique cre un objet graphique 2-d ou 3-d, qui est traduit en
rponse par une image dans la fentre Xcas. A droite de cette image, des boutons de
zoom in et out permettent dagrandir ou de rapetisser la reprsentation, des ches
permettent de la dplacer.
Les paramtres par dfaut (en particulier les intervalles de reprsentation en abs-
cisse et ordonne) peuvent tre changs dans la fentre de conguration graphique
accessible depuis le menu Cfg, item Configuration graphique.
Notez enn que les objets graphiques 2-d sont aussi afchs dans une fentre
appele DispG (Display Graphics) que vous pouvez faire apparatre par le menu
Cfg->Montrer->DispG ou avec la commande DispG. La diffrence est que les
graphiques successifs sont tracs individuellement dans chaque fentre de rponse,
alors quils sont superposs dans la fentre DispG. Vous pouvez effacer la fentre
DispG par la commande ClrGraph.
5.1 Tracs de courbes
Pour crer rapidement des tracs de courbes simples, il est conseill dutiliser le
menu Graphic.
Linstruction de trac dune courbe reprsentative de fonction est plot avec en
paramtres une expression ou une liste dexpressions dont on veut la reprsentation
graphique, puis la variable (ventuellement on indique lintervalle de valeurs de la
variable). Pour distinguer plusieurs courbes, on peut utiliser un troisime argument
par exemple color= suivi de la liste des couleurs utiliser. Les couleurs peuvent tre
codes par leur nom franais, leur nom anglais ou leur numro. La fonction couleur
change la couleur de base pour toutes les fonctions graphiques qui suivent. La fonction
tangent permet dobtenir la tangente une courbe en un point.
E:=(2*x+1)/(x^2+1)
plot(E)
plot(E,x=-2..2,color=red)
couleur(vert);plot(E,color=rouge);tangent(plot(E),0)
DispG()
plot([sin(x),x,x-x^3/6],x=-2..2,color=[rouge,bleu,vert])
erase
li:=[(x+k*0.5)^2$(k=-5..5)]:;
24
plot(li,x=-8..8,color=[k$(k=0..10)])
La fonction plotparam permet deffectuer le trac de (x(t), y(t)). Il faut dnir
les deux coordonnes comme une seule expression complexe dont x(t) est la partie
relle et y(t) la partie imaginaire. La fonction plotpolar trace les courbes en coor-
donnes polaires. La commande plotimplicit(f(x,y),x,y) trace lensemble
des solutions de f (x, y) = 0.
plotparam(sin(t)^3+i*cos(t)^3,t,0,2*pi)
plotparam(t^2+i*t^3,t,-1,1)
plotpolar(1/(1-2sin(t/2)),t,0,4*pi)
plotpolar(tan(t)+tan(t/2),t,0,2*pi)
plotimplicit(x^2+4*y^2-4,x,y)
Tracs de courbes
plot graphe dune expression
color paramtre de plot pour la couleur
couleur choisir la couleur dun trac
tangent tangente une courbe
plotparam courbe paramtrique
plotpolar courbe en polaires
plotimplicit courbe implicite
5.2 Objets graphiques 2D
Xcas tant aussi un logiciel de gomtrie plane, de nombreuses gures peuvent
tre traces (dans un cran que lon obtient avec Alt+g) par des commandes du menu
Geo, par exemple des polygones, des coniques. . . Les arguments de ces commandes
sont souvent des points (commande point) qui peuvent en gnral tre saisis direc-
tement par leur afxe complexe. Par exemple cercle(2+3*i,2) trace le cercle
centr au point (2, 3), de rayon 2. La commande legende permet de placer un texte
un endroit, lui aussi spci par un nombre complexe. Les fonctions polygonplot
et scatterplot prennent en entre une liste dabscisses et une liste dordonnes.
lx:=[k$(k=1..10)]
ly:=apply(sin,lx)
polygonplot(lx,ly)
erase
scatterplot(lx,ly)
polygone_ouvert(lx+i*ly)
25
Objets graphiques 2D
legend met du texte partir dun point donn
point point donn par son afxe ou 2 coordonnes
segment segment donne par 2 points
droite droite donne par son quation ou 2 points
cercle cercle donne par centre et rayon
inter intersection de courbes
equation quation cartsienne
parameq quation paramtrique
polygonplot ligne polygonale
scatterplot nuage de points
polygone polygone ferm
polygone_ouvert polygone ouvert
5.3 Objets graphiques 3D
Pour tracer une surface dnie par lquation z = f (x, y), on utilise la commande
plotfunc, avec en arguments lquation de la surface et la liste des deux va-
riables. On peut aussi indiquer la plage de variable, et la discrtisation.
plotfunc(x^2-y^2,[x,y])
plotfunc(x+y^2,[x=-5..5,y=-2..2],xstep=0.5,ystep=0.1,
affichage=vert+rempli)
On obtient une surface en dimension 3. Pour modier le point de vue, utilisez
la souris en-dehors du cube de visualisation ou cliquez dans la gure 3-d, puis
utilisez les touches x,X,y,Y,z,Z (rotations par rapport aux axes), + et - pour les
zooms, les ches de direction et page up/down pour changer la fentre de visua-
lisation (la fentre de calcul par dfaut est dnie par la conguration graphique
si on ne la pas indique en paramtre plotfunc)
On peut aussi tracer une surface paramtre avec plotparam dont le premier
argument est une liste de taille 3 contenant les coordonnes du point et les 2
arguments suivants les paramtres :
plotparam([u,v,u+v],u=-1..1,v=-2..2)
Pour tracer des courbes paramtres dans lespace, on utilise aussi la commande
plotparam mais avec un seul paramtre :
plotparam([u,u^2,u^3],u=-1..1)
On peut aussi tracer des objets gomtriques 3D dans une gure 3-d que lon ob-
tient avec Alt+h, puis en utilisant des commandes du menu Geo, par exemple :
point, droite ,plan, polygone, sphere. . .
plan(z=x+y);
droite(x=y,z=y);
A:=point(1,2,3); B:=point(2,-1,1); C:=point(1,0,0);
plan(A,B,C,couleur=cyan);
droite(A,B,affichage=line_width_3)
26
Objets graphiques 3D
plotfunc surface par quation
plotparam surface ou courbe paramtrique
point point donn par 3 coordonnes
droite droite donne par 2 quations ou 2 points
plan plan donn par 1 quation ou 3 points
sphere sphre donne par centre et rayon
cone cone donn par centre, axe, angle douverture
inter intersection
polygone polygone
polygone_ouvert polygone ouvert
6 Programmation
6.1 Le langage
Xcas permet dcrire des programmes, comme nimporte quel langage de pro-
grammation. Voici ses principales caractristiques.
Cest un langage fonctionnel. Largument dune fonction peut tre une autre
fonction. Si cest le cas, on peut soit donner le nom de la fonction argument
dans la commande, soit sa dnition : par exemple function_diff(f) ou
bien function_diff(x->x^2).
Il ny a pas de distinction entre programme et fonction : une fonction renvoie la
valeur de la dernire instruction value ou ce qui suit le mot rserv return.
Comme pour tous les environnements de calcul, programmer consiste tendre
Xcas en lui rajoutant les fonctions souhaites. Structurer la programmation
consiste hirarchiser les diffrentes fonctions qui sappellent entre elles.
Le langage est non typ. On distingue seulement les variables globales, qui ne
sont pas dclares, et les variables locales, dclares en dbut de fonction.
Dans un programme, lorsquon appelle une variable munie dun indice qui nest pas
affecte une liste, squence ou matrice, cest une table qui est cre, et non une liste.
Une table est un conteneur dobjets analogue aux listes et aux squences. La diffrence
est quelle peut tre indice par autre chose quun entier, par exemple une chane de
caractres. . .
Si a est une variable formelle, la commande a[1]:=2 cre une table a. Pour que a
soit une liste, il faut dabord affecter a avec une liste de taille sufsante, par exemple
a:=[0$10] (si on connat la taille de la liste) ou a:=[]; a:=append(a,3).
Mme si le langage est non typ, il est donc recommand dinitialiser les variables
avant de les utiliser.
La syntaxe de dclaration dune fonction est la suivante.
nom_fonction(var1,var2,...):=
{
local var_loc1, var_loc2,... ;
27
instruction1;
instruction2;
...
}
La syntaxe des tests et des boucles est celle du langage C++. Pour les tests :
if (condition) {clause_vraie} else {clause_fausse}
(le else est facultatif). La condition est un boolen, rsultat dune expression logique,
utilisant les oprateurs habituels.
Oprateurs logiques
== = != non
< < > >
<= >=
&& et || ou
Par exemple :
testif(a,b):={
if ( (a==10) || (a<b) )
b:=b-a;
else
a:=a-b;
return [a,b];
}:;
La syntaxe de for est la suivante.
for(initialisation;test;incrementation){ corps_de_boucle }
Par exemple :
testfor(a,b):={
local j,(s:=0);
for (j:=a;j<=b;j++)
s:=s+1/j^2;
return s;
}:;
Attention, i dsigne

1 et ne peut pas tre utilis comme variable de boucle. Lins-
truction break; permet de sortir dune boucle et continue; de passer immdiate-
ment litration suivante. De nombreuses variantes sont reconnues en particulier en
mode de compatibilit avec Maple, Mupad et les TI89/Voyage 200. On peut capturer
des erreurs dexcution par
try {bloc_erreurs_capturees}
catch (variable)
{bloc_execute_si_erreur}
28
Par exemple :
try{A:=idn(2)*idn(3)}
catch(erreur)
{print("lerreur est "+erreur)}
6.2 Quelques exemples
Pour crire un programme, il est conseill douvrir un diteur de programme avec
le menu Add->Programme. Le menu Prog de lditeur permet dentrer facilement
les structures de programmation. On peut ensuite sauvegarder le texte du programme
indpendamment de la session de travail pour lutiliser ensuite dans une autre session
de travail.
Voici un programme qui donne le quotient et le reste de la division euclidienne de
2 entiers en utilisant les fonctions iquo qui renvoie le quotient et irem qui renvoie le
reste (cest la fonction iquorem de Xcas).
idiv2(a,b):={
local q,r;
if (b!=0) {
q:=iquo(a,b);
r:=irem(a,b);
}
else {
q:=0;
r:=a;
}
return [q,r];
}:;
Saisissez cette fonction dans un diteur de programme, testez-la (bouton OK) puis sau-
vegardez par exemple sous le nom idiv2.cxx. Vous pouvez utiliser cette fonction
dans une ligne de commande, en tapant par exemple idiv2(25,15). Vous pour-
rez utiliser cette fonction dans une autre session Xcas, en utilisant la commande
read("idiv2.cxx") ou en louvrant depuis un diteur de programme (et en le
validant par OK).
Voici maintenant deux versions du calcul du PGCD de deux entiers, une version
itrative, puis une version rcursive.
pgcd_iteratif(a,b):={
local r;
while (b!=0) {
r:=irem(a,b);
a:=b;
b:=r;
}
return a;
}:;
29
pgcd_recursif(a,b):={
if (b==0) return a;
return pgcd_recursif(b,irem(a,b));
}:;
Il arrive parfois quun programme ne fonctionne pas du premier coup comme prvu
( !) Il est alors possible de lexcuter en mode pas--pas pour le mettre au point, avec la
commande debug. Pour plus de dtails consulter le menu Aide->Interface. Par
exemple, pour le programme idiv2, on lance la mise au point en tapant debug(idiv2(25,15)).
Le dbuggueur afche automatiquement la valeur des paramtres a,b puis des va-
riables locales q,r lors de lexcution instruction par instruction avec le bouton sst.
6.3 Style de programmation
Xcas est interprt et non compil. Plus que le nombre de lignes du programme,
cest le nombre dinstructions rellement excutes qui inuence le temps de calcul. En
rgle gnrale, il est plus rapide de crer des listes ou des squences que de program-
mer des boucles. Voici quelques manires de calculer 5000! : comparez leurs temps
dexcution.
5000!
product([n$(n=1..5000)])
product(cumSum([1$5000]))
f:=1; (f:=f*n)$(n=2..5000):;f
f:=1; for(n:=1;n<=5000;n++) {f:=f*n}
f:=1;n:=1; while(n<5000) {n:=n+1; f:=f*n}
f:=1; (f:=f*n)$(n=2..5000)
La rapidit dexcution est parfois contradictoire avec la clart du programme, et on
doit accepter des compromis. Dans une utilisation courante, le temps de calcul nest pas
rellement un enjeu : on utilise en gnral les langages interprts comme Xcas pour
tester des algorithmes et raliser des maquettes. Les applications en vraie grandeur sont
codes dans des langages compils comme C++ (en utilisant par exemple la librarie
giac pour les fonctions de calcul formel).
30
7 Des exercices corrigs avec Xcas
7.1 Fonction et reprsentation graphique (niveau terminale S)
7.1.1 Exercice 1
On considre la fonction f de R-{3} dans R dnie par :
f (x) = (x +1)ln|x 3|
1. Calculer la derive premire f

et seconde f

de f .
En dduire les variations de f

.
2. Calculer les limites de f

en et en 3 gauche.
3. Montrer que f

sannule une seule fois en sur ] ; 3[. Donner un encadrement


de damplitude 0.1.
4. tudier le signe de f

(x) sur R-{3} et en dduire les variations de f .


5. Tracer la courbe C de f dans un repre orthonorm (unit 1cm).
6. Calculer laire en cm
2
de la rgion comprise entre C, laxe des abscisses et les
droites dquations x = 1 et x = 2.
Rponses
1. On tape pour dnir la fonction f :
f(x):=(x+1)*ln(abs(x-3))
On tape pour dnir la fonction f

:
f1:=function_diff(f):;
puis,
f1(x)
On obtient :
ln(abs(x-3))+(x+1)/(x-3)
Donc f

(x) = ln(|x 3|) +


x +1
x 3
.
On tape pour dnir la fonction f

:
f2:=function_diff(f1):;
puis,
f2(x)
On obtient :
1/(x-3)+1/(x-3)+(x+1)*(-(1/((x-3)^2)))
puis pour simplier lcriture, on tape :
normal(f2(x))
On obtient :
31
(x-7)/(x^2-6*x+9)
ou bien pour factoriser, on tape :
factor(f2(x))
On obtient :
(x-7)/((x-3)^2)
Donc f

(x) =
x 7
(x 3)
2
Autre faon
On tape pour dnir la fonction f :
f(x):=(x+1)*ln(abs(x-3))
On tape pour calculer f

(x) :
dfx:=diff(f(x)
On obtient :
ln(abs(x-3))+(x+1)/(x-3)
Donc f

(x) = ln(|x 3|) +


x +1
x 3
.
Et on tape pour dnir la fonction f

partir de dfx :
f1:=unapply(dfx,x);
On tape pour calculer f

(x) :
ddfx:=diff(dfx)
On obtient :
1/(x-3)+1/(x-3)+(x+1)*(-(1/((x-3)^2)))
ou pour avoir une criture factorise, on tape directement :
ddfx:=factor(diff(dfx))
On obtient :
(x-7)/((x-3)^2)
Donc f

(x) =
x 7
(x 3)
2
Et on tape pour dnir la fonction f

partir de ddfx :
f2:=unapply(ddfx,x);
Cette faon de faire lavantage de dnir la fonction f 2 = f

partir dune
expression simplie ou factorise.
Attention! ! ! On ne peut pas crire par exemple :
g(x) :=normal(diff(f(x))) pour dnir la fonction g = f

mais on doit
crire g :=unapply(normal(diff(f(x))),x) car sinon il y a confu-
sion entre x variable de drivation et x variable de la fonction g.
32
2. On tape pour avoir la limite de f

en :
limit(f1(x),x,-infinity)
On obtient :
+infinity
On tape pour avoir la limite de f

en 3

:
limit(f1(x),x,3,-1)
On obtient :
-infinity
3. f

est continue et dcroissante de + sur ] ; 3[ puisque f

(x) < 0 sur


] ; 3[. Il existe donc unique dans ] ; 3[ tel que f

() = 0.
On tape pour avoir une valeur approche de :
assume(x<3);fsolve(f1(x),x)
On obtient :
x,0.776592890991
Puis, on tape pour enlever lhypothse sur x :
purge(x)
On tape :
f1(0.7)
On obtient :
0.0937786881525
On tape :
f1(0.8)
On obtient :
-0.0297244578175
On a f 1(0.7) > 0 et f 1(0.8) < 0 donc 0.7 < < 0; 8.
4. Puisque f

(7) = 0, on tape pour avoir le minimum de f

sur ]3; +[ :
f1(7)
On obtient :
ln(4)+2
Le minimum de f

sur ]3; +[ est donc positif.


Donc f

(x) > 0 si x ] ; [ ]3; +[ et f

(x) < 0 si x ]; 3[.


Donc f est croissante sur ] ; [ ]3; +[ et est dcroissante sur ]; 3[.
5. On cherche les limites de f en , +, et en 3.
On tape :
33
limit(f(x),x,-infinity)
On obtient :
-infinity
On tape :
limit(f(x),x,+infinity)
On obtient :
+infinity
On tape :
limit(f(x),x,3)
On obtient :
-infinity
On trace les graphes de f et des deux droites x = 1 et x = 2, on tape :
plofunc(f(x),x);droite(x=1);droite(x=2)
On obtient le trac du graphe de f et le trac des droites x = 1 et x = 2.
6. On tape pour trouver laire en cm
2
:
integrate(f(x),x,-1,2)
On obtient :
8*ln(4)-12+15/4
On tape :
normal(8*ln(4)-12+15/4))
On obtient :
8*ln(4)-33/4
On tape si on veut faire lintgration par parties :
ibpu((x+1)*ln(abs(x-3)),ln(abs(x-3)))
On obtient :
[((x^2)/2+x)*ln(abs(x-3)),(-x^2-2*x)/(2*x-6)]
On tape pour terminer lintgration :
A:=ibpu([((x^2)/2+x)*ln(abs(x-3)),(-x^2-2*x)/(2*x-6)],0)
On obtient :
(-x^2-10*x)/4-15*1/2*ln(abs(x-3))+((x^2)/2+x)*ln(abs(x-3))
On tape :
34
preval(A,-1,2)
On obtient :
8*ln(4)-9/4-6)
On tape :
normal(8*ln(4)-9/4-6))
On obtient :
8*ln(4)-33/4
Donc laire cherche vaut (8ln(4) 33/4)cm
2
;
7.1.2 Exercice 2
On considre la fonction f de R dans R dnie par :
f (x) =
exp(x)
2
exp(x) +1
exp(x)
3
+exp(x)
1. Montrer que pour tout x R, P(x) = x
4
2x
3
+2x
2
+1 1
2. tudier les variations de f et tracer son graphe.
3. Trouver lquation de la tangente au graphe au point dabscisse x = 0
4. Calculer
_
x
0
f (t)dt puis, lim
x>+
_
x
0
f (t)dt
Rponses
1. On tape :
factor(x^4-2x^3+2x^2)
On obtient :
(x^2+-2*x+2)*x^2
On tape :
canonical_form(x^2-2*x+2)
On obtient :
(x-1)^2+1
Donc pour tout x R, x
4
2x
3
+2x
2
= x
2
(x 1)
2
+x
2
0
donc pour tout x R, P(x) = x
4
2x
3
+2x
2
+1 1
2. On tape pour calculer la valeur de la drive de f en un point :
normal(derive((exp(x)^2-exp(x)+1)/(exp(x)^3+exp(x)),x))
On obtient :
(-(exp(x))^4+2*(exp(x))^3-2*(exp(x))^2-1)/
((exp(x))^5+2*(exp(x))^3+exp(x))
35
Le numrateur est ngatif car il est gal P(exp(x)) et le dnominateur est
strictement positif car il est gal une somme de termes strictement positifs. La
fonction f est donc dcroissante.
Pour chercher la limite de f en +, on tape :
limit((exp(x)^2-exp(x)+1)/(exp(x)^3+exp(x)),x=+infinity)
On obtient :
0
Pour chercher la limite de f en , on tape :
limit((exp(x)^2-exp(x)+1)/(exp(x)^3+exp(x)),x=-infinity)
On obtient :
infinity
Pour tracer le graphe de f , on tape :
plotfunc(((exp(x))^2-exp(x)+1)/((exp(x))^3+exp(x)),x)
On obtient le graphe de f .
3. On dnit la fonction f , on tape :
f(x):=(exp(x)^2-exp(x)+1)/(exp(x)^3+exp(x))
On calcule f (0), on tape :
f(0)
On obtient
1
2
On dnit la fonction d f comme tant la drive de f , on tape :
df:=unapply(normal(diff(f(x),x)),x)
On calcule d f (0), on tape :
df(0)
On obtient :

1
2
Lquation de la tangente au point dabscisse 0 est donc :
y = d f (0) x + f (0) cest dire y =
1
2
x +
1
2
.
ou encore on tape :
equation(tangent(plotfunc(f(x)),0),[x,y])
On obtient :
36
y=(1/-2*x+1/2)y=(1/-2*x+1/2)
4. On calcule lintgrale :
_
x
0
f (t)dt
On tape :
int(f(t),t,0,x)
On obtient :
(ln((exp(x))^2+1)*exp(x)+(-(2*x))*exp(x)+2*exp(x)-2)*
1/2/exp(x)-1/2*ln(2)
Puis on calcule : lim
x>+
_
x
0
f (t)dt, on tape :
limit((ln((exp(x))^2+1)*exp(x)+(-(2*x))*exp(x)+2*exp(x)-2)
*1/2/exp(x)-1/2*ln(2),x=+infinity)
On obtient :
-1/2*ln(2)+1
7.2 Calcul de primitives (niveau dbut universit)
1. Calculer
_
2
1
1
x
3
+1
dx
Rponse :
On tape :
int(1/(x^3+1),x,1,2)
On obtient apres simplication (en utilisant normal}
(sqrt(3)*ln(2)+pi)*1/3/sqrt(3)
Pour vrier, on tape :
partfrac(1/(1+t^3))
On obtient :
1/((t+1)*3)+(-1/3*t+2/3)/(t^2-t+1)
Puis on intgre chaque terme sparment...
2. Dcomposer, sur R, en lments simples :
t
2
1t
4
.
Calculer
_
t
2
1t
4
dt et
_
sin(x)
2
cos(2x)
dx
Rponse :
On tape :
partfrac(t^2/(1-t^4))
37
On obtient :
-1/2/(t^2+1)+1/(4*(t+1))-1/4/(t-1)
On tape :
int(-1/2/(t^2+1)+1/(4*(t+1))-1/4/(t-1),t)
ou on tape :
int(t^2/(1-t^4),t)
On obtient :
1/(-2*atan(t))+1/(4*ln(abs(t+1)))+1/(-4*ln(abs(t-1)))
On tape :
normal(int(sin(x)^2/cos(2*x),x))
On obtient :
-1/2*x-1/-4*ln(abs((tan(1/2*x))^2-2*tan(1/2*x)-1))-
1/4*ln(abs((tan(1/2*x))^2+2*tan(1/2*x)-1))
Ou on tape en linarisant avant dintgrer :
normal(int(tlin(sin(x)^2/cos(2*x))))
On obtient :
1/4*ln(abs(tan(x)+1))+1/-4*ln(abs(tan(x)-1))+1/-2*x
Ou encore on veut faire le changement de variable tan(x) = t et on tape pour
avoir lexpression en fonction de la tangente, avant dintgrer :
trigtan(texpand(sin(x)^2/cos(2x)))
On obtient :
(-((tan(x))^2))/((tan(x))^2-1)
On fait le changement de variable x =atan(t) on tape :
subst(integrate(-tan(x)^2/(tan(x)^2-1),x),x=atan(t))
ou on tape
subst(Int(-tan(x)^2/(tan(x)^2-1),x),x=atan(t))
On obtient
integrate((-(t^2))/((1+t^2)*(t^2-1)),t)
Soit, le remplacant t par tan(x) :
1/-2*atan(tan(x))+1/4*ln(abs(tan(x)+1))+1/-4*ln(abs(tan(x)-1))
38
3. Calculer
_
1
t
2
dt,
_
1
t(t
2
+1)
dt, et
_
t
2
t +1
t
4
+t
2
dt
Rponse :
On tape :
int(1/t^2,t)
On obtient :
1/(-t)
On tape :
int(1/(t*(t^2+1)),t)
On obtient :
1/-2*ln(t^2+1)+1/2*ln((abs(t))^2)
On tape :
int((t^2-t+1)/(t^2+t^4),t)
On obtient :
1/2*ln(t^2+1)-ln(abs(t))+(-t+1)/(-t)
7.3 Dvelopements limits
1. Donner un dveloppement limit lordre 7 au voisinage de x = 0 de :
sin(sinh(x)) sinh(sin(x))
Rponse :
On tape :
series(sin(sinh(x))-sinh(sin(x)),x=0,7)
On obtient :
1/-45*x^7+x^8*order_size(x)
2. Donner un dveloppement limit lordre 4 au voisinage de x = 0 de :
ln(cos(x))
exp(x +x
2
)
Rponse :
On tape :
series(ln(cos(x))/exp(x+x^2),x=0,4)
On obtient :
1/-2*x^2+1/2*x^3+1/6*x^4+x^5*order\_size(x)
La fonction order_size est telle que, pour tout > 0, x

order_size(x) tend vers


0 quand x tend vers 0
39
7.4 quations diffrentielles
1. Trouver les solutions de lquation diffrentielle :
x(x
2
1)y

+2y = 0
Rponse :
On tape :
desolve(x*(x^2-1)*y+2*y=0,y)
On obtient :
(c\_0*x^2)/(x^2-1)
2. Trouver les solutions de lquation diffrentielle :
x(x
2
1)y

+2y = x
2
Rponse :
On tape :
desolve(x*(x^2-1)*y+2*y=x^2,y)
On obtient :
((ln(abs(x))+c\_0)*x^2)/(x^2-1)
7.5 Les matrices
1. Soit M
a
=
_
_
2a1 a 2a1
a
2
+a2 a
2
1 a1
a
2
+a1 a
2
+a1 a
_
_
a) Pour quelles valeurs de a, M
a
est-elle inversible ?
Prciser son rang lorsquelle nest pas inversible.
b) Calculer linverse de M
2
Rponse :
On tape :
M:=[[2a-1,a,2a-1],[a^2+a-2,a^2-1,a-1],[a^2+a-1,a^2+a-1,a]]
On calcule le dterminant de M, on tape :
det(M)
On obtient :
2*a^4+-2*a^3+-2*a^2+2*a
Pour avoir linverse de M on tape :
inv(M)
40
On obtient :
1
2a
4
2a
3
2a
2
+2a
_
_
a1 2a
3
+3a+1 2a
3
+a
2
+a1
a
2
+1 2a
3
+a
2
+2a1 2a
3
a
2
2a+1
a
3
2a+1 a
3
+2a1 a
3
2a
2
+1
_
_
On tape :
solve(2a^4-2*a^3-2*a^2+2*a,a)
On obtient :
[-1,0,1]
Donc la matrice est inversible si a [1, 0, 1]
Ou on tape :
factor(2a^4-2*a^3-2*a^2+2*a)
On obtient :
2*(a+1)*a*(a-1)^2
On tape :
rank(subst(M,a,-1))
On obtient :
2
On tape :
rank(subst(M,a,0))
On obtient :
2
On tape :
rank(subst(M,a,1))
On obtient :
1
On tape :
inv(subst(M,a,2))
On obtient : A =
1
12
_
_
1 11 7
3 9 9
5 5 1
_
_
Remarque : pour viter de faire des substitutions on peut dnir la matrice M
comme une fonction de a, il faut alors crire :
M(a):={[[2a-1,a,2a-1],[a^2+a-2,a^2-1,a-1],[a^2+a-1,a^2+a-1,a]]}
41
surtout ne pas oublier { et }.
On peut alors taper : inv(M(2)).
2. Soit A =
_
_
1 1 a
1 a 1
a 1 1
_
_
Pour quelles valeurs de a, A est-elle diagonalisable ?
Rponse :
On tape :
A :=[[1,1,a],[1,a,1],[a,1,1]]
Pour avoir les valeurs propres de A on tape :
egvl(A)
On obtient :
_
_
a+1 0 0
0 a+2 0
0 0 a1
_
_
ce qui scrit :
[[-a+1,0,0],[0,a+2,0],[0,0,a-1]]
Si a = 1 il y a 3 valeurs propres distinctes a+1, a+2, a1 et
si a = 1 il y a une valeur propre double ( = 0) et une valeur propre simple
( = 3).
Puis on cherche la matrice de passage, on tape :
egv(A)
On obtient :
_
_
1 1 1
0 1 2
1 1 1
_
_
ce qui scrit :
[[1,1,1],[0,1,-2],[-1,1,1]]
les vecteurs propres sont les colonnes de cette matrice.
Ou on tape pour avoir directement les deux informations, matrice de passage et
rduite de Jordan :
jordan(A)
On obtient une liste de deux matrices [P, B] (P est la matrice de passage et B =
P
1
AP) :
_
_
_
_
1 1 1
0 1 2
1 1 1
_
_
_
_
a+1 0 0
0 a+2 0
0 0 a1
_
_
_
_
ce qui scrit :
42
[[[1,1,1],[0,1,-2],[-1,1,1]],[[-a+1,0,0],[0,a+2,0],[0,0,a-1]]]
On remarque quen faisant : a :=1 puis jordan(A)
les valeurs propres doubles sont regroupes et on obtient :
_
_
_
_
1 3 0
1 0 3
1 3 3
_
_
_
_
3 0 0
0 0 0
0 0 0
_
_
_
_
ce qui scrit :
[[[1,-3,0],[1,0,-3],[1,3,3]],[[3,0,0],[0,0,0],[0,0,0]]]
A est donc diagonalisable quelque soit a et B = P
1
AP.
43
8 Vrai ou Faux ? (dun point de vue informatique)
Exercice 8.1 Les commandes suivantes afchent la valeur exacte 2 : rpondre vrai ou
faux et pourquoi ?
1. 1+1:;
2. 3-1
3. 1.5+1/2
4. 4/2
5. sqrt(4)
6. evalf(sqrt(4))
7. 1^(1+1)+1^(1+1)
8. (1+1)^(1+1)
9. 1*1^(1+1)
10. 1+1*1^1
11. (1+1)*1^(1+1)
Exercice 8.2 Les commandes suivantes affectent la valeur exacte 2 la variable c :
rpondre vrai ou faux et pourquoi ?
1. c:=2:;
2. c:=2
3. c==2
4. c=2
5. c:=4/2
6. c:=3/1.5
7. c:=(2+2)/2
8. c:=(2.0+2)/2
9. c:=2a/a
10. c:=(2*a)/a
11. c:=2*a/a
12. c:=1:; c:=2*c
Exercice 8.3 Les commandes suivantes affectent la variable c une expression valide :
rpondre vrai ou faux et pourquoi ?
1. c:=ab
2. c:=a*b
3. c==a
4. c:= c==a
5. c:=a+(a*b))/2
44
6. c=a+a*b
7. c:=a/b
8. c->a/b
9. a/b=>c
10. c:=a/0
11. c:=2*a/a
12. c:=1: c:=2*c
Exercice 8.4 Les commandes suivantes affectent la valeur 1 b : rpondre vrai ou
faux et pourquoi ?
1. a:=1:; b=a
2. a:=1:; b:=a
3. a:=1:; b:=a:; a:=3:; b
4. a:=1:; b:="a"
5. b:=a/a
6. b:=a^0
Exercice 8.5 Les commandes suivantes retournent la valeur exacte 2 : vrai ou faux et
pourquoi ?
1. 1/2^-1
2. a:=2
3. 2*a/a
4. sqrt(4*a^2)/a
5. simplify(sqrt(4*a^2)/a)
6. sqrt(4*a^4)/(a*a)
7. simplify(sqrt(4*a^4)/(a*a))
8. expand(sqrt(4*a^4)/(a*a))
9. normal(sqrt(4*a^4)/(a*a))
10. ln(a^2)/ln(a)
11. simplify(ln(a^2)/ln(a))
12. texpand(ln(a^2)/ln(a))
13. normal(texpand(ln(a^2)/ln(a)))
14. -ln(exp(-2))
15. 1/exp(-ln(2))
16. exp2pow(1/exp(-ln(2)))
Exercice 8.6 Les commandes suivantes dnissent la fonction f qui x associe x
2
:
vrai ou faux et pourquoi ?
45
1. f(x):=x^2
2. f(a):=a^2
3. f := x^2
4. f(x):=a^2
5. f := a->a^2
6. f(x):=evalf(x^2)
7. f(x):=simplify(x^3/x)
8. f(x):=simplify(x*x*a/a)
9. E:=x^2:;f:=unapply(E,x)
10. f:=unapply(simplify(x^3/x),x)
Exercice 8.7 Les commandes suivantes dnissent la fonction f qui au couple (x, y)
associe le produit xy : vrai ou faux et pourquoi ?
1. f:=x*y
2. f:=x->x*y
3. f:=(a,b)->a*b
4. f(x,y):=x*y
5. f(x,y):=xy
6. f:=((x,y)->x)*((x,y)->y)
7. f:=(x->x)*(y->y)
8. f:=unapply(x*y,x,y)
9. E:=x*y:;f:=unapply(E,x,y)
Exercice 8.8 Les commandes suivantes dnissent la fonction f1 qui x associe 2x :
vrai ou faux et pourquoi ?
1. f(x):=x^2:; f1(x):=diff(f(x))
2. f1:=diff(x^2)
3. f1:=unapply(diff(x^2),x)
4. f(x):=x^2:; f1:=function_diff(f)
5. f(x):=x^2:; f1:=diff(f)
6. f(x):=x^2:; f1:=diff(f(x))
7. f(x):=x^2:; f1:=unapply(diff(f(x),x),x)
8. f(x):=x^2:; f1:=x->diff(f(x))
Exercice 8.9 Les commandes suivantes affectent A lexpression 2 x y : vrai ou
faux et pourquoi ?
1. A:=diff(x^2*y)
2. A:=x->diff(x^2*y)
46
3. A:=diff(x^2*y,x)
4. A:=diff(x^2*y,y)
5. A:=diff(x*y^2,y)
6. A:=normal(diff(x*y^2,y))
7. A:=normal(diff(x^2*y^2/2,x,y))
8. A:=normal(diff(diff(x^2*y^2/2,x),y))
Exercice 8.10 Les lignes de commande suivantes afchent un losange : vrai ou faux
et pourquoi ?
1. losange(1,i,pi/3)
2. losange((1,0),(0,1),pi/3)
3. losange(point(1,0),point(0,1),pi/3)
4. parallelogramme(0,1,1+i)
5. parallelogramme(0,1,1/2+i*sqrt(3)/2)
6. quadrilatere(0,1,3/2+i*sqrt(3)/2,1/2+i*sqrt(3)/2)
7. polygone(0,1,3/2+i*sqrt(3)/2,1/2+i*sqrt(3)/2)
8. polygonplot(0,1,3/2+i*sqrt(3)/2,1/2+i*sqrt(3)/2)
9. polygonplot([0,1,3/2,1/2],[0,0,sqrt(3)/2,sqrt(3)/2])
10. polygone_ouvert(0,1,3/2+i*sqrt(3)/2,1/2+i*sqrt(3)/2)
11. polygone_ouvert(0,1,3/2+i*sqrt(3)/2,1/2+i*sqrt(3)/2,0)
Exercice 8.11 Les lignes de commande suivantes afchent le cercle unit : vrai ou
faux et pourquoi ?
1. cercle(0,1)
2. arc(-1,1,2*pi)
3. arc(-1,1,pi), arc(-1,1,-pi)
4. plot(sqrt(1-x^2))
5. plot(sqrt(1-x^2)), plot(-sqrt(1-x^2))
6. plotimplicit(x^2+y^2-1,x,y)
7. plotparam(cos(t),sin(t))
8. plotparam(cos(t)+i*sin(t))
9. plotparam(cos(t)+i*sin(t),t)
10. plotparam(exp(i*t))
11. plotparam(cos(t)+i*sin(t),t,0,pi)
12. plotparam(cos(t)+i*sin(t),t,0,2*pi)
13. plotpolar(1,t)
14. plotpolar(1,t,-pi,pi)
47
15. plotpolar(1,t,0,2*pi)
Exercice 8.12 Les commandes suivantes retournent la liste [1, 2, 3, 4, 5] : vrai ou faux
et pourquoi ?
1. l:=[1,2,3,4,5]
2. l:=op([1,2,3,4,5])
3. l:=nop(1,2,3,4,5)
4. l:=seq(i,i=1..5)
5. l:=seq(j=1..5)
6. l:=seq(j,j=1..5)
7. l:=seq(j,j,1..5)
8. l:=seq(j,j,1,5)
9. l:=seq(j,j,1,5,1)
10. l:=[seq(j,j=1..5)]
11. l:=nop(seq(j,j=1..5))
12. l:=[k$k=1..5]
13. l:=[k$(k=1..5)]
14. l:=[k+1$(k=0..4)]
15. l:=[(k+1)$(k=0..4)]
16. l:=cumSum([1$5])
17. l:=sort(5,2,3,1,4)
18. l:=sort([5,2,3,1,4])
19. l:=makelist(k,1,5)
20. l:=makelist(x->x,1,5)
Exercice 8.13 Les commandes suivantes retournent la liste [1.0, 0.5, 0.25, 0.125, 0.0625] :
vrai ou faux et pourquoi ?
1. 0.5^[0,1,2,3,4]
2. 2^(-[0,1,2,3,4])
3. 2.0^(-[0,1,2,3,4])
4. 2^-evalf([0,1,2,3,4])
5. evalf(2^(-[0,1,2,3,4]))
6. seq(2^(-n),n=0..4)
7. evalf([seq(2^(-n),n=0..4)])
8. 1/evalf(2^n$(n=0..4))
9. evalf(2^n$(n=0..4))^(-1)
10. [evalf(2^n$(n=0..4))]^(-1)
48
11. evalf(nop(2^n$(n=0..4))^(-1))
12. a:=[]:; (a:=append(a,0.5^k))$(k=0..4):; a
13. makelist(k->2^(-k),0,4)
14. f:=x->2.0^(-x):; makelist(f,0,4)
Exercice 8.14 Soit l la liste [1, 0, 2, 0, 3]. Les lignes de commande suivantes retournent
lentier 10203 : vrai ou faux et pourquoi ?
1. l*10^[4,3,2,1,0]
2. l*10^[0,1,2,3,4]
3. revlist(l)*10^[0,1,2,3,4]
4. l*seq(10^n,n,4,0,-1)
5. expr(char(sum(l,48)))
6. l*nop(seq(10^n,n=(4..0)))
7. l*10^nop(j$(j=4..0))
8. l*10^(j$(j=4..0))
9. l*10^(j$(j=4..0))
10. l*nop(10^j)$(j=4..0))
Exercice 8.15 Soit n lentier 10203. Les lignes de commande suivantes retournent la
liste dentiers [1, 0, 2, 0, 3] : vrai ou faux et pourquoi ?
1. (floor(n/10^k)-floor(n/10^(k+1))*10)$(k=4..0)
2. [(floor(n/10^k)-floor(n/10^(k+1))*10)$(k=4..0)]
3. seq(iquo(n,10^k)-10*iquo(n,10^(k+1)),k=4..0)
4. nop(seq(iquo(n,10^k)-10*iquo(n,10^(k+1)),k=4..0))
5. revlist(convert(n,base,10))
6. sum(asc(string(n)),-48)
7. string(n)
8. mid(string(n),k,1)$(k=0..4)
9. [mid(string(n),k,1)$(k=0..4)]
10. [expr(mid(string(n),k,1))$(k=0..4)]
Exercice 8.16 Le polynme P=X
4
+2X
2
+3 a t affect par la commande P:=X^4+2*X^2+3.
Les lignes de commande suivantes afchent le polynme rciproque 3*X^4+2*X^2+1 :
vrai ou faux et pourquoi ?
1. poly2symb(revlist(symb2poly(P)))
2. X^4*subst(P,X,1/X)
3. normal(X^4*subst(P,X,1/X))
4. normal(subst(P,X,1/X))
5. normal(subst(P/X^4,X,1/X))
49
6. normal(X^degree(P)*subst(P,X,1/X))
7. getNum(subst(P,X,1/X))
8. f:=unapply(P,X):; part(f(1/X),1)
9. f:=unapply(P,X):; part(normal(f(1/X)),1)
9 Exercices (niveau universit)
Il y a souvent plusieurs manires dobtenir le mme rsultat en Xcas. On seffor-
cera de choisir les solutions les plus compactes.
Exercice 9.1 Vrier les identits suivantes.
1. (2
1/3
+4
1/3
)
3
6(2
1/3
+4
1/3
) = 6
2. /4 = 4arctan(1/5) arctan(1/239)
3. sin(5x) = 5sin(x) 20sin
3
(x) +15sin
5
(x)
4. (tan(x) +tan(y))cos(x)cos(y) = sin(x +y)
5. cos
6
(x) +sin
6
(x) = 13sin
2
(x)cos
2
(x)
6. ln(tan(x/2+/4)) = argsinh(tan(x))
Exercice 9.2 Transformer la fraction rationnelle
x
4
+x
3
4x
2
4x
x
4
+x
3
x
2
x
en les fractions suivantes
(x +2)(x +1)(x 2)
x
3
+x
2
x 1
,
x
4
+x
3
4x
2
4x
x(x 1)(x +1)
2
,
(x +2)(x 2)
(x 1)(x +1)
,
x
2
(x 1)(x +1)
4
1
(x 1)(x +1)
.
Exercice 9.3 Transformer la fraction rationnelle
2
x
3
yx
2
yx +y
2
x
3
yx
2
x +y
en les fractions suivantes
2
x
2
y
x
2
1
, 2
x
2
y
(x 1)(x +1)
,
2
y 1
x 1
+
y 1
x +1
, 22
y 1
x
2
1
.
50
Exercice 9.4 On considre les fonctions f dnies par
f (x) =

e
x
1 , f (x) =
1
x

1+x
2
,
f (x) =
1
1+sin(x) +cos(x)
, f (x) =
ln(x)
x(x
2
+1)
2
.
Pour chacune de ces fonctions :
1. Calculer une primitive F.
2. Calculer F

(x) et montrer que F

(x) = f (x) aprs simplications.


Exercice 9.5 On considre les intgrales dnies I =
_
b
a
f (x)dx suivantes.
_
1
2
1
x
dx,
_
1
0
xarctan(x)dx,
_
/2
0
_
cos(x)dx,
_
/2
0
x
4
sin(x)cos(x)dx .
Pour chacune de ces intgrales :
1. Calculer la valeur exacte, puis approche de lintgrale I.
2. Pour n = 100, puis n = 1000, et pour tout j = 0, . . . , n, on pose x
j
= a + j(b
a)/n, et y
j
= f (x
j
). Calculer la valeur approche de lintgrale I par la mthode
des rectangles gauche :
I
r
=
n1

j=0
f (x
j
)(x
j+1
x
j
) .
3. Mme question avec la mthode des trapzes :
I
t
=
n1

j=0
1
2
( f (x
j
) + f (x
j+1
))(x
j+1
x
j
) .
Exercice 9.6 On considre la fonction f qui au couple (x, y) associe f (x, y) = cos(xy).
1. On pose x
0
= y
0
=/4. Dnir la fonction qui (u, v, t) associe
f (x
0
+ut, y
0
+vt) .
2. Dnir la fonction g qui t associe la drive partielle par rapport t de la
fonction prcdente (drive directionnelle).
3. Calculer le gradient de la fonction f au point (x
0
, y
0
), puis le produit scalaire de
ce gradient avec le vecteur (u, v). Donner ce rsultat en fonction de g
Exercice 9.7 On considre lquation x
3
(a1)x
2
+a
2
x a
3
= 0 comme une qua-
tion en x.
51
1. Reprsenter graphiquement la solution x en fonction de a laide de la fonction
plotimplicit.
2. Calculer les trois solutions de lquation, en utilisant rootof pour la premire,
en liminant la premire avec quo et en trouvant les deux dernires solutions en
rsolvant lquation du second degr (utiliser coeff pour calculer le discrimi-
nant de lquation).
3. Reprsenter graphiquement chacune des trois racines sur le mme graphique
avec une couleur diffrente, et pour les valeurs de a telles que ces solutions soient
relles (on pourra utiliser resultant pour trouver les valeurs de a pour les-
quelles lquation possde une racine multiple en x, ces valeurs sont les bornes
possibles des intervalles en a o chacune des racines sont relles).
4. Donner la valeur des solutions pour a = 0, 1, 2.
Exercice 9.8 On considre les limites suivantes.
lim
x0
sin(x)
x
, lim
x0
+
(sin(x))
1/x
, lim
x+
(1+1/x)
x
, lim
x+
(2
x
+3
x
)
1/x
Pour chacune dentre elles :
1. Donner sa valeur exacte.
2. Trouver une valeur de x telle que la distance de f (x) la limite soit infrieure
10
3
.
Exercice 9.9 Reprsenter les fonctions f suivantes, en choisissant lintervalle des abs-
cisses et des ordonnes, de faon obtenir la reprsentation la plus informative pos-
sible.
1. f (x) = 1/x.
2. f (x) = e
x
.
3. f (x) = 1/sin(x).
4. f (x) = x/sin(x).
5. f (x) = sin(x)/x.
Exercice 9.10 On considre la fonction f (x) = 3x
2
+1+
1

4
ln(( x)
2
).
1. Vrier que cette fonction prend des valeurs ngatives sur R
+
. Reprsenter la
fonction sur lintervalle [0, 5].
2. Dterminer > 0 tel que Xcas donne une reprsentation correcte de la fonction
sur lintervalle [ , +].
Exercice 9.11
1. Reprsenter la fonction exp(x) sur lintervalle [1, 1]. Sur ce graphique, tracer
aussi les reprsentations des polynmes de Taylor de cette fonction en x =0, aux
ordres 1, 2, 3, 4.
2. Mme question pour lintervalle [1, 2].
52
3. Reprsenter la fonction sin(x) sur lintervalle [, ]. Sur le mme graphique,
superposer les reprsentations des polynmes de Taylor de cette fonction en x =
0, aux ordres 1, 3, 5.
Exercice 9.12 Superposer les reprsentations suivantes sur le mme graphique, allant
de 0 1 en abscisse et en ordonne.
1. La premire bissectrice (y = x).
2. Le graphe de la fonction f : x 1/6+x/3+x
2
/2.
3. La tangente au graphe de la fonction f au point x = 1.
4. Un segment vertical allant de laxe des x au point dintersection de la fonction f
et de la premire bissectrice, et un segment horizontal allant de ce point dinter-
section laxe des y.
5. Les indications "point xe" et "tangente", positionnes sur le graphique comme
chanes de caractres.
Exercice 9.13 Le but de lexercice est de reprsenter sur un mme graphique des fa-
milles de fonctions. On choisira le nombre de courbes, lintervalle de reprsentation,
les chelles en x et y ainsi que le pas de discrtisation des abscisses, de faon obtenir
la reprsentation la plus informative possible.
1. Fonctions f
a
(x) = x
a
e
x
, pour a allant de 1 1.
2. Fonctions f
a
(x) = 1/(x a)
2
, pour a allant de 1 1.
3. Fonctions f
a
(x) = sin(ax), pour a allant de 0 2.
Exercice 9.14 Pour chacune des courbes paramtres suivantes, on choisira un inter-
valle de valeurs du paramtre assurant une reprsentation complte et sufsamment
lisse.
1.
_
x(t) = sin(t)
y(t) = cos
3
(t)
2.
_
x(t) = sin(4t)
y(t) = cos
3
(6t)
3.
_
x(t) = sin(132t)
y(t) = cos
3
(126t)
Exercice 9.15 Le but de lexercice est de visualiser de diffrentes manires la surface
dnie par z = f (x, y) = xy
2
. Ouvrir une fentre de gomtrie 3-d.
1. Choisir un domaine de reprsentation et les pas de discrtisation, de manire
obtenir une reprsentation informative avec plotfunc.
2. Crer un paramtre a modiable la souris avec la fonction assume. Reprsen-
ter la courbe dnie par z = f (a, y), puis faites varier le paramtre la souris.
53
3. Crer un paramtre b modiable la souris. Reprsenter la courbe dnie par
z = f (x, b), puis faites varier le paramtre la souris.
Exercice 9.16 Le but de lexercice est de visualiser un cne de diffrentes manires.
1. Reprsenter la surface dquation z = 1
_
x
2
+y
2
.
2. Reprsenter la surface paramtre dnie par :
_
_
_
x(u, v) = u cos(v)
y(u, v) = u sin(v)
z(u, v) = 1u .
3. En choisisant une valeur de a sufsamment grande, reprsenter la courbe para-
mtre dnie par :
_
_
_
x(t) = t cos(at)
y(t) = t sin(at)
z(t) = 1t .
4. Reprsenter la famille de courbes paramtres dnies par :
_
_
_
x(t) = a cos(t)
y(t) = a sin(t)
z(t) = 1a .
5. Reprsenter le mme cne en utilisant la fonction cone.
Exercice 9.17
1. Engendrer une liste l de 100 entiers au hasard entre 1 et 9.
2. Vrier que lensemble des valeurs de l est contenu dans {1, . . . , 9}.
3. Extraire de la liste l toutes les valeurs 5.
4. Pour tout k = 1, . . . , 9, compter combien de valeurs de la liste l sont gales k.
Exercice 9.18 Si x est un rel, la fraction continue lordre n de x est une liste [a
0
, . . . , a
n
]
dentiers, dont le premier terme a
0
est la partie entire de x. Pour tout n 0, a
n
est la
partie entire de linverse de la partie dcimale de a
n1
. La liste [a
0
, . . . , a
n
] est associe
au rationnel
u
n
= a
0
+
1
a
1
+
1
a
2
+
1
.
.
.
+
1
a
n
Pour x {,

2, e} et n {5, 10} :
1. Calculer [a
0
, . . . , a
n
].
2. Comparer votre rsultat avec celui que donne la fonction dfc de Xcas.
3. Calculer u
n
, et donner la valeur numrique de x u
n
.
54
Exercice 9.19 Ecrire (sans utiliser de boucle) les squences suivantes :
1. Nombres de 1 3 par pas de 0.1.
2. Nombres de 3 1 par pas de 0.1.
3. Carrs des 10 premiers entiers.
4. Nombres de la forme (1)
n
n
2
pour n = 1, . . . , 10.
5. 10 "0" suivis de 10 "1".
6. 3 "0" suivis de 3 "1", suivis de 3 "2",. . . , suivis de 3 "9".
7. "1", suivi de 1 "0", suivi de "2", suivi de 2 "0",. . . , suivi de "8", suivi de 8 zros,
suivi de "9".
8. 1 "1" suivi de 2 "2", suivis de 3 "3",. . . , suivis de 9 "9".
Exercice 9.20
1. Dnir les polynmes de degr 6 suivants.
(a) polynme dont les racines sont les entiers de 1 6.
(b) polynme dont les racines sont 0 (racine triple), 1 (racine double) et 2 (ra-
cine simple).
(c) polynme (x
2
1)
3
.
(d) polynme x
6
1.
2. Ecrire (sans utiliser la fonction companion) la matrice compagnon A associe
chacun de ces polynmes. On rappelle que la matrice compagnon associe au
polynme :
P = x
d
+a
d1
x
d1
+ +a
1
x +a
0
,
est :
A =
_
_
_
_
_
_
_
_
_
_
0 1 0 . . . 0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0
0 . . . . . . 0 1
a
0
a
1
. . . a
d1
_
_
_
_
_
_
_
_
_
_
.
3. Calculer les valeurs propres de la matrice A.
4. Calculer le polynme caractristique de A.
Exercice 9.21
1. Ecrire la matrice carre A dordre 4, telle que a
j,k
=a si j =k et a
j,k
=b si j =k,
o a et b sont des variables.
2. Calculer et factoriser le polynme caractristique de A.
3. Dterminer une matrice orthogonale P telle que
t
PAP soit une matrice diagonale.
4. Utiliser la question prcdente pour dnir la fonction qui un entier n associe
la matrice A
n
.
55
5. Calculer A
k
, pour k =1, . . . , 6 en effectuant les produits matriciels, et vrier que
la fonction dnie la question prcdente donne bien le mme rsultat.
Exercice 9.22
1. Ecrire la matrice carre N dordre 6, telle que n
j,k
= 1 si k = j +1 et n
j,k
= 0 si
k = j +1.
2. Calculer N
p
, pour p = 1, . . . , 6.
3. Ecrire la matrice A = xI +N, o x est une variable.
4. Calculer A
p
, pour p = 1, . . . , 6.
5. Calculer exp(At) en fonction de x et t :
exp(At) = I +

p=1
t
p
p!
A
p
.
Exercice 9.23 Ecrire les fonctions suivantes, sans utiliser de boucle.
1. La fonction f prend en entre un entier n et deux rels a, b et retourne la matrice
A dont les termes diagonaux valent a, tous les autres termes tant gaux b.
2. La fonction g prend en entre un entier n et trois rels a, b, c et retourne la matrice
A = (a
j,k
)
j,k=1,...,n
dont les termes diagonaux sont gaux a, les termes a
j, j+1
gaux b et termes a
j+1, j
gaux c, pour j = 1, . . . , n1 (les autres termes sont
nuls).
3. La fonction H prend en entre un entier n et retourne en sortie la matrice A =
(a
j,k
)
j,k=1,...,n
dnie par a
j,k
= 1/( j +k +1) (matrice de Hilbert). Comparer le
temps dexcution de votre fonction avec celui de la fonction hilbert
4. La fonction V prend en entre un vecteur x = (x
j
)
j=1,...,n
et retourne en sor-
tie la matrice A = (a
j,k
)
j,k=1,...,n
dnie par a
j,k
= x
j1
k
(matrice de Vander-
monde). Comparer le temps dexcution de votre fonction avec celui de la fonc-
tion vandermonde
5. La fonction T prend en entre un vecteur x = (x
j
)
j=1,...,n
et retourne en sortie la
matrice A = (a
j,k
)
j,k=1,...,n
dnie par a
j,k
= x
| jk|+1
(matrice de Toeplitz).
Exercice 9.24 Ecrire les fonctions suivantes. Toutes prennent en entre une fonction f
(de R dans R), et trois valeurs x
min
, x
0
et x
max
(supposes telles que x
min
x
0
x
max
).
1. derive : Elle calcule et reprsente graphiquement la drive de f sur linter-
valle [x
min
, x
max
]. Elle retourne la une valeur de f

(x
0
).
2. tangente : Elle reprsente la fonction f sur lintervalle [x
min
, x
max
], elle super-
pose sur le mme graphique la tangente au graphe de f au point x
0
, et retourne
lquation de cette tangente comme un polynme du premier degr.
3. araignee : Elle reprsente la fonction f sur lintervalle [x
min
, x
max
], ainsi que
la droite dquation y = x (premire bissectrice). Elle calcule et retourne les 10
premiers itrs de f en x
0
(x
1
= f (x
0
), x
2
= f f (x
0
), . . .). Elle reprsente la
suite de segments, alternativement verticaux et horizontaux, permettant de visua-
liser les itrations : segments joignant (x
0
, 0), (x
0
, x
1
), (x
1
, x
1
), (x
1
, x
2
), (x
2
, x
2
),
. . . (comparer avec la fonction plotseq)
56
4. newton_graph : Elle reprsente la fonction f sur lintervalle [x
min
, x
max
]. Elle
calcule et retourne les dix premiers itrs de la suite dnie partir de x
0
par la
mthode de Newton : x
1
= x
0
f (x
0
)/f

(x
0
), x
2
= x
1
f (x
1
)/f

(x
1
) . . . Les
valeurs de la drive sont approches. La fonction reprsente sur le mme gra-
phique les segments permettant de visualiser les itrations : segments joignant
(x
0
, 0), (x
0
, f (x
0
)), (x
1
, 0), (x
1
, f (x
1
)), (x
2
, 0), (x
2
, f (x
2
)),. . . (comparer avec la
fonction newton)
Exercice 9.25 On note D le carr unit : D =]0, 1[
2
. Soit lapplication dnie sur D
par
(x, y) = (z(x, y), t(x, y)) =
_
x
1+y
,
y
1+x
_
.
1. Calculer linverse de lapplication .
2. Dterminer et reprsenter graphiquement limage par du domaine D : =
(D).
3. Soit A(x, y) la matrice jacobienne de en un point (x, y) de D, et B(z, t) la matrice
jacobienne de
1
en un point (x, y) de . Calculer ces deux matrices, vrier
que B((x, y)) et A(x, y) sont inverses lune de lautre.
4. Soit J(z, t) le dterminant de la matrice B. Calculer et simplier J(z, t).
5. Calculer
I
1
=
__
D
_
1+x +y
(1+x)(1+y)
_
3
dxdy .
6. Calculer
I
2
=
__

(1+z)(1+t)dzdt ,
et vrier que I
1
= I
2
.
57
A Table des matires et index
Table des matires
1 Pour commencer 1
1.1 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Aide en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Entrer des commandes . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Les objets du calcul formel 4
2.1 Les nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2 Les caractres et les chanes . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Les expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 Dvelopper et simplier . . . . . . . . . . . . . . . . . . . . . . . . 8
2.6 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.7 Listes, squences, ensembles . . . . . . . . . . . . . . . . . . . . . . 10
2.8 Temps de calcul, place mmoire . . . . . . . . . . . . . . . . . . . . 12
3 Outils pour lAnalyse 12
3.1 Drives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.2 Limites et dveloppements limits . . . . . . . . . . . . . . . . . . . 13
3.3 Primitives et intgrales . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.4 Rsolution dquations . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5 Equations diffrentielles . . . . . . . . . . . . . . . . . . . . . . . . 16
4 Outils pour lAlgbre 17
4.1 Arithmtique des entiers . . . . . . . . . . . . . . . . . . . . . . . . 17
4.2 Polynmes et fractions rationnelles . . . . . . . . . . . . . . . . . . . 18
4.3 Trigonomtrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.4 Vecteurs et matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.5 Systmes linaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.6 Rduction des matrices . . . . . . . . . . . . . . . . . . . . . . . . . 23
5 Reprsentations graphiques 24
5.1 Tracs de courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.2 Objets graphiques 2D . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.3 Objets graphiques 3D . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6 Programmation 27
6.1 Le langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.2 Quelques exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.3 Style de programmation . . . . . . . . . . . . . . . . . . . . . . . . . 30
58
7 Des exercices corrigs avec Xcas 31
7.1 Fonction et reprsentation graphique (niveau terminale S) . . . . . . . 31
7.1.1 Exercice 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
7.1.2 Exercice 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
7.2 Calcul de primitives (niveau dbut universit) . . . . . . . . . . . . . 37
7.3 Dvelopements limits . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.4 quations diffrentielles . . . . . . . . . . . . . . . . . . . . . . . . 40
7.5 Les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
8 Vrai ou Faux ? (dun point de vue informatique) 44
9 Exercices (niveau universit) 50
A Table des matires et index 58
59
Index
abs, 9
acos, 9
acosh, 9
addition, 4
affectation, 6
afchage graphique, 24
aide en ligne, 3
ans, 4
append, 11
apply, 12
arc
cosinus, 9
sinus, 9
tangente, 9
argument
cosinus hyperbolique, 9
sinus hyperbolique, 9
tangente hyperbolique, 9
arithmtique, 17
arrondi, 9
asin, 9
asinh, 9
assume, 7
atan, 9
atanh, 9
Bezout, 18, 19
blockmatrix, 21
boucle, 28
break, 28
canonical_form, 18
caractre, 6
ceil, 9
cercle, 26
chane, 6
ClrGraph, 24
coeff, 18
color, 24
compose, 10
cone, 27
conj, 9
conjugu, 9
continue, 28
convert, 8
cos, 9
cosh, 9
cosinus, 9
hyperbolique, 9
couleur, 24
courbe
en polaires, 25
implicite, 25
paramtrique, 25
cumSum, 12
curl, 13
cyclotomic, 19
debug, 30
dcomposition en lments simples, 18
degree, 18
drive
dune expression, 12
dune fonction, 12
partielle, 13
desolve, 16
det, 21
dterminant, 21
dveloppement limit, 13
dvelopper, 8
diagonalisation, 23
diff, 12
Digits, 5
DispG, 24
divergence, 13
divergence, 13
divis, 19
division, 4
droite, 26, 27
e, 6
effacer, 24
galit, 6
egcd, 19
eigenvals, 23
eigenvects, 23
60
else, 28
ensemble, 10
quation, 6
diffrentielle, 16
rsolution, 15
equation, 26
erreur, 28
espace, 27
et, 28
evalf, 5
exact, 5
exp, 9
exp2trig, 20
expand, 8, 18
expression, 7, 10
facteurs premiers, 18, 19
factor, 8, 19
factors, 19
floor, 9
fonction, 10
applique une liste, 12
composition des, 10
dnition dune, 10
graphe dune, 24
primitive dune, 14
for, 28
fraction rationnelle, 18
fsolve, 16
function_diff, 12
Gauss-Jordan, 23
gcd, 18, 19
genpoly, 18
grad, 13
gradient, 13
halftan, 20
help, 3
hermite, 19
hessian, 13
horner, 18
hyp2exp, 20
hypothse, 7
i, 5
iabcuv, 18
idivis, 18
idn, 21
iegcd, 18
if, 28
ifactor, 18
ifactors, 18
im, 9
image, 21
infinity, 5
int, 14
intgrale, 14
inter, 26, 27
interactive_plotode, 17
interface, 1
iquo, 18
iquorem, 18
irem, 18
is_prime, 18
itration, 11
iteratif, 29
jordan, 23
ker, 21
lagrange, 19
laguerre, 19
langage
fonctionnel, 27
interprt, 30
non typ, 27
laplacian, 13
laplacien, 13
lcm, 18, 19
lcoeff, 18
legend, 26
ligne polygonale, 26, 27
limit, 13
limite, 13
droite, 13
gauche, 13
linsolve, 16, 21
liste, 10
des coefcients, 12
vide, 11
61
ln, 9
log, 9
log10, 9
logarithme
en base 10, 9
naturel, 9
makelist, 11
makemat, 21
map, 12
matrice, 20
alatoire, 21
dterminant dune, 21
hessienne, 13
identit, 21
image dune, 21
noyau dune, 21
rang dune, 21
matrix, 21
menus, 2
modulo, 17
multiplication, 4
newton, 16
nextprime, 18
nombre
approch, 4
complexe, 5
dlments, 10
exact, 4
premier, 18
non, 28
nop, 10
nops, 10
normal, 8, 18
nuage de points, 26
NULL, 11
odesolve, 16
op, 10
ou, 28
parameq, 26
parenthses, 4
partfrac, 18
partie entire, 9
partie imaginaire, 9
partie relle, 9
pcar, 23
pcoeff, 18
peval, 18
PGCD, 18, 19
pi, 6
plan, 27
plotpolar, 25
plot, 24
plotfield, 17
plotfunc, 27
plotimplicit, 25
plotode, 17
plotparam, 25, 27
pmin, 23
point, 26, 27
poly2symb, 12, 18
polygone, 26, 27
polygone_ouvert, 26, 27
polygonplot, 26, 27
polynme, 18
alatoire, 19
caractristique, 23
cyclotomique, 19
de Hermite, 19
de Lagrange, 19
de Laguerre, 19
de Tchebyshev, 19
minimal, 23
powermod, 17
PPCM, 18, 19
prcision, 5
previousprime, 18
primitive, 14
priorits, 4
product, 12
produit, 12
matriciel, 20, 21
scalaire, 21
terme terme, 21
vectoriel, 21
programmation, 27
proot, 16
propre
valeur, 23
62
vecteur, 23
ptayl, 18
puissance, 4
purge, 6
quo, 19
quotient, 18, 19
racine carre, 9
randpoly, 19
rank, 21
ranm, 21
ratnormal, 8
re, 9
rcursif, 30
rem, 19
rsolution
approche, 15
exacte, 15
reste, 18, 19
romberg, 15
rotationnel, 13
round, 9
rref, 21
seq, 11
squence, 10
vide, 11
series, 13
simplications automatiques, 7
simplier, 8
simplify, 8
simult, 21
sin, 9
sinh, 9
sinus, 9
hyperbolique, 9
size, 10
solve, 15
somme, 12
sommes cumules, 12
soustraction, 4
sphere, 27
sqrt, 5, 9
subst, 7
somme, 12
symb2poly, 12, 18
systme
dquations, 15
linaire, 21
table, 27
tan, 9
tan2sincos, 20
tangente, 9
hyperbolique, 9
tangente, 24
tanh, 9
taylor, 13
tchebyshev1, 19
tchebyshev2, 19
tcoeff, 18
tcollect, 20
temps de calcul, 12
test, 28
texpand, 20
texte, 26
time, 12
tlin, 20
trig2exp, 20
trigonomtrie, 19
trigtan, 20
tsimplify, 8
unapply, 10
valeur absolue, 9
valeurs propres, 23
valuation, 18
variable
affecte, 6
formelle, 6
vecteur, 20
vecteurs propres, 23
zoom, 24
63

You might also like