# Calcul formel et Mathématiques avec Xcas ### Renée De Graeve Maître de Conférence à Grenoble I

Remerciements

Je remercie:

- Bernard Parisse pour ses précieux conseils et ses remarques sur ce texte,

© 2002, 2006 Renée De Graeve, `renee.degraeve@wanadoo.fr`
La copie, la traduction et la redistribution de ce document sur support électronique ou papier sont autorisés pour un usage non commercial uniquement. L’utilisation de ce document à des fins commerciales est interdite sans l’accord écrit du détenteur du copyright. Cette documentation est fournie en l’état, sans garantie d’aucune sorte. En aucun cas le détenteur du copyright ne pourra être tenu pour responsable de dommages résultant de l’utilisation de ce document.

Ce document est disponible à l’adresse Internet suivante :
`http://www-fourier.ujf-grenoble.fr/~parisse/cascmd_fr.pdf`

Préface

Bernard Parisse
Maître de Conférences à l’Université de Grenoble I
Développeur du logiciel de calcul formel giac et de son interface Xcas. La version à jour se récupère sur ;
http://www-fourier.ujf-grenoble.fr/~parisse/giac.html

# Table des matières

# Index

binomial, 6.8.3 invztrans, 6.65.2 , 6.16.2, 6.18.4 , 6.16.2, 6.18.5 ∥, 6.2.3 Note_index1, 0.1.1 ’, 6.14.5, 6.20.4 ’*’, 6.18.1 ’*’, 6.25.26 ’+’, 6.16.1, 6.18.1 ’+’, 6.25.26 ’-’, 6.18.1 ’/’, 6.18.1 (), 6.14.22, 6.40.1 *, 6.18.1, 6.35.4, 6.41.7, 6.43.7, 6.48.3 *=, 2.5.4 +, 6.5.12, 6.5.13, 6.16.1, 6.18.1, 6.35.2, 6.40.7, 6.43.3, 6.48.2, 10.8.3 +,-,*,/,^, 6.10.2, 6.12.1 +infinity, 6.1 ,, 6.40.2 -, 6.16.1, 6.18.1, 6.35.3, 6.43.4, 6.48.2, 10.8.3 -=, 2.5.4 ->, 6.16.2, 6.17.1, 6.18.3 -inf, 6.1 -infinity, 6.1 .*, 6.43.5, 6.48.9 .+, 6.43.3, 6.48.2 .-, 6.43.4, 6.48.2 .., 6.38.1, 6.40.4 ./, 6.43.6, 6.48.10 .^, 6.48.11 /, 6.16.1, 6.18.1, 6.35.8, 6.35.11, 6.53.2 //, 9.4.1 /=, 2.5.4 :+=, 2.5.4 :;, 2.5.13 :=, 2.5.2, 6.16.2, 6.17.1, 6.18.3, 9.4.13, 9.4.15 <, 6.2.2 <=, 6.2.2 =, 2.5.2 =<, 2.5.3, 6.16.2, 6.47.5, 9.4.13, 9.4.15, 9.4.16 ==, 6.2.2 =>, 2.5.2, 5.1.3, 6.16.2, 6.25.26, 9.4.13, 9.4.15 =>+, 6.32.9 >, 6.2.2 >=, 6.2.2 ?, 1.8.2, 2.5.2 [[]], 6.5.1, 6.40.3, 6.42.4 [], 6.5.1, 6.38.2, 6.39.6, 6.40.3, 6.40.4, 6.40.6, 6.42, 6.42.4, 6.42.17 #, 9.5.4 $, 6.16.2, 6.20.4, 6.40.5 %, 6.7.12, 6.16.2, 6.35 % , 6.36 % 0, 6.7.12 % {% }, 6.41.1 %%%{%%%}, 6.28.2 %e, 6.1 %i, 6.1 %pi, 6.1 &*, 6.48.3 &&, 6.2.3 &^, 6.48.7 ^, 6.16.1, 6.35.9, 6.48.7 _, 5.1.1, 5.2.1 {}, 9.3 |, 6.14.20 !, 6.2.3, 6.8.1 !=, 6.2.2 ", 6.5.1 "\n", 6.5.2 :=, 6.47.5 Airy_Ai, 6.10.19 Airy_Bi, 6.10.19 a2q, 6.60.2 abcuv, 6.29.12 about, 2.5.7, 2.5.9, 6.26.1 abs, 6.12.5, 6.18.2, 10.16.16 abscissa, 10.15.2, 11.12.1 abscisse, 10.15.2, 11.12.1 accumulate_head_tail, 8.1.11 acos, 6.18.2, 6.25.1 acos2asin, 6.25.7 acos2atan, 6.25.8 acosh, 6.18.2 acot, 6.25.1 acsc, 6.25.1 add, 6.42.34 additionally, 2.5.8 additionally, 2.5.7, 2.5.8 adjoint_matrix, 6.57.10 affichage, 10.3, 10.3.5, 10.16.1 affichage, 10.3.3, 10.3.5, 10.3.5 afficher, 9.4.9 affix, 10.15.1 affixe, 10.15.1 aire, 3.11.1, 10.16.8 aire_graphe, 3.12, 10.16.7 aireen, 10.16.1, 10.16.9 aireenbrut, 10.16.1, 10.16.9 alea, 6.8.5, 8.3.2, 8.3.2, 8.3.2, 8.3.2 algsubs, 6.14.24 algvar, 6.66.4 alog10, 6.18.2 alors, 9.4.19 altitude, 10.9.11 and, 6.2.3 angle, 10.16.5, 11.12.9 angle_radian, 1.7.6 angleat, 10.16.6 angleatraw, 10.16.6 angleen, 10.16.6 angleenbrut, 10.16.6 animate, 3.24.1 animate3d, 3.24.2 animation, 3.24.3 ans, 2.5.12 append, 6.42.21 apply, 6.42.37 approx, 4.2 approx_mode, 1.7.7 arc, 10.13.2, 10.13.3 arccos, 6.18.2, 6.25.1 arccosh, 6.18.2 archive, 2.5.5 arcLen, 6.21.7 arcsin, 6.18.2, 6.25.1 arcsinh, 6.18.2 arctan, 6.18.2, 6.25.1 arctanh, 6.18.2 area, 3.11.1, 10.16.8 areaat, 10.16.9 areaatraw, 10.16.9 areaplot, 3.12, 10.16.7 aretes, 11.16.8 arg, 6.12.6, 10.16.17 args, 9.6.1 array, 6.25.26, 6.52 array, 6.45 as_function_of, 6.18.6 asc, 6.5.8 asec, 6.25.1 asin, 6.18.2, 6.25.1 asin2acos, 6.25.9 asin2atan, 6.25.10 asinh, 6.18.2 assert, 9.4.4 assign, 9.4.18 assume, 2.5.7, 6.26.1, 10.7 at, 6.42.4, 6.42.5, 6.49.1 atan, 6.18.2, 6.25.1 atan2acos, 6.25.12 atan2asin, 6.25.11 atanh, 6.18.2 atrig2ln, 6.25.21 augment, 6.42.20, 6.50.14 autosimplify, 6.14.18 axe_radical, 10.13.9 axes, 10.3.3 Beta, 6.10.16 Binary, 6.16.3 BlockDiagonal, 6.46.4 bareiss, 6.53.4 barycenter, 6.12.10, 10.8.11, 11.4.7 barycentre, 6.12.10, 10.8.11, 11.4.7 base, 6.6.1, 6.25.26 basis, 6.53.9 batons, 8.2.5 begin, 9.1.2, 9.3 bernoulli, 6.9.9, 6.9.10 betad, 8.4.30 betad_cdf, 8.4.31 betad_icdf, 8.4.32 bezier, 3.17 bezout_entier, 6.7.23 binomial, 8.4.1 binomial, 6.42.43, 6.46.3 binomial_cdf, 8.4.2 binomial_icdf, 8.4.3 birapport, 10.19.2 bisection_solver, 4.5.1 bisector, 10.9.13 bissectrice, 10.9.13 bitand, 6.4.1 bitor, 6.4.1 bitxor, 6.4.1 black, 10.3.5 blanc, 10.3.5 bleu, 10.3.5 blockmatrix, 6.50.12 blue, 10.3.5 border, 6.50.15 bounded_function, 6.23.1 boxwhisker, 6.44, 6.51.5, 8.1.12 break, 9.6.2 breakpoint, 9.7.4 brent_solver, 4.5.2 Capture ecran, 1.4.1 Celsius2Fahrenheit, 5.1.5 Ci, 6.10.7 Circle, 10.13.4 ClrDraw, 2.4.2 ClrGraph, 1.10.4, 2.4.2, 9.1.4, 9.6.5 ClrIO, 9.4.10 COND, 6.56.5 CopyVar, 2.5.6 CST, 2.5.1 c1oc2, 6.11.13 c1op2, 6.11.11 camembert, 8.1.17 canonical_form, 6.14.8 cap_flat_line, 10.3.5 cap_round_line, 10.3.5 cap_square_line, 10.3.5 carre, 10.11.2, 11.8.1 cas_setup, 1.6.1, 1.7.3 case, 9.4.21 cat, 6.5.11, 6.5.13 catch, 9.7.12 cauchy, 8.4.36 cauchy_cdf, 8.4.37, 8.4.37 cauchy_icdf, 8.4.38 cauchyd, 8.4.36 cauchyd_icdf, 8.4.38 cdf, 8.4.54 ceil, 6.18.2 ceiling, 6.18.2 center, 10.8.12 center2interval, 6.38.4 centered_cube, 11.17.2 centered_tetrahedron, 11.17.1 centre, 10.8.12 cercle, 10.13.1, 11.10 cercle_osculateur, 7.5.3 cFactor, 6.14.12 cfactor, 6.14.12 cfsolve, 4.7 changebase, 6.53.8 char, 6.5.9 charpoly, 6.57.7 chinrem, 6.29.13 chisquare, 8.4.19 chisquare_cdf, 8.4.20 chisquare_icdf, 8.4.21 chisquared, 8.4.19 chisquaret, 8.5.4 cholesky, 6.59.1 chrem, 6.7.27 circle, 10.13.1, 11.10 circonscrit, 10.13.6 circumcircle, 10.13.6 classes, 8.1.10 coeff, 6.28.8 coeffs, 6.28.8 col, 6.49.2 col, 6.42.30, 6.42.31, 6.42.32, 6.42.33, 6.51.1, 6.51.2, 6.51.3, 6.51.4 colDim, 6.51.8 coldim, 6.51.8 collect, 6.28.17 colNorm, 6.56.3 colnorm, 6.56.3 color, 10.3, 10.3.5 color, 4.5.2, 10.3.3, 10.3.5, 10.3.5 colSwap, 6.50.11 colspace, 6.53.14 colswap, 6.50.11 comb, 6.8.2 combine, 6.24.2 comDenom, 6.32.7 comment, 2.1, 9.4.1 common_perpendicular, 11.5.9 companion, 6.57.11 compare, 9.4.8 complex, 9.4.5 complex, 6.25.27 complex_mode, 1.7.8 complex_variables, 1.7.9 complexroot, 6.33.1 concat, 6.42.20, 6.50.14 cond, 6.56.5 cone, 11.15.1 confrac, 6.9.7, 6.25.26 conic, 6.60.6 conique, 6.60.6 conique_reduite, 6.60.7 conj, 6.12.8 conj_harmonique, 10.19.4 conjugate_gradient, 6.60.4 conserver_pivot, 6.63.3 cont, 9.7.6 contains, 6.39.10, 6.42.29 content, 6.28.15 continue, 9.6.3 contourplot, 3.13 convert, 5.1.3, 6.6.1, 6.6.2, 6.25.26, 6.25.27, 6.28.7, 6.28.27, 6.28.28, 6.28.29, 6.39.11, 6.45, 6.52 convertir, 5.1.3, 6.6.1, 6.6.2, 6.25.26, 6.28.27, 6.28.28, 6.28.29 convexhull, 10.12.5 coordinates, 10.15.4, 11.12.4 coordonnees, 10.15.4, 11.12.4 coordonnees_polaires, 10.15.6 coordonnees_rectangulaires, 10.15.5 copy, 9.4.14, 9.4.16 correlation, 8.2.2 correlation, 8.2.11, 8.2.13, 8.2.15, 8.2.19, 8.2.21 cos, 6.25.1 cos, 6.24.2, 6.25.26 cos2sintan, 6.25.16 cosh, 6.18.2 cot, 6.25.1 cote, 11.12.3 couleur, 10.3, 10.3.5 couleur, 10.3.3, 10.3.5, 10.3.5 count, 6.42.30, 6.51.1 count_eq, 6.42.31, 6.51.2 count_inf, 6.42.32, 6.51.3 count_sup, 6.42.33, 6.51.4 courbe_parametrique, 3.16, 3.16.2 courbe_polaire, 3.18 courbure, 7.5.1 covariance, 8.2.1 covariance_correlation, 8.2.3 cpartfrac, 6.32.10 cpp, 12.3.1 crationalroot, 6.33.8 cross, 6.43.8 cross_point, 10.3.5 cross_ratio, 10.19.2 crossP, 6.43.8 crossproduct, 6.43.8 cSolve, 6.62.7 csc, 6.25.1 csolve, 6.62.7 cube, 11.16.1 cube_centre, 11.17.2 cumSum, 6.5.6, 6.42.35, 6.48.5 cumulated_frequencies, 8.1.15 curl, 6.61.5 curvature, 7.5.1 curvecurve, 4.3.5 cyan, 10.3.5 cycle2perm, 6.11.6 cycleinv, 6.11.16 cycles2permu, 6.11.5 cyclotomic, 6.29.14 cylinder, 11.15.3 cylindre, 11.15.3 cZzeros, 6.14.14 Delete, 6.16.3 DelFold, 2.6.6 DelVar, 2.5.10 Det, 6.36.5 DIGITS, 1.7.4, 4.2, 6.10.1 Digits, 1.7.4, 4.2, 6.10.1 Dirac, 6.10.10 Disp, 9.1.4, 9.4.9 DispG, 9.1.4, 9.6.4 DispHome, 9.1.4, 9.6.6 DOM_COMPLEX, 9.4.5 DOM_FLOAT, 9.4.5 DOM_FUNC, 9.4.5 DOM_IDENT, 9.4.5 DOM_INT, 9.4.5 DOM_LIST, 9.4.5 DOM_RAT, 9.4.5 DOM_STRING, 9.4.5 DOM_SYMBOLIC, 9.4.5 DrawFunc, 3.7 DrawParm, 3.16, 3.16.2 DrawPol, 3.18 DrawSlp, 3.10.6 DrwCtour, 3.13 dash_line, 10.3.5 dashdot_line, 10.3.5 dashdotdot_line, 10.3.5 dayofweek, 6.67 de, 9.4.22 debug, 9.2, 9.7.1 def, 9.1.2 default, 9.4.21 degree, 6.28.9 del, 2.5.10 delcols, 6.50.4 delrows, 6.50.4 deltalist, 6.42.44 demi_cone, 11.15.2 demi_droite, 10.9.2, 11.5.3 denom, 6.9.4, 6.32.4 densityplot, 3.14 derive, 6.20.4, 6.61.1 deriver, 6.20.4, 6.61.1 deSolve, 6.64.1 desolve, 6.64.1 det, 6.35.15, 6.53.4 det_minor, 6.53.5 developpee, 7.8 developper, 6.14.7 developper_transcendant, 6.24.1 dfc, 6.9.7 dfc2f, 6.9.8 diag, 6.46.4, 6.46.5 diagramme_batons, 8.1.16 diff, 6.20.4, 6.61.1 diff, 6.25.26 dim, 6.51.6 display, 10.3, 10.3.5 display, 10.3.3, 10.3.5 distance, 10.16.2, 11.12.7 distance2, 10.16.4, 11.12.8 distanceat, 10.16.3 distanceatraw, 10.16.3 distanceen, 10.16.3 distanceenbrut, 10.16.3 div, 6.7.10 div_harmonique, 10.19.3 divergence, 6.61.4 divide, 6.29.6 divis, 6.29.1 division_point, 10.19.1 divisors, 6.7.9 divpc, 6.37.1 dnewton_solver, 4.6.1 dodecaedre, 11.17.4 dodecahedron, 11.17.4 domain, 6.19.2 dot, 6.43.7 dot_paper, 10.2.6 dotP, 6.43.7 dotprod, 6.43.7 double, 9.4.5 droit, 6.5.5, 6.38.2, 6.39.6, 6.42.11, 6.62.5 droite, 3.10.1, 10.9.1, 11.5.1, 11.5.2 droite_tangente, 3.10.4 dsolve, 6.64.1 Edit, 1.4.2 Ei, 6.10.5 ERROR, 9.7.13 EXPR, 9.4.7 e, 6.1 e2r, 6.28.5, 6.28.6 ecart_type, 6.44, 6.51.5, 8.1.2 ecart_type_population, 6.44, 8.1.3 egcd, 6.29.11 egv, 6.57.3 egvl, 6.57.2 eigenvals, 6.57.1 eigenvalues, 6.57.1 eigenvectors, 6.57.3 eigenvects, 6.57.3 eigVc, 6.57.3 eigVl, 6.57.2 element, 2.5.7, 10.8.15 elif, 9.4.20 eliminate, 6.14.25 ellipse, 10.14.1, 11.11.1 else, 9.4.19, 9.4.20 end, 6.18.3, 9.1.2, 9.3, 9.4.19, 9.4.20 envelope, 10.20.2 enveloppe, 10.20.2 epaisseur, 10.3 epaisseur, 10.3.3 epaisseur_ligne_1, 10.3.5 epaisseur_ligne_2, 10.3.5 epaisseur_ligne_8, 10.3.5 epaisseur_point_1, 10.3.5 epaisseur_point_2, 10.3.5 epaisseur_point_8, 10.3.5 epsilon, 6.66.1 epsilon2zero, 6.66.1 equal, 6.62.1 equal2diff, 6.62.2 equal2list, 6.62.3 equation, 10.15.7, 11.12.5 equation, 8.2.11, 8.2.13, 8.2.15, 8.2.19, 8.2.21 equilateral_triangle, 10.10.5, 11.7.4 erase, 1.10.3, 1.10.4, 2.4.3, 10.2.1 erf, 6.10.11 erfc, 6.10.12 error, 9.7.13 est_aligne, 10.18.2, 11.13.6 est_carre, 10.18.8, 11.13.12 est_cocyclique, 10.18.3, 11.13.7 est_conjugue, 10.18.14 est_coplanaire, 11.13.2 est_cospherique, 11.13.8 est_dans, 10.18.4 est_element, 10.18.1, 11.13.1 est_equilateral, 10.18.5, 11.13.9 est_faisceau_cercle, 10.18.17 est_faisceau_droite, 10.18.16 est_harmonique, 10.18.15 est_impair, 6.7.15 est_inclus, 6.41.2 est_isocele, 10.18.6, 11.13.10 est_losange, 10.18.9, 11.13.13 est_orthogonal, 10.18.13, 11.13.5 est_pair, 6.7.14 est_parallele, 10.18.11, 11.13.3 est_parallelogramme, 10.18.10, 11.13.14 est_perpendiculaire, 10.18.12, 11.13.4 est_rectangle, 10.18.7, 11.13.11 euler, 6.7.29 euler_gamma, 6.1 eval, 6.14.2, 10.6 eval_level, 6.14.3 evala, 6.14.4 evalb, 6.3 evalc, 6.12.4 evalf, 4.2, 6.9.1, 6.10.1, 6.66.7 evalm, 6.48.1 even, 6.7.14 evolute, 7.8 exact, 6.9.1, 6.66.8 exbisector, 10.9.14 exbissectrice, 10.9.14 excircle, 10.13.7 exinscrit, 10.13.7 exp, 6.18.2 exp, 6.24.2, 6.25.26 exp2list, 6.2.4 exp2pow, 6.27.8 exp2trig, 6.25.13 expand, 6.14.7 expexpand, 6.27.2 expln, 6.25.26 exponential, 8.4.42 exponential, 6.42.43, 6.46.3 exponential_cdf, 8.4.43 exponential_icdf, 8.4.44 exponential_regression, 8.2.12 exponential_regression_plot, 8.2.13 exponentiald, 8.4.42 exponentiald_cdf, 8.4.43 exponentiald_icdf, 8.4.44 expr, 6.5.16, 9.5.5, 9.5.6 expression, 9.4.5 extend, 6.42.20 extract_measure, 10.16.14 extraire_mesure, 10.16.14 extrema, 6.55.2 ezgcd, 6.29.9 FALSE, 6.2.1 Factor, 6.36.4 Fahrenheit2Celsius, 5.1.5 FUNC, 9.4.7 f2nd, 6.9.5, 6.32.5 faces, 11.16.1, 11.16.7 facteurs_premiers, 6.7.7 factor, 6.14.11, 6.28.18, 6.35.14, 6.35.19 factor_xn, 6.28.14 factorial, 6.7.1, 6.8.1 factoriser, 6.14.11, 6.28.18, 6.35.14 factoriser_entier, 6.7.6 factoriser_sur_C, 6.14.12 factors, 6.28.20 fadeev, 6.57.7 faire, 9.4.25 false, 6.2.1 falsepos_solver, 4.5.3 fclose, 9.5.3 fcoeff, 6.34.2 fdistrib, 6.14.7 feuille, 6.17.3, 6.38.2, 6.39.6 ffonction, 6.18.3, 9.1.2 fft, 6.26.3 fieldplot, 3.20, 3.23 filled, 10.3.3, 10.3.5 findhelp, 1.8.2 fisher, 8.4.23 fisher, 6.42.43, 6.46.3 fisher_cdf, 8.4.24 fisher_icdf, 8.4.25 fisherd, 8.4.23 flatten, 6.42.3 float, 6.25.27 float2rational, 6.9.1, 6.66.8 floor, 6.18.2 fMax, 6.22.1 fMin, 6.22.1 fonction, 6.18.3, 9.1.2 fonction_derivee, 6.20.3 fopen, 9.5.3 for, 9.4.22 format, 6.5.15 fourier_an, 6.26.1 fourier_bn, 6.26.1 fourier_cn, 6.26.1 fPart, 6.18.2 fpour, 9.4.22 fprint, 9.5.3 frac, 6.18.2 fracmod, 6.35.12 frame_2d, 10.2.4 frame_3d, 11.3.2 frames, 3.24, 10.3.3 frequences, 8.1.14 frequences_cumulees, 8.1.15 frequencies, 8.1.14 frobenius_norm, 6.56.1 froot, 6.34.1 fsi, 9.4.19 fsolve, 4.5, 4.6 ftantque, 9.4.25 fullparfrac, 6.25.26 func, 9.4.5 funcplot, 3.7, 11.15.5 function, 6.18.3 function_diff, 6.20.3 fxnd, 6.9.5, 6.32.5 Gamma, 6.10.13 Gcd, 6.7.3, 6.29.8, 6.36.3 GetFold, 2.6.5 GF, 6.35.18 Graph, 3.7 gammad, 8.4.27 gammad_cdf, 8.4.28 gammad_icdf, 8.4.29 gauche, 6.5.5, 6.38.2, 6.39.6, 6.42.11, 6.62.4 gauss, 6.60.3 gauss_seidel_linsolve, 6.63.8 gaussjord, 6.63.3 gaussquad, 4.3.4 gbasis, 6.31.1 gcd, 6.7.2, 6.29.7, 6.35.13 gcdex, 6.29.11 genpoly, 6.31.4 geometric, 8.4.33 geometric_cdf, 8.4.34 geometric_icdf, 8.4.35 getDenom, 6.9.4, 6.32.3 getKey, 9.4.3 getNum, 6.9.3, 6.32.1 getType, 9.4.7 giac, 0.2, 0.2.6 gl_z, 10.3.3 gl_quaternion, 10.3.3 gl_rotation, 10.3.3 gl_shownames, 10.3.3 gl_texture, 10.3.3 gl_x, 10.3.3 gl_x_axis_color, 10.3.3 gl_x_axis_name, 10.3.3 gl_x_axis_unit, 10.3.3 gl_xtick, 10.3.3 gl_y, 10.3.3 gl_y_axis_color, 10.3.3 gl_y_axis_name, 10.3.3 gl_y_axis_unit, 10.3.3 gl_ytick, 10.3.3 gl_z_axis_color, 10.3.3 gl_z_axis_name, 10.3.3 gl_z_axis_unit, 10.3.3 gl_ztick, 10.3.3 goto, 9.4.26 grad, 6.61.1 gramschmidt, 6.60.5 graph2tex, 1.10.3, 2.4.3, 3.5 graph3d2tex, 1.10.5, 3.5 graphe, 3.8 graphe3d, 3.9 graphe_aire, 3.12, 10.16.7 graphe_probabiliste, 3.6 graphe_suite, 3.19, 6.15.4 greduce, 6.31.2 green, 10.3.5 grid_paper, 10.2.8 groupermu, 6.11.18 Heaviside, 6.10.9 hadamard, 6.48.8 half_cone, 11.15.2 half_line, 10.9.2, 11.5.3 halftan, 6.25.19 halftan_hyp2exp, 6.25.20 halt, 9.7.8 hamdist, 6.4.2 harmonic_conjugate, 10.19.4 harmonic_division, 10.19.3 has, 6.66.5 hasard, 6.8.5, 8.3.2, 8.3.2, 8.3.2, 8.3.2 hauteur, 10.9.11 head, 6.5.4, 6.42.7 hermite, 6.30.2 hessenberg, 6.57.12 hessenberg, 6.57.7 hessian, 6.61.3 heugcd, 6.29.9 hexagon, 10.12.1, 11.9.1 hexagone, 10.12.1, 11.9.1 hidden_name, 10.3.5 hilbert, 6.46.7 histogram, 8.1.13 histogramme, 8.1.13 hold, 6.14.5 homothetie, 10.17.5, 11.14.5 homothety, 10.17.5, 11.14.5 horner, 6.28.21 hybrid_solver, 4.6.2 hybridj_solver, 4.6.5 hybrids_solver, 4.6.3 hybridsj_solver, 4.6.6 hyp2exp, 6.27.1 hyperbola, 10.14.2, 11.11.2 hyperbole, 10.14.2, 11.11.2 IFTE, 2.5.2 Input, 9.4.2 InputStr, 9.4.2 Int, 6.21.1 Inverse, 6.36.6 i, 6.1 i[], 6.39.1 iabcuv, 6.7.24 ibasis, 6.53.10 ibpdv, 6.21.5 ibpu, 6.21.5 icdf, 8.4.55 ichinrem, 6.7.25, 6.7.26 ichrem, 6.7.25, 6.7.26 icosaedre, 11.17.5 icosahedron, 11.17.5 id, 6.18.2 identifier, 9.4.5 identity, 6.46.1 idivis, 6.7.9 idn, 6.46.1 iegcd, 6.7.23 if, 9.4.19, 9.4.20 ifactor, 6.7.6 ifactors, 6.7.7 ifft, 6.26.4 ifte, 2.5.2 igamma, 6.10.15 igcd, 6.7.2, 6.29.7 igcdex, 6.7.23 ihermite, 6.57.13 ilaplace, 6.64.2 im, 6.12.3 imag, 6.12.3 image, 6.53.11 implicitplot, 3.15 impression, 1.4.1 in, 9.4.22 in_ideal, 6.31.3 incircle, 10.13.5 indets, 6.66.2 inequationplot, 3.11 inf, 6.1 infinity, 6.1 input, 9.4.2 inString, 6.5.10 inscrit, 10.13.5 insert, 6.42.9 insmod, 13.2 insmode, 12.3.1 int, 6.21.1 int, 6.25.26 intDiv, 6.7.11 integer, 2.5.7, 6.26.1, 9.4.5 integer, 6.25.27 integrate, 6.21.1 integration, 6.21.1 integrer, 6.21.1 inter, 10.8.7, 11.4.4 inter_droite, 10.8.6, 11.4.3 inter_unique, 10.8.6, 11.4.3 interactive_odeplot, 3.22 interactive_plotode, 3.22 interp, 6.28.33 intersect, 6.16.2, 6.39.9, 6.41.4 interval, 6.25.26 interval2center, 6.38.3 inv, 6.35.11, 6.35.16, 6.53.2 inverse, 6.35.16, 6.53.2 inversion, 10.17.7, 11.14.7 invisible_point, 10.3.5 invlaplace, 6.64.2 iPart, 6.18.2 iquo, 6.7.11 iquorem, 6.7.13 iratrecon, 6.35.12 irem, 6.7.12 is_collinear, 10.18.2, 11.13.6 is_concyclic, 10.18.3, 11.13.7 is_conjugate, 10.18.14 is_coplanar, 11.13.2 is_cospheric, 11.13.8 is_cycle, 6.11.9 is_element, 10.18.1, 11.13.1 is_equilateral, 10.18.5, 11.13.9 is_harmonic, 10.18.15 is_harmonic_circle_bundle, 10.18.17 is_harmonic_line_bundle, 10.18.16 is_included, 6.41.2 is_inside, 10.18.4 is_isosceles, 10.18.6, 11.13.10 is_orthogonal, 10.18.13, 11.13.5 is_parallel, 10.18.11, 11.13.3 | is_parallelogram, 10.18.10, 11.13.14 is_permu, 6.11.8 is_perpendicular, 10.18.12, 11.13.4 is_prime, 6.7.17 is_pseudoprime, 6.7.16 is_rectangle, 10.18.7 is_rhombus, 10.18.9, 11.13.13 is_square, 10.18.8, 11.13.12 ismith, 6.57.14 isobarycenter, 10.8.10, 11.4.6 isobarycentre, 10.8.10, 11.4.6 isom, 6.58.1 isopolygon, 10.12.2, 11.9.2 isopolygone, 10.12.2, 11.9.2 isosceles_triangle, 10.10.3, 11.7.2 isPrime, 6.7.17 isprime, 6.7.17 ithprime, 6.7.19, 6.7.22 JordanBlock, 6.46.6 jacobi_linsolve, 6.63.7 jacobi_symbol, 6.7.31 jaune, 10.3.5 jordan, 6.57.5 jusqua, 9.4.24 jusque, 9.4.22 keep_algext, 6.66.6 keep_pivot, 6.63.3 ker, 6.53.12 kernel, 6.53.12 kill, 9.7.7 kolmogorovd, 8.4.48 kolmogorovt, 8.4.49, 8.5.5 LIST, 9.4.7 Li, 6.10.6 Line, 10.9.5 LineHorz, 3.10.2 LineTan, 3.10.4 LineVert, 3.10.3 LQ, 6.59.4 LSQ, 6.63.9 LU, 6.59.6 l1norm, 6.43.1, 6.56.4 l2norm, 6.43.1, 6.56.4 label, 9.4.26 labels, 10.3.3 lagrange, 6.28.33 lagrange, 6.28.33, 6.53.4, 6.57.7 laguerre, 6.30.3 laplace, 6.64.2 laplacian, 6.61.2 latex, 1.10.1 lcm, 6.7.5, 6.29.10 lcoeff, 6.28.11 ldegree, 6.28.10 lef, 6.5.5 left, 6.38.2, 6.39.6, 6.42.11, 6.62.4 left, 6.46.5 left_rectangle, 3.11.1, 3.12 legend, 10.3 legend, 10.3.3, 10.3.4 legende, 10.3, 10.3.4, 10.6, 10.16.1 legende, 10.3.3, 10.3.4 legendre, 6.30.1 legendre_symbol, 6.7.30 len, 6.42.18 length, 6.5.3, 6.42.18 lgcd, 6.7.4 lhs, 6.62.4 lieu, 10.20.1 ligne_chapeau_carre, 10.3.5 ligne_chapeau_plat, 10.3.5 ligne_chapeau_rond, 10.3.5 ligne_polygonale, 8.2.6 ligne_polygonale_pointee, 8.2.8 ligne_tiret, 10.3.5 ligne_tiret_point, 10.3.5 ligne_tiret_pointpoint, 10.3.5 ligne_trait_plein, 10.3.5 limit, 6.23.1, 6.23.2 limite, 6.23.1, 6.23.2 lin, 6.27.4 line, 3.10.1, 10.9.1, 11.5.1, 11.5.2 line_inter, 10.8.6, 11.4.3 line_paper, 10.2.7 line_segments, 11.16.8 line_width_1, 10.3.5 line_width_2, 10.3.5 line_width_8, 10.3.5 linear_interpolate, 8.2.9 linear_regression, 8.2.10 linear_regression_plot, 8.2.11 lineariser, 6.27.4 lineariser_trigo, 6.25.3 linfnorm, 6.56.4 linsolve, 6.63.6 list, 6.28.7, 6.28.28 list2exp, 6.2.5 list2mat, 6.42.45 listplot, 8.2.7 lll, 6.59.10 ln, 6.18.2 ln, 6.24.2, 6.25.26 lname, 6.66.2 lncollect, 6.27.5 lnexpand, 6.27.3 local, 9.1.2 locus, 10.20.1 log, 6.18.2 log, 6.24.2 log10, 6.18.2 logarithmic_regression, 8.2.14 logarithmic_regression_plot, 8.2.15 logb, 6.18.2 logistic_regression, 8.2.20 logistic_regression_plot, 8.2.21 loi_normale, 8.4.11 longueur, 10.16.2, 11.12.7 longueur2, 10.16.4, 11.12.8 losange, 10.11.3, 11.8.2 lpsolve, 6.54.6 lsq, 6.63.9 lu, 6.59.5 lu, 6.46.5 lvar, 6.66.3 M, 1.4.2 magenta, 10.3.5 makelist, 6.42.2, 6.42.42 makemat, 6.47.3 makesuite, 6.42.16 makevector, 6.42.17 map, 6.42.37, 6.42.38 maple2mupad, 1.12.2 maple2xcas, 1.12.1 maple_ifactors, 6.7.8 maple_mode, 1.7.5 markov, 8.4.56 mat2list, 6.42.46, 6.42.46 mathml, 1.11.1 matpow, 6.57.6 matrix, 6.45, 6.46.2, 6.47.4, 6.52 matrix, 6.42.37 matrix_norm, 6.56.4 max, 6.18.2 maximize, 6.55.1 maxnorm, 6.43.1 mean, 6.44, 6.51.5, 8.1.1 median, 6.44, 6.51.5, 8.1.5 median_line, 10.9.10 mediane, 10.9.10 mediatrice, 10.9.12, 11.6.2 member, 6.42.28 mgf, 8.4.53 mid, 6.5.4, 6.42.6, 6.42.6 middle_point, 3.11.1, 3.12 midpoint, 6.39.7, 10.8.9, 11.4.5 milieu, 6.39.7, 10.8.9, 11.4.5 min, 6.18.2 minimax, 6.55.3 minimize, 6.55.1 minor_det, 6.53.4 minus, 6.16.2, 6.41.5 mkisom, 6.58.2 mksa, 5.1.4 mod, 6.7.12, 6.16.2, 6.36 modgcd, 6.29.9 mods, 6.7.12 moustache, 6.44, 6.51.5, 8.1.12 moyenne, 6.44, 6.51.5, 8.1.1 mRow, 6.50.8 mRowAdd, 6.50.9 mul, 6.42.36 mult_c_conjugate, 6.12.9 mult_conjugate, 6.14.9 multinomial, 8.4.7 multinomial, 6.42.43, 6.46.3 multiplier_conjugue, 6.14.9 multiplier_conjugue_complexe, 6.12.9 mupad2maple, 1.13.2 mupad2xcas, 1.13.1 NewFold, 2.6.3 NUM, 9.4.7 Nullspace, 6.53.13 nCr, 6.8.2 ncols, 6.51.8 nDeriv, 4.3.2 negbinomial, 8.4.4 negbinomial_cdf, 8.4.5 negbinomial_icdf, 8.4.6 newList, 6.42.40 newMat, 6.46.2 newton, 4.3.1 newton_solver, 4.5.4 newtonj_solver, 4.6.4 nextperm, 6.11.3 nextprime, 6.7.20 nInt, 4.3.3 nodisp, 2.5.13, 10.4, 10.5 noir, 10.3.5 nop, 6.40.6 nops, 6.42.18 norm, 6.43.1, 6.56.4 normal, 6.14.16, 6.35.1, 6.35.2, 6.35.3, 6.35.4, 6.35.9 normal_cdf, 8.4.12 normal_icdf, 8.4.13 normald, 8.4.11 normald, 6.42.43, 6.46.3 normald_cdf, 8.4.12 normald_icdf, 8.4.13 normalize, 6.12.7, 6.43.2, 10.16.18 normalize, 3.20, 3.22 normalt, 8.5.2 not, 6.2.3 nPr, 6.8.4 nprimes, 6.7.18 nrows, 6.51.7 nSolve, 4.4 nstep, 3.7, 10.3.3 nuage_points, 8.2.4 nullspace, 6.53.12 numer, 6.9.3, 6.32.2 Output, 9.4.12 Ox_2d_unit_vector, 10.2.3 Ox_3d_unit_vector, 11.3.1 Oy_2d_unit_vector, 10.2.3 Oy_3d_unit_vector, 11.3.1 Oz_3d_unit_vector, 11.3.1 octaedre, 11.17.3 octahedron, 11.17.3 odd, 6.7.15 odeplot, 3.21, 3.23 odesolve, 4.3.5, 4.3.6 of, 6.42.37 op, 6.17.3, 6.38.2, 6.39.6, 6.42.16 open_polygon, 10.12.4, 11.9.4 or, 6.2.3 ord, 6.5.7 order_size, 6.37.2, 6.37.3 ordinate, 10.15.3, 11.12.2 ordonnee, 10.15.3, 11.12.2 orthocenter, 10.8.8 orthocentre, 10.8.8 orthogonal, 11.5.8, 11.6.4 osculating_circle, 7.5.3 output, 9.4.12 Pause, 9.7.10 Psi, 6.10.17 p1oc2, 6.11.12 p1op2, 6.11.10 pa2b2, 6.7.28 pade, 6.37.7 papier_ligne, 10.2.7 papier_pointe, 10.2.6 papier_quadrille, 10.2.8 papier_triangule, 10.2.9 parabola, 10.14.3, 11.11.3 parabole, 10.14.3, 11.11.3 parallel, 10.9.7, 11.5.6 parallele, 10.9.7, 11.5.6 parallelepiped, 11.16.3 parallelepipede, 11.16.3 parallelogram, 10.11.5, 11.8.4 parallelogramme, 10.11.5, 11.8.4 parameq, 10.15.8, 11.12.6 paramplot, 3.16, 3.16.2, 11.15.6 parfrac, 6.25.26, 6.32.9 pari, 6.7.4, 6.7.17, 6.9.11 part, 6.14.27 partfrac, 6.32.9 partfrac, 6.25.26, 6.32.9 pas, 9.4.22 pcar, 6.57.7 pcar_hessenberg, 6.57.8 pcoef, 6.28.25 pcoeff, 6.28.25 pente, 10.16.12 pente, 10.9.1, 10.16.12 penteen, 10.16.13 penteenbrut, 10.16.13 perimeter, 10.16.10 perimeterat, 10.16.11 perimeteratraw, 10.16.11 perimetre, 10.16.10 perimetreen, 10.16.1, 10.16.11 perimetreenbrut, 10.16.1, 10.16.11 perm, 6.8.4 perminv, 6.11.15 permu2cycles, 6.11.4 permu2mat, 6.11.7, 6.59.5 permuorder, 6.11.17 perpen_bisector, 10.9.12, 11.6.2 perpendiculaire, 10.9.8, 11.5.7, 11.6.5 perpendiculaire_commune, 11.5.9 perpendicular, 10.9.8, 11.5.7, 11.6.5 peval, 6.28.13 phi, 6.7.29 pi, 6.1 piecewise, 2.5.2 pivot, 6.63.5 plan, 11.6.1 plan, 3.21 plane, 11.6.1 plane, 3.21 playsnd, 12.1.3 plot, 3.8 plot3d, 3.9 plotarea, 3.12, 10.16.7 plotcontour, 3.13 plotdensity, 3.14 plotfield, 3.20, 3.23 plotfunc, 3.7, 6.22.2 plotimplicit, 3.15 plotinequation, 3.11 plotlist, 8.2.7 plotode, 3.21, 3.23 plotparam, 3.16, 3.16.2 plotpolar, 3.18 plotseq, 3.19, 6.15.4 plus_point, 10.3.5 pmin, 6.13.2, 6.57.9 pmin, 6.57.7 point, 10.8.2, 11.4.1 point, 10.3.3, 10.3.3 point2d, 10.8.4 point3d, 11.4.2 point_carre, 10.3.5 point_croix, 10.3.5 point_div, 10.19.1 point_etoile, 10.3.5 point_invisible, 10.3.5 point_losange, 10.3.5 point_milieu, 3.11.1, 3.12 point_plus, 10.3.5 point_point, 10.3.5 point_polaire, 10.8.5 point_triangle, 10.3.5 point_width_1, 10.3.5 point_width_2, 10.3.5 point_width_8, 10.3.5 poisson, 8.4.8 poisson, 6.42.43, 6.46.3 poisson_cdf, 8.4.9 poisson_icdf, 8.4.10 polaire, 10.19.5 polaire_reciproque, 10.19.6 polar, 10.19.5 polar_coordinates, 10.15.6 polar_point, 10.8.5 polarplot, 3.18 pole, 10.19.5 poly1, 6.28.1 poly2symb, 6.28.3, 6.28.4 polyEval, 6.28.13 polyedre, 11.16.5 polygon, 10.12.3, 11.9.3 polygone, 10.12.3, 11.9.3 polygone_ouvert, 10.12.4, 11.9.4 polygonplot, 8.2.6 polygonscatterplot, 8.2.8 polyhedron, 11.16.5 polynom, 6.37.2, 6.37.3 polynom, 6.25.26, 6.28.7, 6.28.27, 6.28.29 polynomial_regression, 8.2.16 polynomial_regression_plot, 8.2.17 poslbdLMQ, 6.33.6 posubLMQ, 6.33.5 potential, 6.61.6 pour, 9.4.22 pow2exp, 6.27.7 power_regression, 8.2.18 power_regression_plot, 8.2.19 powermod, 6.35.10 powerpc, 10.13.8 powexpand, 6.27.6 powmod, 6.35.10 prepend, 6.42.22 preval, 6.14.26 prevperm, 6.11.2 prevprime, 6.7.21 primpart, 6.28.16 print, 9.4.9 printpow, 9.4.11 prism, 11.16.4 prisme, 11.16.4 product, 6.42.36, 6.48.6, 6.48.8 produit_scalaire, 6.43.7 projection, 10.17.8, 11.14.8 proot, 4.8 propFrac, 6.9.2 propfrac, 6.9.2, 6.32.8 psrgcd, 6.29.9 ptayl, 6.28.22 puissance, 10.13.8 purge, 2.5.10, 6.26.1 pyramid, 11.16.2 pyramide, 11.16.2 QR, 6.59.3 Quo, 6.29.3, 6.36.1 q2a, 6.60.1 qr, 6.59.2 quadrant1, 10.3.4 quadrant2, 10.3.4 quadrant3, 10.3.4 quadrant4, 10.3.4 quadrilateral, 10.11.6, 11.8.5 quadrilatere, 10.11.6, 11.8.5 quadrique, 6.60.8 quadrique_reduite, 6.60.9 quand, 2.5.2 quantile, 6.44, 6.51.5, 8.1.9 quartile1, 6.44, 8.1.7 quartile3, 6.44, 8.1.8 quartiles, 6.44, 6.51.5, 8.1.6 quest, 2.5.14 quo, 6.29.2, 6.35.5 quorem, 6.29.6, 6.35.7 quote, 6.5.1, 6.14.5 RandSeed, 8.3.1 REDIM, 6.50.2 REPLACE, 6.50.3 Rem, 6.29.5, 6.36.2 Rref, 6.36.7 r2e, 6.28.3, 6.28.4 radical_axis, 10.13.9 radius, 10.16.15 rand, 6.8.5, 8.3.2, 8.3.2, 8.3.2, 8.3.2 randbinomial, 8.3.3 randexp, 8.3.7 randint, 8.3.2 randMat, 6.46.3, 8.3.8 randmarkov, 8.4.57 randmatrix, 6.46.3, 8.3.8 randmultinomial, 8.3.4 randNorm, 8.3.6 randnorm, 8.3.6 random, 8.3.2, 8.3.2, 8.3.2, 8.3.2 randPoly, 6.28.30 randperm, 6.11.1 randpoisson, 8.3.5 randpoly, 6.28.30 randseed, 8.3.1 randvector, 6.42.43 range, 6.42.41 rank, 6.53.6 ranm, 6.28.32, 6.46.3, 8.3.8 ranv, 6.42.43 rassembler_trigo, 6.25.5 rat_jordan, 6.57.4 rational, 9.4.5 rational, 6.25.27 rational_det, 6.53.4 rationalroot, 6.33.7 ratnormal, 6.14.19 rayon, 10.16.15 rdiv, 6.10.3 re, 6.12.2 read, 2.6.8, 9.5.1 readrgb, 12.2.2 readwav, 12.1.1 real, 2.5.7, 6.12.2 real, 6.25.27 realroot, 6.33.2 reciprocation, 10.19.6 rectangle, 10.11.4, 11.8.3 rectangle_droit, 3.11.1, 3.12 rectangle_gauche, 3.11.1, 3.12 rectangular_coordinates, 10.15.5 red, 10.3.5 redim, 6.50.5 reduced_conic, 6.60.7 reduced_quadric, 6.60.9 ref, 6.63.2 reflection, 10.17.3, 11.14.3 regroup, 6.14.15 regrouper, 6.14.15 rem, 6.29.4, 6.35.6 remain, 6.7.12 remove, 6.42.27 rempli, 10.3.3, 10.3.5 reorder, 6.28.31 repeat, 9.4.24 repere_2d, 10.2.4 repere_3d, 11.3.2 repeter, 9.4.24 replace, 6.50.6 residue, 6.37.6 resoudre, 3.10.7, 6.14.11, 6.61.1, 6.62.6, 9.4.18 resoudre_dans_C, 6.62.7 resoudre_systeme_lineaire, 6.63.6 restart, 2.5.11 resultant, 6.29.19 retourne, 9.1.2 return, 9.1.2 reverse_rsolve, 6.63.10 revert, 6.37.5 revlist, 6.42.12 rhombus, 10.11.3, 11.8.2 rhombus_point, 10.3.5 rhs, 6.62.5 right, 6.5.5, 6.38.2, 6.39.6, 6.42.11, 6.62.5 right, 6.46.5 right_rectangle, 3.11.1, 3.12 right_triangle, 10.10.4 risch, 6.21.2 rm_a_z, 2.4.5 rm_all_vars, 2.4.6 rmbreakpoint, 9.7.5 rmwatch, 9.7.3 romberg, 4.3.3 gauss15, 3.11.1 rombergm, 3.11.1 rombergt, 3.11.1 root, 6.10.4 rootof, 6.28.23 roots, 6.28.24 rotate, 6.42.13 rotation, 10.17.4, 11.14.4 rouge, 10.3.5 round, 6.18.2 row, 6.49.2 row, 6.42.30, 6.42.31, 6.42.32, 6.42.33, 6.51.1, 6.51.2, 6.51.3, 6.51.4 rowAdd, 6.50.7 rowDim, 6.51.7 rowdim, 6.51.7 rowNorm, 6.56.2 rownorm, 6.56.2 rowSwap, 6.50.10 rowspace, 6.53.15 rowswap, 6.50.10 rref, 6.35.17, 6.63.3 rsolve, 6.15.3 SCALE, 6.50.8 SCALEADD, 6.50.9 SCHUR, 6.57.12 SetFold, 2.6.4 Si, 6.10.8 SortA, 6.42.24 SortD, 6.42.25 STR, 9.4.7 Store, 2.5.2, 9.4.17 SVD, 6.59.9 SVL, 6.59.7 saisir, 9.4.2 saisir_chaine, 9.4.2 sample, 8.3.2 sans_factoriser, 3.15 scalar_product, 6.43.7 scalarProduct, 6.43.7 scale, 6.50.8 scaleadd, 6.50.9 scatterplot, 8.2.4 sec, 6.25.1 secant_solver, 4.5.5 segment, 10.9.3, 10.9.4, 11.5.4 segment, 10.13.3 select, 6.42.26 semi_augment, 6.50.13 seq, 6.40.5, 6.42.37, 9.4.23 seq[], 6.40.1, 6.42.16 seqplot, 3.19 seqsolve, 6.15.2 series, 6.37.3, 6.37.4 set[], 6.41.1 set[], 6.25.26 shift, 6.42.14 shift_phase, 6.25.4 shuffle, 6.11.1 si, 9.4.19 sign, 6.18.2 signature, 6.11.14 similarity, 10.17.6, 11.14.6 similitude, 10.17.6, 11.14.6 simp2, 6.9.6, 6.32.6 simplex_reduce, 6.54 simplifier, 6.14.17, 6.25.6 simplify, 6.14.17, 6.25.6 simpson, 3.11.1 simult, 6.63.4 sin, 6.25.1 sin, 6.24.2, 6.25.26 sin2costan, 6.25.15 sincos, 6.25.13 sincos, 6.25.26 single_inter, 10.8.6, 11.4.3 sinh, 6.18.2 sinon, 9.4.19 size, 6.5.3, 6.42.18 sizes, 6.42.19 slope, 10.16.12 slope, 10.9.1, 10.16.12 slopeat, 10.16.13 slopeatraw, 10.16.13 smith, 6.57.15 smod, 6.7.12 snedecor, 8.4.23 snedecor_cdf, 8.4.24 snedecor_icdf, 8.4.25 snedecord, 8.4.23 solid_line, 10.3.5 solve, 3.10.7, 6.14.11, 6.61.1, 6.62.6, 9.4.18 sommet, 6.17.3, 6.38.2, 6.39.6 sommets, 10.8.13, 11.16.1, 11.16.6 sommets_abc, 10.8.13 sommets_abca, 10.8.14 sort, 6.42.23 sorta, 6.42.24 sortd, 6.42.25 soundsec, 12.1.4 specnorm, 6.56.4 sphere, 11.15.4 spline, 6.28.34 split, 6.14.10 sq, 6.18.2 sqrfree, 6.28.19 sqrt, 6.18.2 sqrt, 6.14.11 square, 10.11.2, 11.8.1 square_point, 10.3.5 srand, 8.3.1 sst, 9.7.1 sst_in, 9.7.1 star_point, 10.3.5 stdDev, 6.44, 8.1.3 stddev, 6.44, 6.51.5, 8.1.2 stddevp, 6.44, 8.1.3 steffenson_solver, 4.5.6 sto, 2.5.2, 9.4.17 string, 6.5.14, 9.4.5, 9.5.7 string, 6.25.26 student, 8.4.15 student_cdf, 8.4.16 student_icdf, 8.4.17 studentd, 8.4.15 studentt, 8.5.3 sturm, 6.29.15 sturmab, 6.29.16 sturmseq, 6.29.17 style, 10.3.3 subMat, 6.49.3 subs, 6.14.23 subsop, 6.42.15, 6.50.1 subst, 6.14.21 substituer, 6.14.21 subtype, 9.4.6 sum, 6.21.3, 6.42.34, 6.48.4 sum_riemann, 6.21.4 supposons, 2.5.7 suppress, 6.42.8 surd, 6.18.2 svd, 6.59.8 svl, 6.59.7 swapcol, 6.50.11 swaprow, 6.50.10 switch, 9.4.21 switch_axes, 10.2.2 sylvester, 6.29.18 symb2poly, 6.28.5, 6.28.6 symbol, 6.25.27 symetrie, 10.17.3, 11.14.3 syst2mat, 6.63.1 TeX, 1.10.1 TRUE, 6.2.1 table, 6.45, 6.52 table_fonction, 6.15.1, 6.19.1, 6.22.2 table_suite, 6.15.4 tablefunc, 6.15.1, 6.19.1, 6.22.2 tableseq, 6.15.4 tabvar, 6.19.3 tail, 6.5.4, 6.42.10 tan, 6.25.1 tan, 6.25.26 tan2cossin2, 6.25.18 tan2sincos, 6.25.14 tan2sincos2, 6.25.17 tangent, 3.10.5, 10.9.9, 11.6.3 tangente, 3.10.5 tanh, 6.18.2 tantque, 9.4.25 taux_accroissement, 6.20.2 taylor, 6.37.2, 6.37.4 tCollect, 6.25.5 tchebyshev1, 6.30.4 tchebyshev2, 6.30.5 tcoeff, 6.28.12 tcollect, 6.25.5 tExpand, 6.24.1 tetraedre, 11.16.2 tetraedre_centre, 11.17.1 tetrahedron, 11.16.2 texpand, 6.24.1 textinput, 9.4.2 then, 9.4.19 thickness, 10.3 thickness, 10.3.3 throw, 9.7.13 time, 1.2 title, 10.3.3 titre, 10.3.3 tlin, 6.25.3 tpsolve, 6.54.7 trace, 6.53.3, 10.20.3 tracer_aire, 3.12, 10.16.7 trames, 3.24, 10.3.3 tran, 6.53.1 translation, 10.17.2, 11.14.2 transpose, 6.53.1 trapeze, 3.11.1, 3.12 trapezoid, 3.11.1, 3.12 triangle, 10.10.2, 11.7.1 triangle_equilateral, 10.10.5, 11.7.4 triangle_isocele, 10.10.3, 11.7.2 triangle_paper, 10.2.9 triangle_point, 10.3.5 triangle_rectangle, 10.10.4, 11.7.3 trig, 6.24.2 trig2exp, 6.25.22 trigcos, 6.25.24 trigexpand, 6.25.2 trigsin, 6.25.23 trigtan, 6.25.25 trn, 6.53.7 true, 6.2.1 trunc, 6.18.2 truncate, 6.28.26 try, 9.7.12 tsimplify, 6.25.4, 6.27.9 tstep, 10.3.3 tuer, 9.7.7 tuple, 6.41.6 type, 9.4.5 UTPC, 8.4.22 UTPF, 8.4.26 UTPN, 8.4.14 UTPT, 8.4.18 ufactor, 5.1.6 ugamma, 6.10.14 unapply, 6.17.2 unarchive, 2.5.5 unfactored, 3.15 uniform, 8.4.39 uniform_cdf, 8.4.40 uniform_icdf, 8.4.41 uniformd, 8.4.39 uniformd_cdf, 8.4.40 uniformd_icdf, 8.4.41 union, 6.16.2, 6.39.8, 6.41.3 unitV, 6.12.7, 6.43.2 unquote, 6.14.6 until, 9.4.24 user_operator, 6.16.3 usimplify, 5.1.7 ustep, 10.3.3 VAR, 9.4.7 VARS, 2.4.5, 2.4.6, 2.6.7 VAS, 6.33.3 VAS_positive, 6.33.4 valuation, 6.28.10 vandermonde, 6.46.8 var, 9.1.2 variance, 6.44, 6.51.5, 8.1.4 vecteur, 10.9.6, 11.5.5 vecteur_unitaire_Ox_2d, 10.2.3 vecteur_unitaire_Ox_3d, 11.3.1 vecteur_unitaire_Oy_2d, 10.2.3 vecteur_unitaire_Oy_3d, 11.3.1 vecteur_unitaire_Oz_3d, 11.3.1 vector, 9.4.5, 10.9.6 version, 0.2, 0.2.6 vert, 10.3.5 vertices, 10.8.13 vertices_abc, 10.8.13 vertices_abca, 10.8.14 vpotential, 6.61.7 vstep, 10.3.3 WAIT, 9.7.11 watch, 9.7.2 weibull, 8.4.45 weibull_cdf, 8.4.46 weibull_icdf, 8.4.47 weibulld, 8.4.45 weibulld_cdf, 8.4.46 weibulld_icdf, 8.4.47 when, 2.5.2 while, 9.4.25 white, 10.3.5 widget_size, 1.7.1, 1.7.2 wilcoxonp, 8.4.50 wilcoxons, 8.4.51 wilcoxont, 8.4.52 write, 9.5.2 writergb, 12.2.4 writewav, 12.1.2 wz_certificate, 6.8.6 xor, 6.2.3 xstep, 3.7, 10.3.3 xyztrange, 1.6.2, 3.4, 10.2.10 yellow, 10.3.5 ystep, 3.7, 10.3.3 Zeta, 6.10.18 zeros, 6.14.13 zip, 6.42.39 zstep, 3.7, 10.3.3 ztrans, 6.65.1

# Pour commencer

## 0.1 Style de l’index et notations

- Notes concernant l’index de ce manuel
- Remarques concernant les notations

## 0.2 La librairie giac et ses interfaces sous Unix

giac est la bibliothèque C++ de fonctions de calcul formel.
Pour connaitre le numéro de la version de giac que vous utilisez, on tape :

version()

On obtient par exemple :

"giac 1.1.0, (c) B. Parisse and R. De Graeve, Institut Fourier, Universite de Grenoble I"

Sous Unix, on peut utiliser cette bibliothèque de calcul formel avec plusieurs interfaces :

- Xcas interface qui est une feuille de calcul permettant d’avoir des niveaux de différentes natures (calcul formel, géométrie dynamique et formelle, tableur formel, dessin tortue, langage de programmation etc...),
- icas ou giac interface en ligne de commande,
- texmacs,
- emacs,
- un programme C++,
- un module C++ pour créer de nouvelles fonctions.

- Interface Xcas
- Interface en ligne de commande
- Interface texmacs
- Interface emacs
- Utilisation dans un programme ou un module C++
- Savoir avec quelle version on travaille : version giac

# Chapitre 1 L’interface Xcas

## 1.1 Mise en route de l’interface Xcas

- Sous Unix
- Sous Windows
- Sous MacOS

## 1.2 Les différents niveaux d’entrée

Cette interface va vous permettre d’ouvrir plusieurs sessions de calculs : ces sessions ont plusieurs niveaux d’entrée, sont indépendantes les unes des autres et peuvent être pliée ou dépliée.
Chaque session peut contenir des niveaux d’entrée numérotés qui contiendront :

- soit une ligne de commandes pour exécuter des commandes de Xcas ou pour exécuter des programmes avec un emplacement pour les sorties intermédiaires qui seront écrites en bleu et un emplacement pour la réponse (que l’on obtient si on a validé la commande avec Enter). L’emplacement pour la réponse est un éditeur d’expressions, ou un écran graphique selon la nature de la commande (commande renvoyant une expression ou un graphique). Lorsqu’on a, sur un même niveau, plusieurs commandes separées par un point virgule ou par une virgule, ces commandes sont faites es unes après les autres et c’est la nature de la dernière commande qui détermine la nature de la sortie. Par exemple, la réponse à la ligne : a:=1;cercle(0,a) sera un cercle de centre 0 et de rayon 1.
  Les instructions print d’un programme ou l’évaluation du temps d’un long calcul seront écrites en bleu. L’évaluation du temps est approximatif, si vous voulez plus de précision sur votre temps de calcul, il faut utiliser la commande time qui renvoie le temps mis pour l’évaluation en secondes.
  time a comme argument une commande et renvoie deux temps (le temps CPU et le temps chronomèté en secondes) sous linux et seulement le temps CPU sur mac et win.
  On tape par exemple :
  time(factor(x`^`10-1))
  On obtient en mode réel et sous Linux :
  [0.0022,0.0053107029]
  On tape par exemple :
  time(factor(x`^`100-1))
  On obtient en mode complexe et sous Linux :
  [1.93,1.371075654]
  Vous remarquerez alors : Temps mis pour l’évaluation : 1.93 en vert. Le premier nombre est le temps CPU (temps mis par le processeur pour faire uniquement ces calculs, en seconde), le deuxième nombre est le temps mis pour faire le calcul comme si on chronomètrait. Pour les commandes qui donnent un résultat rapidement, elles sont exécutées plusieurs fois et la moyenne de temps de calcul est renvoyée.
  On a aussi time() sans argument, qui renvoie le temps de calcul depuis le début de la session, on tape :
  time()
  On obtient par exemple :
  2.37
- soit un éditeur d’expressions,
- soit un niveau de géométrie 2-d, son écran graphique, ses menus, ses boutons et ses lignes de commandes,
- soit un niveau de géométrie 3-d, son écran graphique, ses menus, ses boutons et ses lignes de commandes,
- soit un niveau de dessin tortue, son écran graphique, son éditeur de programmes et ses lignes de commandes,
- soit un tableur et son écran graphique,
- soit un éditeur de programmes,
- soit un commentaire,
- soit un regroupement de ces niveaux en un groupe.

Au sein d’une même session, les différents niveaux d’entrée ne sont pas indépendants, par exemple, une variable définie dans une ligne de commandes pourra être utilisée en géométrie ou dans le tableur.
L’ensemble de toutes ces sessions constitue votre espace de travail.
Le niveau actif est celui où se trouve le curseur et le niveau selectionné est obtenu quand on clique sur son numéro, numéro qui sécrit alors sur fond noir.
On peut déplacer un niveau ou un groupe de niveau dans une session, ou le recopier dans une autre session.
Vous pouvez , à tout moment insérer un nouveau niveau ou encore changer l’entrée d’un niveau : Enter valide le changement de ce niveau et sélectionne l’entrée suivante, mais attention les niveaux suivants ne seront pas recalculés. Il est toutefois possible après une modification de réexécuter, soit tous les niveaux, soit les niveaux situés après la modification (menu Edit puis Executer session ou Executer en-dessous).
Il faut savoir qu’il suffit de faire :

- Alt+c pour ouvrir un niveau de type ligne de commentaires,
- Alt+e pour ouvrir un niveau de type éditeur d’éxpressions,
- Alt+n pour ouvrir un niveau de type ligne de commandes,
- Alt+t pour ouvrir un niveau de type tableur,
- Alt+p pour ouvrir un niveau de type éditeur de programmes.
- Alt+g pour ouvrir un niveau de type écran de géométrie plane,
- Alt+h pour ouvrir un niveau de type écran de géométrie 3,
- Alt+d pour ouvrir un niveau de type écran de dessin tortue,

## 1.3 Que voit-on au démarrage ?

Vous obtenez au démarrage l’ouverture d’une session avec de haut en bas :

1. La barre du menu général Fich Edit Cfg... contenant les fonctions de Xcas et ce qu’il faut pour les configurer et pour sauver ou charger une session de travail.
2. Une ligne des noms de sessions qui contiendra les noms (ou Unnamed si elles n’ont pas de noms) de vos différentes sessions. Au démarrage il n’y a qu’une session qui n’a pas de nom donc sur cette ligne il y a Unnamed,
3. Un bandeau général avec de gauche à droite :
   - Un bouton ? permettant d’ouvrir le sous menu Index du menu Aide. Il sert aussi de touche de tabulation, car il ouvre le menu Aideà l’endroit indiqué par la ligne de commandes où figure le curseur,
   - Un bouton Save, sur fond rose, servant à sauver dans un fichier la session de calcul. Si on clique sur Save, on vous demande la première fois un nom de fichier d’extension .xws Quand la session a été sauvée le fond du bouton Save devient vert et Unnamed est remplacé par le nom de fichier, par exemple par session1.xws. Notez que les noms des sessions ont comme extension .xws et cette extension est rajoutée automatiquement si vous l’avez oubliée.
   - Un bouton Config : exact real RAD 12 xcas 12.65M ou
     Config essai.xws : exact real RAD 12 xcas 12.65M si on a sauvé la session sous le nom essai.xws.
     Ce bouton "ligne d’état" ouvre la fenêtre permettant de configurer le calcul formel et rappelle la configuration choisie : dans l’exemple, on est en mode exact et réel, les angles sont exprimés en radian, les calculs numériques sont faits avec 12 chiffres significatifs, le style de programmation est xcas et enfin les recources en mémoire demandées par le calcul sont de 12.65M (c’est la taille mémoire en Mégabits utilisée par Xcas).
     Sur cette "ligne d’état", le mode numérique sera noté approx et le mode complexe sera noté :
     - cplx si les variables ne sont pas considérées comme complexes (on a alors re(z)=z et conj(z)=z),
     - CPLX si les variables sont considérées comme complexes (on a alors re(z)=re(z) et im(z)=im(z) qui seront notés respectivement R(z) et I(z) dans la réponse).
     Notez que ce bouton "ligne d’état" ouvre la fenêtre de configuration qui est aussi obtenue à partir du menu : Cfg▸Configuration du CAS,
   - Un bouton rouge STOP pour arrêter un calcul trop long,
   - Un bouton Kbd, servant à faire apparaitre ou disparaitre un clavier scientifique. On remarquera sur ce clavier :
     - la touche cmds qui sert à faire apparaitre ou disparaitre une barre de boutons contenant les commandes du CAS, appelée bandeau du CAS. Dans le bandeau, on remarquera la touche kbd qui sert à faire apparaitre ou disparaitre le clavier.
     - la touche msg, servant à faire apparaitre ou disparaitre une fenêtre de messages facilement lisible grâce à sa barre de scroll. Cette fenêtre vous donne des messages comme Success pour dire que tout s’est bien passé, ou affiche une aide succinte sur la commande choisie à partir du menu général, ou ce qu’il faut insérer dans votre fichier LATEXpour insérer la figure sauvée, par exemple, sous le nom session1.eps :
       Use `\includegraphics[width=\textwidth]{session1}`
       inside your latex document, with header `\usepackage{graphicx}`
     - la touche abc, servant à faire apparaitre ou disparaitre un clavier contenant les lettres en minuscule, par ordre alphabétique, ainsi que des signes de ponctuation. On notera qu’en appuyant sur la touche α on obtient un clavier contenant les lettres grecques et qu’en appuyant sur la touche Maj transforme le clavier avec des lettres en majuscule.
     - la touche ◂ qui permet de supprimer ce que l’on a sélectionné,
     - la touche coller qui permet de recopier ce que l’on a sélectionné,
     - la touche verte ↩ qui sert de touche Enter.
     - la touche situé tout en haut à droite, permettant de faire disparaitre le clavier Kbd.
   - Un bouton times situé tout à droite, permettant de fermer la session en cours. Cela provoquera éventuellement un avertissement si les dernières modifications n’ont pas été sauvées.
4. Un premier niveau ou les deux premiers niveaux, selon le démarrage choisi.

## 1.4 Les menus

- Le menu Fich
- Le menu Edit
- Le menu Cfg
- Le menu Aide
- Les menus des commandes de calcul
  - Déscription des menus des commandes de calcul
  - Rajouter un menu
  - Supprimer un menu

## 1.5 Comment bien gérer son espace de travail

- Pour sélectionner ou désélectionner un niveau
- Pour remplir les niveaux

## 1.6 Les différentes configurations

Les différentes configurations se font :

- pour la configuration du calcul formel avec le menu Cfg▸Configuration du CAS ou avec le bouton donnant la ligne d’état (c’est la ligne écrite à coté de Save et qui rappelle une partie de cette configuration).
- pour la configuration graphique avec le menu Cfg▸Configuration graphique .
- pour la configuration générale avec le menu Cfg▸Configuration generale.

- Configuration du Cas
- Configuration du graphique avec le menu :
  Cfg▸Configuration graphique
- Configuration générale

## 1.7 Les différentes configurations avec les commandes

- Le fichier .xcasrc
- La configuration générale et la fonction : widget_size
- La configuration du cas avec la fonction : cas_setup
- Nombres de chiffres significatifs : Digits DIGITS
- Choix du mode de langage Xcas ou Maple ou MuPad ou TI89 : maple_mode
- Choix de l’unité d’angle : angle_radian
- Choix du mode approximatif ou exact : approx_mode
- Choix du mode réel ou complexe : complex_mode
- Variables réelles ou complexes : complex_variables

## 1.8 L’aide

On peut avoir de l’aide sur les différentes fonctions de calcul formel de plusieurs façons. On peut cocher la case Aide HTML automatique de la configuration générale pour avoir l’ouverture de l’aide detailléeà chaque appel d’une fonction se trouvant dans les menus ou ne pas cocher cette case pour avoir de l’aide seulement lorqu’on le désire, toutefois une aide succincte apparait dans la ligne des messages à chaque appel d’une fonction se trouvant dans les menus. On peut avoir accès à l’aide générale ou à l’aide par fonction tout le temps (voir ci-dessous).

- Aide générale
- Aide sur une fonction : findhelp ou ?

## 1.9 Sauver et imprimer

Il est préférable de mettre les suffixe suivants :
.cxx (ou .map ou .mu ou .ti selon le mode) pour un script et par exemple,
.xws pour la session de travail,
.cxx pour une fonction,
.tab pour le tableur,
.tex pour le graphique en latex,
.eps pour le graphique et pouvoir ensuite inclure le fichier dans un texte en latex ou en postscipt,
.png pour le graphique et pouvoir ensuite inclure le fichier dans un texte en html.

- Pour sauver une session
- Pour sauver un tableur
- Pour sauver un programme
- Pour imprimer

## 1.10 Traduction Latex

- Traduction Latex d’une entrée : latex TeX
- Imprimer la session ou/et la convertir en un fichier Latex
- Traduction Latex d’un écran de géométrie
- Traduction Latex de l’écran DispG
- Traduction Latex de l’écran 3-d : graph3d2tex

## 1.11 Traduction Mathml

- Traduction Mathml d’une expression : mathml
- Traduction Mathml du tableur

## 1.12 Traduction de fichiers Maple en fichier Xcas ou Mupad

- Fichier Maple traduit en fichier Xcas : maple2xcas
- Fichier Maple traduit en fichier Mupad : maple2mupad

## 1.13 Traduction d’un fichier Mupad en un fichier Xcas ou Maple

- Fichier Mupad traduit en fichier Xcas : mupad2xcas
- Fichier Mupad traduit en fichier Maple : mupad2maple

# Chapitre 2 Saisie

## 2.1 Pour écrire un commentaire : Alt+c

On peut à tout moment faire apparaitre une ligne pour écrire un commentaire avec Alt+c. Le commentaire s’écrit sans utiliser de guillemets et apparait en vert. Le commentaire ne génère pas de réponse.
Le commentaire sert à commenter votre session.
Depuis un commentaire on peut ouvrir le navigateur à une adresse donnée On tape dans une ligne de commentaire :

Exercice 1

On obtient :

aucune réponse

Dans une ligne de commentaire, on peut ouvrir le navigateur à une adresse donnée : On tape dans une ligne de commentaire :

Pour plus d’info cf :
@www-fourier.ujf-grenoble.fr/ parisse/giac/doc/fr/casrouge/index.html

On obtient :

l’ouverture dans le navigateur de l’index du document sur l’algorithmique

Attention
Pour faire un commentaire dans un programme il faut utiliser la commande comment qui a comme argument une chaîne de caractères ou bien utiliser // qui doit etre suivi du commentaire et d’un retour à la ligne. Quand il y a un commentaire dans un programme, tout se qui se trouve entre // et le retour à la ligne n’est pas pris en compte par le programme.
On tape :

bs():={comment("bonjour"); return "Salut";}

On tape :

bs():={//"bonjour"
return "Salut";}

On obtient :

un programme ayant comme commentaire "bonjour"

## 2.2 L’éditeur d’expressions

Dans l’éditeur d’expressions, l’affichage ne se fait pas linéairement mais se fait en dimension 2d.
Quand on a mis une expression dans l’éditeur d’expressions, on peut facilement sélectionner des sous-expressions et appeler les fonctions des menus sur ces sous-expressions puis appuyer sur enter pour avoir la réponse en dessous de l’éditeur d’expressions ou encore évaluer la sélection dans l’éditeur d’expressions avec le bouton eval.
Dans l’éditeur d’expressions, on peut utiliser les raccourcis suivants sur la sélection de sous-expressions :
Ctrl+s pour la commande simplify
Ctrl+r pour la commande integrate

- Comment éditer une équation
- Comment sélectionner
- Comment éditer une chaîne de caractères
- Utilité de l’éditeur d’expressions

## 2.3 Les éditeurs de matrices et les tableurs

Il faut tout d’abord ouvrir un tableur avec Alt+t.
À chaque tableur est attaché un écran de géométrie, une barre de menu (Fich Edit Statistiques), des boutons (reeval,val,Save), deux cases (l’une donne le nom du fichier de sauvegarde et l’autre le nom de la cellule sélectionnée) et deux lignes (l’une contient une case de sélection et une ligne dite ligne de commandes qui sert soit à remplir la cellule sélectionnée, soit à afficher ce que l’on a mis dans la cellule sélectionnée, et l’autre est la ligne d’état qui rappelle la configuration du tableur et sert de bouton pour ouvrir un écran de configuration du tableur).

- Les sauvegardes d’un tableur
- Les menus d’un tableur
- La configuration d’un tableur
- Les boutons d’un tableur

## 2.4 Les commandes d’effacement

- Effacer dans le tableur
- Effacer l’écran DispG de géométrie : ClrGraph ClrDraw
- Effacer les écrans de géométrie : erase
- Effacer une ligne de commande : touche esc
- Effacer les noms des variables d’une seule lettre minuscule : rm_a_z
- Effacer toutes les variables : rm_all_vars

## 2.5 Les variables

- Le nom des variables et la variable CST
- L’affectation : = := => sto Store
- L’affectation par référence dans une variable désignant un élément d’une liste ou d’une matrice : =<
- L’incrémentation d’une variable : += -= *= /=
- Archiver et désarchiver des variables et leur contenu : archive unarchive
- Copier sans l’évaluer le contenu d’une variable : CopyVar
- Faire une hypothèse sur une variable : assume supposons
- Faire une hypothèse suppl’ementaire sur une variable : additionally
- Connaitre les hypothèses faites sur une variable : about
- Effacer le contenu d’une variable : purge DelVar del
- Effacer le contenu de toutes les variables : restart
- Accès aux réponses : ans(n)
- Pour ne pas afficher la réponse : nodisp :;
- Accès aux questions : quest(n)

## 2.6 Les répertoires

- Comment créer un répértoire sur vôtre disque dur
- Comment sauver un fichier dans un répértoire de vôtre disque dur
- Comment créer un répértoire de travail : NewFold
- Comment aller dans un répértoire de travail : SetFold
- Nom du répértoire en cours : GetFold
- Effacer un répértoire vide : DelFold
- Comment connaitre les variables et les répértoires créés : VARS
- Lire un fichier depuis Xcas : read

# Chapitre 3 Le graphique

## 3.1 Généralités

Si le graphe dépend d’une fonction utilisateur, il faut que la fonction soit définie lorsque le(s) paramètre(s) a (ont) une valeur formelle, ce qui peut se faire en testant le type du paramètre, comme dans l’exemple suivant : Je définis f avec le test du type du paramètre et g sans le test par :

    f(x):= {
      if (type(x)!=DOM_FLOAT) return 'f'(x);
      while(x>0){ x--; }
      return x;
    }:;
    g(x):= {
      while(x>0){ x--; }
      return x;
    }:;

Si je tape :
F:=plotfunc(f(x)) ou G:=plotfunc(g(x)) j’obtiens le même graphe. Le problème apparait lorsque x n’a pas de valeur et que l’on réutilise G.
Mais si on fait :
G:=plotfunc(g(x)) puis symetrie(droite(y=x),G) ou même simplement G on a l’erreur :
"Unable to eval test in loop : x>0.0 Error: Bad Argument Value"
parce que l’évaluation de g(x) ne peut pas se faire si x est formel.
Par contre, F:=plotfunc(f(x)) puis symetrie(droite(y=x),F) renvoie bien le symétrique du graphe par rapport à la première bissectrice grâce au test de la ligne :
if (type(x)!=DOM_FLOAT) return ’f’(x);. D’ou l’intérêt de rajouter le test.
Par contre on peut taper directement sans provoquer d’erreurs :
symetrie(droite(y=x),plotfunc(g(x))).
Explications
Il faut savoir que dans les réponses de certaines commandes (par exemple G:=plotfunc(g(x))) il va figurer l’expression formelle de g(x) (par exemple G contient expr("curve(group[pnt[x+(i)*g(x),x,x,-5.0,5.0125,0]...]))). Lors de l’évaluation de G il y aura une erreur car x+(i)*g(x) ne pourra pas être évalué puisque l’évaluation de g(x) provoque l’évaluation du test x>0 qui ne peut pas être évalué car x n’a pas de valeur ....d’où une erreur mais si dans la fonction figure le test : if (type(x)!=DOM_FLOAT) return ’g’(x); cela supprime l’évaluation de g(x) et donc l’erreur due au test x>0.
En effet, F:=plotfunc(f(x)) puis symetrie(droite(y=x),F) renvoie bien le symétrique du graphe par rapport à la première bissectrice grâce au test de la ligne :
if (type(x)!=DOM_FLOAT) return ’f’(x);.
Par contre on peut taper directement sans provoquer d’erreurs :
symetrie(droite(y=x),plotfunc(g(x)))

## 3.2 L’écran graphique et ses boutons

Un écran graphique 2-d ou 3-d s’ouvre automatiquement en réponse d’une commande graphique 2-d ou 3-d. À un écran graphique 2-d ou 3-d est attaché des boutons situés en haut et à droite de cet écran.
Un écran de géométrie plane s’ouvre avec les touches Alt+g : c’est un écran graphique 2-d interactif muni de lignes d’entrée, d’une barre de menus contenant les menus Fich Edit et d’un bouton Save. Cet écran graphique est interactif : on peut définir des points et des segments en cliquant avec la souris.
Un écran de géométrie 3-d s’ouvre avec les touches Alt+h : c’est un écran graphique 3-d muni de lignes d’entrée, d’une barre de menus contenant les menus Fich Edit et d’un bouton Save. Les boutons d’un écran graphique 2-d et 3-d sont les mêmes en apparence mais leurs contenus sont quelquefois différents :

- les flèches de couleur rouge servent à se promener sur l’axe des x,
- les flèches de couleur verte servent à se promener sur l’axe des y,
- les flèches de couleur bleue servent en 2-d à augmenter ou à diminuer l’échelle des y (pour faire un zoom selon les y), et en 3-d à se promener sur l’axe des z,
- les boutons in (resp out) permettent de faire des zooms c’est à dire augmente (resp diminue) l’échelle des x et des y,
- le bouton ⊥ permet d’avoir un repère orthonormé,
- le bouton cfg permet de changer de configuration (cf 3.4)
- le bouton ▸| permet de démarrer ou d’arrêter une animation,
- le bouton M permet avec ses menus
  - Voir d’avoir des menus simulant les boutons ci-dessus,
  - Trace d’intervenir sur une trace,
  - Animation d’intervenir sur une animation,
  - 3-d d’avoir différentes vues d’un graphique 3-d,
  - Export/Imprimer d’imprimer le graphique avec un fichier .eps ou de traduire le graphique en Latex.

## 3.3 La configuration de l’écran graphique

Avant de faire un tracé, il faut régler les différents paramètres de la configuration de l’écran graphique :
le menu Cfg▸Configuration graphique (cf section 1.6.2) règle les paramètres de tous les graphiques qui se feront lors de la session. On peut changer ensuite ses paramètres au coup par coup avec le bouton cfg attaché à chaque écran graphique (cf3.4).
Les commandes du cas qui ont comme réponses un graphique 2-d ou 3-d seront tapées dans une ligne d’entrée. Toutefois les commandes du cas qui ont comme réponses un graphique 2-d peuvent aussi être tapées soit dans une ligne d’entrée d’un écran de géométrie. Attention! Un écran de géométrie est un écran graphique interactif.
Les commandes graphiques se trouvent dans le sous-menu Graphic du menu Cmds.
Les commandes de géométrie se trouvent dans le menu Geo.

## 3.4 Configuration graphique avec cfg

Le bouton cfg permet de régler la fenêtre graphique.

- WX-,...,WZ désignent les coordonnées de ce qui est visible. Pour effacer facilement les cases, on peut mettre les plages en surbrillance en utilisant soit Shift+Tab qui met en surbrillance la plage qui précède celle où se trouve le curseur, soit Ctrl+Tab qui met en surbrillance la plage qui est suit celle où se trouve le curseur.
- Pixels en 2-d, permet de définir les valeurs de X-tick et de Y-tick en prenant comme unité le pixel,
- X-tick, Y-tick pour modifier l’écartement des graduations mises sur les axes x et y, l’unité est le pixel si Pixels a été coché ou sinon l’unité depent des unités définies par WX-,WX+,WY-,WY+,
- ry,rz,rx en 3-d, sont les valeurs en degrés des angles d’Euler : ces valeurs permettent de retrouver facilement la position que l’on a choisie pour le repère (cf 11.2),
- Montrer les noms pour voir les noms des points ou des objets géométrique ou ne pas les voir,
- Autoname il faut mettre une lettre. Ainsi, au fur et à mesure que l’on clique dans l’écran de géométrie, les noms des points seront définis automatiquement en commençant par cette lettre en sautant les points déjà définis,
- Montrer les axes pour voir les axes ou ne pas les voir,
- animate pour donner le temps d’affichage des objets lors d’une animations (en faisant bouger la souris à droite ou à gauche on augmente ou on diminue ce temps ou on tape un nombre),
- Round pour avoir les coordonnèes visibles arrondies automatiquement au dizaines,
- Default remet les paramètre choisis par défaut,
- Autoscale choisit les échelles de façon automatique et appropriée,
- Apply a le même effet que la touche enter (pour valider une valeur sans fermer la fenêtre cfg),
- OK pour valider et fermer la fenêtre cfg,
- Annuler pour annuler (annule cequi n’a pas été validé par enter ou Apply) et fermer la fenêtre cfg.

## 3.5 Pour transformer un graphique en un fichier Latex

Voir aussi : 1.10.3 et 1.10.5 Il faut employer la commande graph2tex("nom.tex") (ou pour un graphique 3-d graph3d2tex("nom.tex")) pour transformer tous les graphiques réalisés en le fichier Latex nom.tex.
Ce fichier pourra être visualisé seul ou bien inséré dans un autre fichier Latex en otant l’en tête `\documentclass{article}...\begin{document}`, et le `\end{document}` de la fin et de rajouter `\usepackage{pstricks}` dans l’en-tête du fichier dans lequel on l’insère.
Attention Dans ce fichier tous les graphiques seront superposés : pour n’avoir qu’un seul graphique, il faut supprimer les niveaux contenant les autres graphiques avant de faire graph2tex("nom.tex").

## 3.6 Graphe d’une matrice de transition probabiliste :
graphe_probabiliste

graphe_probabiliste a comme argument une matrice de transition probabiliste A ayant au plus 7x7 entrées. On peut rajouter en option la liste des positions des sommets du graph associé à la matrice A.
On tape :

graphe_probabiliste([[1/2,1/3,1/12,1/12],[1/3,1/2,1/6,0], [0,0,1/2,1/2],[1/4,1/4,1/4,1/4]])

On obtient :

On tape :

graphe_probabiliste([[1/2,1/3,1/12,1/12],[1/3,1/2,1/6,0], [0,0,1/2,1/2],[1/4,1/4,1/4,1/4], ["Gare","Campus","Bibli","Centre"]])

On obtient :

On tape :

graphe_probabiliste([[1/2,1/3,1/12,1/12],[1/3,1/2,1/6,0], [0,0,1/2,1/2],[1/4,1/4,1/4,1/4]],[0,1,i,1/2+2/3*i])

On obtient :

On tape :

graphe_probabiliste([[1/2,1/3,1/12,1/12],[1/3,1/2,1/6,0], [0,0,1/2,1/2],[1/4,1/4,1/4,1/4], ["Gare","Campus","Bibli","Centre"]], [0,1,i,1/2+2/3*i])

On obtient :

Si on ne met pas les "" autour d’un nom, si ce nom est le nom d’une variable qui contient une valeur c’est cette valeur que sera affichée sinon les noms s’afficheront sans "".
On peut aussi définir les points pour définir le graphe, par exemple, on tape dans un nieau de géométrie 2d :
:
A:=point(0);
B:=point(1);
C:=point(i);
D:=point(2/2+2i/3);
graphe_probabiliste([[1/2,1/3,1/12,1/12],[1/3,1/2,1/6,0], [0,0,1/2,1/2],[1/4,1/4,1/4,1/4]],[A,B,C,D])
On peut alors bouger les points A,B,C,D en mode pointeur.
On obtient après avoir bougé D :

## 3.7 Graphe d’une fonction : plotfunc funcplot DrawFunc Graph

- Graphe en 2-d
- Graphe en 3-d
- Graphe "3-d" avec les couleurs de l’arc en ciel
- Graphe en "4D"

## 3.8 Graphe 2-d pour compatibilité Maple : plot graphe

plot(f(x),x) trace la représentation graphique de y=f(x).
On tape :

plot(x`^`2-2,x)

On obtient :

la représentation graphique de y=x`^`2-2

On peut rajouter un paramètre pour indiquer le saut d’échantillonnage en x c’est à dire le pas en x que l’on veut utiliser pour faire le graphe. On tape :

plot(x`^`2-2,xstep=1)

ou encore

plot(x`^`2-2,x,xstep=1)

On obtient :

une ligne polygonale qui est la représentation grossière de y=x`^`2-2

On peut aussi spécifier le nombre de points d’échantillonage de la fonction à représenter en utilisant `nstep` à la place de `xstep`. Par exemple, on tape :

plot(x`^`2-2,x=-2..3,nstep=30)

## 3.9 Surface 3-d pour compatibilité Maple plot3d graphe3d

plot3d a trois arguments une fonction de deux variables (ou une expression de deux variables ou une liste de trois fonctions de deux variables ou encore une liste de trois expressions de deux variables) et les noms de ces deux variables.
plot3d trace la surface définie par le premier argument (soit z=f(x,y), soit x=f(u,v),y=g(u,v),z=h(u,v)).
On peut faire tourner ce graphique selon l’axe des x, l’axe des y ou l’axe des z. Pour cela, il faut cliquer avec la souris dans la fenêtre graphique en dehors du parallélépipéde servant à la représentation, puis faire bouger la souris (sans relacher son bouton) ou utiliser les touches x, X, y, Y, z et Z.
On tape :

plot3d(x*y,x,y)

On obtient :

La surface z=x*y

On tape :

plot3d([v*cos(u),v*sin(u),v],u,v)

On obtient :

Le cône x=v*cos(u),y=v*sin(u),z=v

Pour n’avoir qu’une portion de surface on peut indiquer l’intervalle de variation dans le deuxième et le troisème argument.
On tape :

plot3d([v*cos(u),v*sin(u),v],u=0..pi,v=0..3)

On obtient :

Une portion du cône x=v*cos(u),y=v*sin(u),z=v

## 3.10 Graphe d’une droite et les tangentes à un graphe

- Tracé d’une droite : line droite
- Tracé d’une droite horizontale en 2-d : LineHorz
- Tracé d’une droite verticale en 2-d : LineVert
- Tangente à un graphe en 2-d : LineTan droite_tangente
- Tangente en un point d’un graphe en 2-d : tangent tangente
- Tracé d’une droite donnée par un point et sa pente : DrawSlp
- Intersection d’un graphe en 2-d avec les axes

## 3.11 Représentation graphique d’inéquations à 2 variables : plotinequation inequationplot

plotinequation([f1(x,y)<a1,..,fk(x,y)<ak],[x=x1..x2,y=y1..y2]) trace la surface du plan définie par les inéquations à 2 variables :

f1(x,y)<a1

...

fk(x,y)<ak

x1<x<x2

y1<y<y2

On tape :

plotinequation(x`^`2-y`^`2<3, [x=-2..2,y=-2..2],xstep=0.1,ystep=0.1)

On obtient :

la partie contenant l’origine et délimitée par l’hyperbole x`^`2-y`^`2=3 est remplie

On tape :

plotinequation([x+y>3,x`^`2<y], [x-2..2,y=-1..10],xstep=0.2,ystep=0.2)

On obtient :

le morceau du plan définit par -2<x<2,y<10,x+y>3,y>x`^`2 est rempli

Attention
Si on ne met pas les bornes pour x et y ce sont les valeurs de X-,X+,Y-,Y+ mises dans la configuration générale du graphique (Cfg▸Configuration graphique) qui seront prises en compte.

- Aire sous une courbe : area aire

## 3.12 Représentation graphique de l’aire sous une courbe : tracer_aire graphe_aire aire_graphe plotarea areaplot

- Avec deux arguments, aire_graphe ou plotarea permet de représenter et d’afficher avec 3 digits l’aire sous une courbe.
  Ainsi, plotarea(f(x),x=a..b) trace l’aire sous la courbe y=f(x) pour a<x<b, c’est à dire la portion du plan définie par les inéquations a<x<b et selon le signe de f(x) 0<y<f(x) ou 0>y>f(x).
  On tape :
  plotarea(sin(x),x=0..2*pi)
  On obtient :
  la portion de plan situé dans les deux arches de sin(x)
- Avec quatre arguments, aire_graphe ou plotarea permet de représenter l’aire qui est caculée avec la méthode numérique choisie parmi :
  trapezoid, left_rectangle, right_rectangle, middle_point ou trapeze, rectangle_gauche, rectangle_droit, point_milieu.
  Ainsi, plotarea(f(x),x=a..b,n,trapeze) trace l’aire de n trapèzes : le troisième argument est un entier n, et le quatrième argument est le nom de la méthode numérique d’intégration lorsqu’on partage [a,b] en n parties égales.
  On tape :
  plotarea(x`^`2,x=0..1,5,trapeze)
  Ou on tape pour voir la courbe en rouge :
  plotarea(x`^`2,x=0..1,5,trapeze); plot(x`^`2,x=0..1,affichage=rouge)
  On obtient :
  les 5 trapèzes qui sont utilisés dans la méthode dite des trapèzes, pour approcher une intégrale
  On tape :
  plotarea(x`^`2,x=0..1,5,point_milieu)
  Ou on tape pour voir la courbe en rouge :
  plotarea(x`^`2,x=0..1,5,point_milieu); plot(x`^`2,x=0..1,affichage=rouge)
  On obtient :
  les 5 rectangles qui sont utilisés dans la méthode dite du point milieu, pour approcher une intégrale

Remarque 1 On peut aussi taper, pour n’avoir que la valeur de l’aire :

plotarea(x`^`2,x=0..1,5,trapeze)[0,3];

On obtient :

0.34

Remarque 2 Si on utilise plotarea avec le menu Graphic->Courbes->plotarea une boite de dialogue s’ouvre : vous entrez, l’expression de la fonction, le nom de la variable, les bornes de l’intervalle xmin,xmax, le pas xstep (on a alors n=(xmax-xmin)/xstep), la méthode d’intégration et aussi la couleur du dessin (on retrouve en effet le bouton Attribut en haut et à gauche de la boite de dialogue).

## 3.13 Lignes de niveaux : plotcontour contourplot
DrwCtour

plotcontour(f(x,y),[x,y]) (ou DrwCtour(f(x,y),[x,y]) ou
encore contourplot(f(x,y),[x,y])) trace les 11 lignes de niveaux z=−10, z=−8,.., z=0, z=2,.., z=10 de la surface définie par z=f(x,y).
On tape :

plotcontour(x`^`2+y`^`2,[x=-3..3,y=-3..3],[1,2,3], affichage=[vert,rouge,noir]+[rempli$3])

On obtient :

le graphe des trois cercles x`^`2+y`^`2=n pour n=1,2,3; les zones comprises entre ces cercles sont remplies avec la couleur verte,rouge ou noire

On tape :

plotcontour(x`^`2-y`^`2,[x,y])

On obtient :

le graphe des 11 hyperboles x`^`2-y`^`2=n pour n=-10,-8,..10

Pour visualiser la surface, on tape (plotfunc(f(x,y),[x,y]) trace la représentation graphique de z=f(x,y), voir 3.7.2):

plotfunc( x`^`2-y`^`2,[x,y])

On obtient :

Un graphique en 3-d représentant z=x`^`2+y`^`2

On peut faire tourner ce graphique selon l’axe des x, l’axe des y ou l’axe des z. Pour cela, il faut cliquer avec la souris dans la fenêtre graphique en dehors du parallélépipéde servant à la représentation, puis faire bouger la souris (sans relacher son bouton) ou utiliser aux touches x, X, y, Y, z et Z.

## 3.14 Graphe d’une fonction par niveaux de couleurs : plotdensity densityplot

plotdensity(f(x,y),[x,y]) ou encore densityplot(f(x,y),[x,y]) trace le graphe de z=f(x,y) dans le plan en représentant z par une des couleurs de l’arc en ciel.
On tape :

plotdensity(x`^`2-y`^`2,[x=-2..2,y=-2..2],xstep=0.1,ystep=0.1)

On obtient :

Un graphique en 2-d représentant pour chaque z, l’hyperbole définie par x`^`2-y`^`2=z par une couleur de l’arc en ciel

On remarquera que l’on a l’echelle des couleurs en dessous du graphe.

## 3.15 Courbe implicite : plotimplicit implicitplot

plotimplicit ou implicitplot permet de tracer des courbes ou des surfaces définies de façon implicite par une expression. Pour que Xcas ne cherche pas à factoriser l’expression, la commande plotimplicit ou implicitplot peut être utilisée avec l’option unfactored ou sans_factoriser mise comme dernier paramètre, :

- avec unfactored l’expression ne sera pas modifiée,
- sans unfactored Xcas réduit l’expression au même dénominateur puis cherche à factoriser le numérateur.

- Courbe implicite en 2-d
- Surface implicite en 3-d

## 3.16 Courbe et surface en paramétrique : plotparam paramplot DrawParm courbe_parametrique

- Courbe 2-d en paramétrique
- Surface 3-d en paramétrique : plotparam paramplot DrawParm courbe_parametrique

## 3.17 Courbes de Bézier : bezier

Soient n+1 points Pj de contrôle (j=0..n) et L la séquence de ces points.
La courbe de Bézier ayant les points de la séquence L comme points de contrôle, a comme équation paramétrique :
∑j=0n comb(n,j)tj(1−t)n−j*L[j].
bezier(L,plot) renvoie le tracé de la courbe d’équation paramétrique : ∑j=0n comb(n,j)tj(1−t)n−j*L[j].
parameq(bezier(L)) renvoie l’équation paramétrique de la courbe de Bézier ayant comme points de contrôle les points de la séquence L.
On tape :

bezier(1,1+i,2+i,3-i,plot)

On obtient :

Le tracé de la courbe de Bézier ayant comme points de contrôle les points d’affixe 1,1+i,2+i,3-i

On tape :

parameq(bezier(1,1+i,2+i,3-i))

On obtient :

L’équation paramétrique de la courbe précédente

On tape :

bezier(point([0,0,0]),point([1,1,0]),point([0,1,1]),plot)

On obtient :

Le tracé de la courbe de Bézier ayant comme points de contrôle les points point([0,0,0]),point([1,1,0]),point([0,1,1])

On tape :

parameq(bezier(point([0,0,0]),point([1,1,0]),point([0,1,1])))

On obtient :

L’équation paramétrique de la courbe précédente

## 3.18 Courbe en polaire : plotpolar polarplot DrawPol courbe_polaire

plotpolar(f(t),t) trace la représentation polaire de la courbe définie par : ρ=f(t).
On tape si dans la configuration du graphique t va de 0 à 10 :

plotpolar(t,t)

On obtient :

La spirale ρ=t est dessinée

On peut rajouter un paramètre (tstep=) pour indiquer le saut d’échantillonnage en t c’est à dire le pas en t que l’on veut utiliser pour faire le graphe. On tape si dans la configuration du graphique t va de 0 à 10 :

plotpolar(t,t,tstep=1)

ou :

plotpolar(t,t=0..10,tstep=1)

On obtient :

La spirale ρ=t est dessinée grossièrement

## 3.19 Tracé d’une suite récurrente : plotseq seqplot graphe_suite

plotseq(f(x),a,n) ou plotseq(f(t),t=a,n) permet de visualiser les n premiers termes d’une suite récurrente définie par :
u0=a, un=f(un−1)
On tape :

plotseq(sqrt(1+x),3,5)

On obtient :

Le dessin de y=sqrt(1+x), de y=x et des 5 premiers termes de la suite u_0=3 et u_n=sqrt(1+u_(n-1))

## 3.20 Le champ des tangentes : plotfield fieldplot

On peut tracer le champ des tangentes de léquation différentielle y′=f(t,y) ou du système déquations différentielles x′=u(x,y),y′=v(x,y) et on peut spécifier les plages de valeurs des paramètres.

- Soit f(t,y) une expression dependant de deux variables t et y, alors plotfield(f(t,y),[t,y]) trace le champ des tangentes de l’équation différentielle y′=f(t,y) où y représente une variable réelle et t est représenté en abscisse,
- Soit V=[u(x,y),v(x,y)] est un vecteur 2-d de coordonnées deux expressions dépendant de 2 variables x,y mais indépendant du temps, alors plotfield(V,[x,y]) trace le champ des tangentes du système [x′(t)=u(x,y),y′(t)=v(x,y)],
- Les plages de valeurs de t,y ou de x,y peuvent être spécifiées par t=tmin..tmax, x=xmin..xmax, y=ymin..ymax à la place du nom de variable seul.
- On peut spécifier le cadrage en mettant par exemple :
  plotfield(f(t,y),[t=tmin..tmax,y=ymin..ymax])
- On peut spécifier que le champ des tangentes soit, dans un repère orthonormé, de norme 1 avec l’option normalize. Sans l’option normalize le point de contact est l’origine du vecteur tangent et avec l’option normalize le point de contact se trouve au milieu des tangentes.
- On peut aussi spécifier la valeur des pas en t et en y avec xstep=... et ystep=....

On tape :

plotfield(4*sin(t*y),[t=0..2,y=-3..7])

On obtient :

Des segments de pente 4*sin(t*y) sont tracés en différents points. Ces segments représentent les vecteurs tangents dirigés selon les t croissants et dont l’origine est le point de contact

On tape :

plotfield(4*sin(t*y),[t=0..2,y=-3..7],normalize, xstep=0.7,ystep=0.7))

On obtient :

Des segments de longueur 1 et de pente 4*sin(t*y) qui représentent les tangentes au point situé en leur milieu. Ces points espacés de 0.7

On tape :

plotfield(5*[-y,x],[x=-1..1,y=-1..1])

On obtient :

Des vecteurs [−y,x] sont tracés aux points (x,y). Ces vecteurs représentent des vecteurs tangents en leur origine aux courbes solutions du système x(t)′=−y,y(t)′=x. Ils sont dirigés selon les t croissants.

On tape :

plotfield(5*[-y,x],[x=-1..1,y=-1..1],normalize)

On obtient :

Des segments de longueur 1 et de pente −y/x qui représentent les tangentes au point situé en leur milieu aux courbes solutions du système x(t)′=−y,y(t)′=x.

## 3.21 Tracé de solutions d’équation différentielle : plotode odeplot

On peut tracer les solutions de léquation différentielle y′=f(t,y) ou du système déquations différentielles x′=u(t,x,y),y′=v(t,x,y) et on peut spécifier les plages de valeurs des paramètres.

- plotode(f(t,y),[t,y],[t0,y0]) trace en fonction du temps la solution y(t) de l’équation différentielle y′=f(t,y) passant par le point (t0,y0), où f(t,y) désigne une expression dépendant de la variable de temps t et de la variable y.
- Par défaut, t varie dans les 2 directions. On peut spécifier la plage du temps par le paramètre optionnel t=tmin..tmax.
- Lorsque y=(X,Y) est un vecteur de longueur 2 et f à valeurs dans ℝ2, on peut également représenter dans l’espace (t,X,Y) ou dans le plan (X,Y) la solution d’une équation différentielle y′=f(t,y) c’est à dire [X′,Y′]=[f(t,X,Y)]. Pour cela, il suffit de remplacer y par le noms des variables X,Y et la valeur initiale par les deux valeurs initiales des variables au temps t0.

On tape :

plotode(sin(t*y),[t,y],[0,1])

On obtient :

Le graphe de la solution de y’=sin(t,y) passant par le point (0,1) est tracé

On tape :

S:=odeplot([h-0.3*h*p, 0.3*h*p-p], [t,h,p],[0,0.3,0.7])

On obtient le graphe dans l’espace de la solution de

[h,p]′=[h−0.3 h p, 0.3 h p−p] [h,p](0)=[0.3,0.7]

Pour avoir le graphe dans le plan, on ajoute l’option plan ou plane

S:=odeplot([h-0.3*h*p, 0.3*h*p-p], [t,h,p],[0,0.3,0.7],plan)

Pour visualiser les valeurs de la solution, se reporter à la section 4.3.6 On tape :

plotfield(5*[-y,x],[x=-1..1,y=-1..1],normalize)
plotode(5*[-y,x],[t=0..1,x,y],[0,0.3,0.7],tstep=0.05,plan)

On obtient :

Le graphe de la solution de x’=-y,y’=x pour t=0 passant par le point (0.3,0.7) est tracé

Exemple On trace 4 solutions du système d’équations différentielles dépendant de 2 paramètre a et b :
x′=−y+b
y′−1+(x−a)2+(y−b)2
Les conditions initiales sont :
pour t=0 x0=a+1,y0=b+0.5
pour t=0 x0=a+1,y0=b+0.1
pour t=0 x0=a+0.827,y0=b+0.827
pour t=0 x0=a−1.1,y0=b+
On tape :

    avril(a,b):={
    local L;
    L:=NULL;
    L:=L,affichage(plotode([-y+b,-1+(x-a)^2+(y-b)^2],[t=-3..3,x,y],[0,a+1,b+0.5],
    plan),94+epaisseur_ligne_8);
    L:=L,affichage(plotode([-y+b,-1+(x-a)^2+(y-b)^2], [t=-3..3,x,y],[0,a+1,b+0.1],
    plan),4+epaisseur_ligne_8);
    L:=L,affichage(plotode([-y+b,-1+(x-a)^2+(y-b)^2],[t=-6..3.65,x,y],
    [0,a+0.827,b+0.827],plan),1+epaisseur_ligne_4);
    L:=L,affichage(plotode([-y+b,-1+(x-a)^2+(y-b)^2], [t=-1.3..1.3,x,y],[0,a-1.1,b],
    plan),1+epaisseur_ligne_4);
    return L;
    }:;

Puis on tape par exemple :

    affichage(cercle(0,5,3*pi/4,4*pi/3),4+epaisseur_ligne_4);
    affichage(cercle(0,5,5*pi/3,2*pi+pi/4),4+epaisseur_ligne_4);
    affichage(segment(5*exp(-i*pi/3),5*exp(-2*i*pi/3)),4+epaisseur_ligne_4);
    avril(-1.4,-1);

## 3.22 Tracé interactif des solutions d’équation différentielle : interactive_plotode interactive_odeplot

interactive_plotode(f(t,y),[t,y]) trace le champ des tangentes de l’équation différentielle y′=f(t,y) dans l’écran DispG et
interactive_plotode(f(t,y),[t=a...b,y]) trace le champ des tangentes pour t allant de a à b de l’équation différentielle y′=f(t,y) dans l’écran DispG.
Lorsqu’on clique sur un point, on obtient le tracé de la solution de y′=f(t,y) passant par ce point.
On peut faire autant de tracés que l’on veut (un tracé se fait chaque fois que l’on clique sur un point avec la souris). On termine les tracés en tapant sur la touche Esc ou Echap.
On peut aussi spécifier, comme dans plotfield, que le champ des tangentes soit de norme 1 avec l’option normalize. Attention Si on ne veut pas de superposition avec les dessins faits auparavant, il ne faut pas oublier de taper ClrGraph, avant d’utiliser interactive_plotode, pour effacer l’écran DispG. On tape :

interactive_plotode(-y+x+1,[x=-4..4,y])

On obtient :

Le champ des tangentes est tracé ainsi que la solution de y’=sin(t,y) passant par le point qui a été cliqué avec la souris

IL se trouve que l’on sait résoudre cette équation : les solutions sont y(x)=C*exp(-x)+x et on peut donc vérifier...
On tape :

interactive_plotode(sin(t*y),[t=-4..4,y])

On obtient :

Le champ des tangentes est tracé ainsi que la solution de y’=sin(t,y) passant par le point qui a été cliqué avec la souris

On tape :

interactive_plotode(sin(t*y),[t=-4..4,y],normalize)

On obtient :

Le tracé du champ des tangentes avec une norme égale à 1 et le graphe de la solution de y’=sin(t,y) passant par le point qui a été cliqué avec la souris

## 3.23 Tracé interactif des solutions d’équation différentielle dans un niveau de géométrie : plotfield fieldplot et plotode odeplot

Dans un niveau de géométrie, le menu Graphe->Slopefield/Ode(2d) ouvre une boite de dialogues qui demande :

- si on veut que soit tracé le champ des tangentes,
- si on veut que ces tangentes soient normalisées dans un repère orthonormé,
- la valeur de y′,
- le nom des variables,
- les différentes valeurs de cadrage et de pas.

Lorsqu’on appuie sur OK, l’écran de géométrie est en mode plotode et si l’on a coché Field, le champ des tangentes apparait et la commande correspondante s’inscrit au niveau suivant de l’écran de géométrie, par exemple :

plotfield(sin(t*y),[t=-5.7..5.7,y=-5.7..5.7],normalize, xstep=0.7,ystep=0.7)

Si on a coché Field et ||=1, et que y′=sin(t*y).
Ensuite, il suffit de cliquer en différents points de lécran de géométrie pour avoir les tracés des solutions passant par ces points et les commandes correspondantes stockées dans une variable, par exemple :

A:=plotode(sin(t*y),[t,y],point(-2.863,1.327),plan)

Pour terminer, il suffit de changer de mode, par exemple passer en mode Repere. Il faut noter que le mode plotode n’est pas accessible directement : on doit réouvrir la boite de dialogue avec le menu Graphe->Slopefield/Ode(2d).
Si on trouve que le champ des tangentes est génant, on peut le supprimer facilement en supprimant le niveau correspondant à sa commande.

## 3.24 Faire une animation en 2-d, 3-d ou "4D"

Xcas permet d’animer des graphes en 2-d, 3-d ou "4D" en calculant une fois pour toute une suite d’objets graphiques et en affichant chaque objet de la sequence en boucle.

- Le temps d’affichage d’un objet peut se régler avec animate dans cfg (plus le nombre est petit et plus le temps d’affichage est petit i.e la vitesse d’animation est grande).
- Si on met animate à 0, à chaque clic de la souris dans l’écran graphique, on a un affichage.
- Le nombre d’images peut se régler avec un argument de la forme frames= ou trames= .
- On peut interrompre ou relancer l’affichage en boucle en cliquant sur le bouton ▸ ∣ (à droite de M).

- Animation d’un graphe 2-d :animate
- Animation d’un graphe 3-d :animate3d
- Animation d’une séquence d’objets graphiques :animation

# Chapitre 4 Calcul numérique

## 4.1 Codage des réels et des décimaux

Voici comment sont codées les nombres réels lorsque le nombre de chiffres significatifs demandés est inférieur ou égal à 16 (par exemple Digits:=15).
On écrit d, un nombre réel ou décimal, sous la forme :
d=2α(1+m) avec 0<m<1 et −210<α≥ 210.
On utilse 64 bits pour représenter ce nombre :

- le premier bit pour le signe de d (0 pour ’+’ et 1 pour ’-’),
- les 11 bits suivant sont pour codés l’exposant (on code α+210−1),
- les 52 derniers sont pour codés la mantisse m.

Codage de 2α :
α=0 est codé 011 1111 1111
α=1 est codé 100 0000 0000
α=4 est codé 100 0000 0011
α=5 est codé 100 0000 0100
α=−1 est codé 011 1111 1110
α=−4 est codé 011 1111 1011
α=−5 est codé 011 1111 1010
α=210 est codé 111 1111 1111
α=2−10−1 est codé 000 0000 0000.

Remarque
2−52=0.2220446049250313e−15

- Un exemple : codage de 3.1 et de 3
- Différence de codage entre (3.1-3) et 0.1

## 4.2 Évaluation des réels : evalf approx et Digits

On peut évaluer une expression numérique grâce à la commande evalf ou approx.
En mettant un deuxième argument n à evalf (ou approx), on peut spécifier le nombre de chiffres significatifs de l’approximation.
Mettre ce deuxième argument a l’avantage de ne pas modifier la valeur de Digits (i.e. la case Chiffres de la configuration du CAS).
Attention l’affichage tiendra compte de la valeur p de Digits si p<15 et si le deuxième argument n de evalf est supérieur à p mais les calculs seront faits avec n chiffres significatifs.
Exemple 1 Avec Digits:=12.
On tape : a:=1234+1/7
On obtient : 8639/7
On tape : b:=evalf(a,9)
On obtient : 1234.14286 (9 chiffres significatifs avec un arrondi)
On tape : c:=evalf(a,16)
On obtient : 0.1234142857142857e4 (16 chiffres significatifs)
On tape : d:=evalf(a,21)
On obtient : 0.123414285714285714286e4 (21 chiffres significatifs)
On tape : 7*a,7*b,7*c,7*d
On obtient :
8639,8639.00002,0.8639000000000001e4,0.863900000000000000000e4
Mais avec Digits:=7.
On tape : a:=1234+1/7
On obtient : 8639/7
On tape : b:=evalf(a,9)
On obtient : 1234.143 (à l’affichage juste 7 chiffres significatifs)
On tape : b-1234
On obtient : 0.14286 (ce qui prouve que b vaut 1234.14286)
On tape : b-1234.14286
On obtient : 0.0 (ce qui prouve encore que b vaut 1234.14286)
On tape : c:=evalf(a,16)
On obtient : 0.1234142857142857e4
On tape : d:=evalf(a,21)
On obtient : 0.123414285714285714286e4
Exemple 2 Avec Digits:=7 ou si dans la configuration du cas (menu Cfg) on a choisit Chiffres=7.
On tape :

evalf(sqrt(2))

On obtient :

1.414214

On tape :

evalf(sqrt(2),3)

On obtient :

1.41

On tape :

evalf(sqrt(2),3)-1.414214

On obtient :

-0.000214

ce qui montre que evalf(sqrt(2),3) est le nombre 1.414
On tape :

evalf(sqrt(2),10)

On obtient :

1.414214

On obtient toujours un affichage avec 7 chiffres significatifs si n est supérieur ou égal à 7 :

1.414214

On tape :

evalf(sqrt(2))-1.414214

On obtient toujours lorsque Digits:=7) :

-4.376269e-07

ce qui montre que Xcas fait les calculs avec 14 chiffres significatifs.
Par contre, dés que le 2-ième argument n de evalf est strictement supérieur à 14 l’affichage se fait avec n chiffres significatifs.
On tape :

evalf(sqrt(2),15),evalf(sqrt(2),16)

On obtient :

1.41421356237310,1.414213562373095

On tape :

evalf(sqrt(2),20)

On obtient :

1.4142135623730950488

et cela n’a pas modifié la configuration du CAS.
On peut changer le nombre de chiffres significatifs avec la variable DIGITS ou Digits.
On tape :

DIGITS:=20

Cela a pour effet de changer Configuration du CAS et de mettre 20 dans la case Chiffres.

evalf(sqrt(2))

On obtient 20 chiffres significatifs :

1.4142135623730950488

Notation : Le nombre réel 10−4 est un nombre exact alors que 1e−4 est un nombre approché.
On tape :

evalf(10`^`-5)

On obtient :

1e-05

On tape :

evalf(10`^`15)

On obtient :

1e+15

On tape :

evalf(sqrt(2))*10`^`-5

On obtient si Digits:=20:

0.14142135623730950488e-4

Remarques On tape :

DIGITS:=20
a:=evalf(sqrt(2))

On obtient :

1.4142135623730950488

On tape :

evalf(a,10)

On obtient :

1.4142135624

On tape :

evalf(sqrt(2),10)

On obtient :

1.414213562373

On tape :

DIGITS:=10
b:=evalf(sqrt(2))

On obtient :

1.414213562

On tape :

evalf(b,10)

On obtient :

1.414213562

On tape :

evalf(sqrt(2),10)

On obtient :

1.414213562

Attention
Si vous définissez une fonction F(a) qui renvoie une séquence formée par un nombre fractionnaire p/q et un entier n alors evalf(F(a)) renvéra une approximation de p/q avec n chiffres significatifs ! Il faut donc écrire evalf([F(a)]) pour avoir une liste constituée d’une approximation de p/q et de n.

## 4.3 Quelques fonctions

- Solution approchée d’une équation : newton
- Calcul approché du nombre dérivé : nDeriv
- Calcul approché d’intègrales avec la méthode de Romberg : romberg nInt
- Calcul approché d’intègrales par une quadrature de Gauss adaptative à 15 points : gaussquad
- Solution approchée de y’=f(t,y) : odesolve
- Solution approchée du système v’=f(t,v) : odesolve

## 4.4 Résolution numérique d’équations avec nSolve

nSolve permet de résoudre numériquement des équations non polynomiales : f(x)=0 pour x ∈ ]a,b[ (nSolve est une commande compatible ti).
Les paramètres de nSsolve sont f(x)=0, x, ou x=x0 où x0 est un point de ]a,b[.
On tape :

nSolve((cos(x))=x,x)

On obtient soit :

0.739085133215

soit une solution complexe :

-9.10998745394-2.95017086176*i

En effet, si on ne précise pas la valeur qui démarre l’itération, Xcas démarre l’itération avec une valeur aléatoire réelle ou complexe.
On vérifie :
cos(-9.10998745394-2.95017086176*i)=-9.10998745394-2.95017086176*i
On tape :

nSolve((cos(x))=x,x=0)

On obtient :

0.739085133215

On tape :

nSolve((cos(x))=x,x=-9-3*i))

On obtient :

-9.10998745394-2.9501708617*i

## 4.5 Résolution d’équations avec fsolve

fsolve permet de résoudre numériquement des équations non polynomiales : f(x)=0 pour x ∈ ]a,b[.
fsolve a comme arguments f(x)=0 et x=a..b ou f(x)=0, x et a..b.
fsolve donnera aussi les racines numériques complexes si dans la configuration du CAS on a coché Complexe. Si Complexe est décoché il faut utiliser cfsolve pour avoir les racines numériques complexes.
On tape :

fsolve(sin(x)=0,x=0..10)

Ou on tape :

fsolve(sin(x)=0,x,0..10)

On obtient :

[0.0,3.14159265359,6.28318530718,9.42477796077]

On peut rajouter en dernier argument la valeur de l’échantillonage en spécifiant la valeur de xstep ou la valeur de nstep (nombre de découpages de l’intervalle ]a,b[).
On tape :

fsolve(sin(x)=0,x=0..10,xstep=1 )

On obtient :

[0.0,3.14159265359,6.28318530718,9.42477796077]

On tape :

fsolve(sin(x)=0,x=0..10,nstep=10)

On obtient :

[0.0,3.14159265359,6.28318530718,9.42477796077]

On peut utiliser différents algorithmes pour résoudre numériquement f(x)=0 pour x ∈ ]a,b[.
Si on veut indiquer la mèthode, les paramètres de fsolve sont f(x)=0, x, a..b ou selon les méthodes un point x0 de ]a,b[ et le nom de la méthode utilisée.
Les différentes méthodes sont détaillées ci dessous.

- fsolve avec l’option bisection_solver
- fsolve avec l’option brent_solver
- fsolve avec l’option falsepos_solver
- fsolve avec l’option newton_solver
- fsolve avec l’option secant_solver
- fsolve avec l’option steffenson_solver

## 4.6 Résolution des systèmes d’équations avec fsolve

On propose six méthodes pour résoudre numériquement des systèmes d’équations de la forme f(x)=0.
Remarque
fsolve donnera aussi les racines numériques complexes si dans la configuration du CAS on a coché Complexe. Si Complexe est décoché il faut utiliser cfsolve pour avoir les racines numériques complexes.
Trois méthodes utilisent la matrice jacobienne f′(x) et leurs noms se terminent par j_solver.
Les trois autres méthodes utilisent des méthodes d’approximation de f′(x) et utilisent uniquement f.
Les six méthodes utilisent une itération de type Newton :
xn+1=xn−f′(xn)−1*f(xn).
Les quatre méthodes hybrid*_solver utilisent aussi une méthode de descente de gradient lorsque l’itération Newtonienne donne un pas trop grand.
La longueur du pas est calculé sans facteur d’échelle pour hybrid_solver et hybridj_solver ou avec facteur d’echelle (calculé à partir de f′(xn)) pour hybrids_solver et hybridsj_solver

- fsolve avec l’option dnewton_solver
- fsolve avec l’option hybrid_solver
- fsolve avec l’option hybrids_solver
- fsolve avec l’option newtonj_solver
- fsolve avec l’option hybridj_solver
- fsolve avec l’option hybridsj_solver

## 4.7 Résolution sur ℂ d’équations ou de systèmes cfsolve

cfsolve effectue la résolution numérique sur ℂ d’une équation ou d’un système, même si Complexe est décoché dans la configuration du CAS.
fsolve donne aussi les racines numériques complexes d’une équation ou d’un système si dans la configuration du CAS on a coché Complexe.
On tape :

cfsolve(sin(x)=2)

On obtient :

[1.57079632679-1.31695789692*i,1.57079632679+1.31695789692*i]

On tape :

cfsolve(cos(x)=2)

On obtient :

[1.31695789692*i,-1.31695789692*i]

On tape :

cfsolve([x`^`2+y+2,x+y`^`2+2],[x,y])

On obtient :

[[0.500000000000014794+1.65831239517770439*i, 0.500000000000000000-1.65831239517771331*i], [0.500000000000014794-1.65831239517770439*i, 0.500000000000000000+1.65831239517771331*i], [-0.499999999999994291-1.32287565553229745*i,-0.499999999999999999-1.32287565553230177*i],[-0.499999999999994291+1.32287565553229745*i,-0.499999999999999999+1.32287565553230177*i]]

## 4.8 Racines numériques d’un polynôme : proot

proot a comme argument un polynôme ou le vecteur de composantes les coefficients d’un polynôme (par ordre décroissant).
proot renvoie un vecteur dont les composantes sont les racines numériques non multiples du polynôme.
On peut mettre en option un entier n pour préciser le nombre n de chiffres significatifs de la réponse. Pour chercher les racines numériques de P(x)=x3+1, on tape :

proot([1,0,0,1])

ou on tape :

proot(x`^`3+1)

On obtient :

[0.5+0.866025403784*i,0.5-0.866025403784*i,-1.0]

On tape pour avoir 20 chiffres significatifs :

proot([1,0,0,1],20)

ou on tape :

proot(x`^`3+1)

On obtient :

[-1.000000000000000000,
0.5000000000000000000-0.8660254037844386468*i,
0.5000000000000000000+0.8660254037844386468*i]

On tape pour avoir les racines numériques de x2−3 :

proot([1,0,-3])

ou :

proot(x`^`2-3)

On obtient :

[1.73205080757,-1.73205080757]

On tape pour avoir les racines numériques de P(x)=x2−3 avec 20 chiffres significatifs :

proot([1,0,-3],20)

ou on tape :

proot(x`^`2-3,20)

On obtient :

[-1.732050807568877294,1.732050807568877294]

On tape pour avoir les racines numériques de P(x)=x10−15*x8+90*x6−270*x4+405*x2−243 :

proot([1,0,-15,0,90,0,-270,0,405,0,-243])

ou on tape :

proot(x`^`10-15*x`^`8+90*x`^`6-270*x`^`4+405*x`^`2-243)

On obtient :

[1.73205080757,-1.73205080757,1.73205080757,-1.73205080757, 1.73205080757,-1.73205080757,1.73205080757,-1.73205080757, 1.73205080757,-1.73205080757]

## 4.9 Factorisation numérique d’une matrice : cholesky qr lu svd

Pour avoir les factorisations numériques de :

- Cholesky,
- QR,
- LU,
- svd,

d’une matrice, on se reportera à la section 6.59.

# Chapitre 5 Les unités et les constantes physiques

Les constantes physiques (sous-menu Constante), les fonctions de conversion (sous-menu Unit_convert), les préfixes (sous-menu Unit_prefix) et les unités classées par thème, se trouvent dans le menu Phys.

## 5.1 Les unités

- La notation des unités
- Les calculs avec des unités
- La conversion d’un objet-unité dans une autre unité : convert convertir =>
- Les changements d’unités en unités MKSA : mksa
- Les conversions entre degré Célsius et degré Fahrenheit : Celsius2Fahrenheit et Fahrenheit2Celsius
- Mise en facteur d’une unité : ufactor
- Simplifier une unité : usimplify
- Les préfixes disponibles pour les noms d’unités

## 5.2 Les constantes physiques

- La notation des constantes physiques
- Bibliothèque des constantes physiques

# Chapitre 6 Les fonctions de calcul formel

## 6.1 Les constantes symboliques : e pi infinity inf i euler_gamma

e ou %e désigne le nombre exp(1);
pi ou %pi désigne le nombre π.
infinity désigne ∞.
+infinity ou inf désigne +∞.
-infinity ou -inf désigne −∞.
i ou %i désigne le nombre complexe i.
euler_gamma désigne la constante d’Euler γ.
On a :
euler_gamma est égal à limit(sum(1/k,k,1,n)-ln(n),n,+infinity).

## 6.2 Les booléens

- Les valeurs d’un booléen : true false
- Les tests : ==, !=, >, >=, <, <=
- Les opérateurs booléens : or xor and not
- Transformer une expression en liste : exp2list
- Transformer une liste en expression : list2exp

## 6.3 Évaluation des booléens : evalb

On peut évaluer une expression booléenne grâce à la commande evalb cette commande sert surtout pour la compatibilité Maple car en Xcas, les booléens sont toujours évalués.
On tape :

evalb(sqrt(2)>1.41)

Ou on tape :

sqrt(2)>1.41

On obtient :

1

On tape :

evalb(sqrt(2)>1.42)

Ou on tape :

sqrt(2)>1.42

On obtient :

0

## 6.4 Les opérateurs bit à bit

- Les opérateurs bitor, bitxor, bitand
- Distance de Hamming bit à bit : hamdist

## 6.5 Les chaînes de caractères

- Écriture d’une chaîne ou d’un caractère : "
- Écriture du caractère "retour à la ligne" : "\n"
- Longueur d’une chaîne : size length
- Début, fin, milieu et fin d’une chaîne : head mid tail
- Partie droite et gauche d’une chaîne : droit ou right, gauche ou left
- Concaténation d’une suite de mots : cumSum
- Le code ASCII d’un caractère : ord
- Le code ASCII d’une chaîne : asc
- La chaîne associée à une suite d’ASCII : char
- Repérer un caractère dans une chaîne : inString
- Concaténer des objets en une chaîne : cat
- Concaténer des objets en une chaîne : +
- Pour concaténer des nombres et des chaînes : cat +
- Pour transformer un nombre réel ou entier en une chaîne : string
- Pour transformer un nombre réel en une chaîne : format
- Pour transformer une chaîne en un nombre, une fonction ou en une commande : expr

## 6.6 Écriture en base b d’un entier

- Transformer un entier en la liste des coefficients de son écriture en base b : convert convertir
- Transformer la liste des coefficients d’ une écriture en base b en un entier : convert convertir

## 6.7 Les entiers (et les entiers de Gauss)

Dans tout ce paragraphe, on peut utiliser des entiers de Gauss (nombres complexes de la forme a+i*b avec a et b dans ℤ), à la place des entiers dans les différentes fonctions.

- La factorielle : factorial
- Le PGCD : gcd igcd
- Le PGCD : Gcd
- Le PGCD d’une liste d’entiers : lgcd
- Le PPCM : lcm
- Factoriser un entier : ifactor factoriser_entier
- Liste des facteurs d’un entier : facteurs_premiers ifactors
- Matrice des facteurs d’un entier : maple_ifactors
- Liste des diviseurs d’un entier : idivis divisors
- Quotient entier infixé de la division euclidienne : div
- Quotient entier de la division euclidienne : iquo intDiv
- Reste entier de la division euclidienne : irem remain smod mods mod %
- Le quotient et le reste de la division euclidienne : iquorem
- Test de parité : even est_pair
- Test de non parité : odd est_impair
- Test de pseudo-primalité : is_pseudoprime
- Test de primalité : is_prime isprime isPrime
- Nombre pseudo-premier : nprimes
- N-ième nombre pseudo-premier : ithprime
- Nombre pseudo-premier après n : nextprime
- Nombre pseudo-premier avant n : prevprime
- Le n-ième nombre premier : ithprime
- Identité de Bézout : iegcd igcdex bezout_entiers
- Résolution de au+bv=c dans ℤ : iabcuv
- Restes chinois : ichinrem, ichrem
- Reste chinois pour des polynômes connus modulo plusieurs entiers : ichinrem, ichrem
- Reste chinois pour des listes d’entiers : chrem
- Résolution de a2+b2=p dans ℤ : pa2b2
- Indicatrice d’Euler : euler Phi
- Symbole de Legendre : legendre_symbol
- Symbole de Jacobi : jacobi_symbol

## 6.8 Analyse combinatoire

- La factorielle : factorial !
- Les coefficients binomiaux : comb nCr
- Les coefficients binomiaux et valeur de Proba(X=k) quand X suit la loi B(n,p) : binomial
- Les arrangements : perm nPr
- Les nombres entiers aléatoires : rand alea hasard
- Certificat de Wilf-Zeilberger pour une identité : wz_certificate

## 6.9 Les rationnels

- Transformer un nombre décimal en rationnel : exact
  float2rational
- Partie entière et fractionnaire : propfrac propFrac
- Numérateur d’une fraction après simplification : numer, getNum
- Dénominateur d’une fraction après simplification : denom getDenom
- Numérateur et dénominateur d’une fraction : f2nd fxnd
- Simplification d’un couple : simp2
- Développement en fraction continue d’un réel : dfc
- Transformer une fraction continue en un réel : dfc2f
- Le nième nombre de Bernoulli : bernoulli
- Le polynôme de Bernoulli : bernoulli
- Accès aux fonctions de PARI/GP: commande pari

## 6.10 Les réels

- Évaluer un réel et nombre de digits : evalf et Digits, DIGITS)
- Les fonctions infixées de base sur les réels : +,-,*,/,^
- Les fonctions prefixées de base sur les réels : rdiv
- La fonction racine n-ième : root
- La fonction exponentielle integrale Ei : Ei
- La fonction logarithme integral Li : Li
- La fonction cosinus integral Ci : Ci
- La fonction sinus integral Si : Si
- La fonction de Heaviside : Heaviside
- La distribution de Dirac : Dirac
- La fonction erf : erf
- La fonction erfc : erfc
- La fonction Γ : Gamma
- La fonction γ supérieure : ugamma
- La fonction γ incomplète : igamma
- La fonction β : Beta
- Les derivées de la fonction DiGamma : Psi
- La fonction ζ : Zeta
- Les fonctions de Airy : Airy_Ai et Airy_Bi

## 6.11 Les permutations

Une permutation p de longueur n est une bijection de [0..n−1] sur [0..n−1] et est représentée par la liste : [p(0),p(1),p(2)...p(n−1)].
Par exemple, la permutation p représentée par [1,3,2,0] est l’application de [0,1,2,3] sur [0,1,2,3] définie par : p(0)=1, p(1)=3, p(2)=2, p(3)=0.
Un cycle c d’ordre p est représenté par la liste [(a0,...,ap−1)] (0≤ p≤ n−1) et c’est une permutation telle que :
c(ai)=ai+1 pour (i=0..p−2), c(ap−1)=a0 et c(ai)=ai (i=p+1..n).
Un cycle c est représenté par la liste et une décomposition en cycles par une liste de listes.
Par exemple, le cycle c représenté par la liste [3,2,1] est la permutation c définie par c(3)=2, c(2)=1, c(1)=3, c(0)=0 (qui est représenté en tant que permutation par la liste [0,3,1,2]).

- Permutation aléatoire : randperm shuffle
- Permutation précédente : prevperm
- Permutation suivante : nextperm
- Décomposition en cycles : permu2cycles
- Produit de cycles : cycles2permu
- Transformer un cycle en permutation : cycle2perm
- Transformer une permutation en une matrice : permu2mat
- Reconnaitre une permutation : is_permu
- Reconnaitre un cycle : is_cycle
- Composition de deux permutations : p1op2
- Produit d’un cycle et d’une permutation : c1op2
- Produit d’une permutation et d’un cycle : p1oc2
- Produit de deux cycles : c1oc2
- Signature d’une permutation : signature
- Inverse d’une permutation : perminv
- Inverse d’un cycle : cycleinv
- Ordre d’une permutation : permuorder
- Groupe engendré par deux permutations : groupermu

## 6.12 Les complexes

Vous trouverez dans le menu Math (Cmplx) les fonctions ayant comme paramètre une expression à valeur complexe.
Remarque
Les nombres complexes sont utilisés pour représenter un point sur l’écran graphique : par exemple, le graphe de y=f(x) est l’ensemble des points x+i*f(x) pour x variant entre WX- et WX+ (WX- et WX+ sont initialisés avec le menu Cfg▸Configuration graphique).

- Les fonctions de base sur les complexes : +,-,*,/,^
- La partie réelle d’un nombre complexe : re real
- La partie imaginaire d’un nombre complexe : im imag
- Écriture des complexes sous la forme re(z)+i*im(z) : evalc
- Le module d’un nombre complexe : abs
- L’argument d’un nombre complexe : arg
- Le nombre complexe normalisé : normalize unitV
- Le nombre complexe conjugué : conj
- Multiplier par le complexe conjugué : mult_c_conjugate multiplier_conjugue_complexe
- Barycentre de complexes : barycenter barycentre

## 6.13 Les nombres algébriques

- Définition
- Polynôme minimal d’un nombre algébrique : pmin

## 6.14 Les expressions algébriques

- Qu’est-ce qune expression
- Pour évaluer une expression : eval
- Pour changer le niveau dévaluation : eval_level
- Pour évaluer une expression en mode Maple : evala
- Pour ne pas évaluer une expression : quote hold ou ’
- Pour forcer à évaluer une expression : unquote
- Distributivité : expand fdistrib developper
- Forme canonique : canonical_form
- Multiplier par la quantité conjuguée : multiplier_conjugue mult_conjugate
- Séparation des variables : split
- Factorisation : factor factoriser
- Factorisation dans ℂ : cFactor factoriser_sur_C cfactor
- Zéros d’une expression : zeros
- Zéros complexe d’une expression : cZeros
- Regrouper et simplifier : regrouper regroup
- Développer et simplifier : normal
- Simplifier : simplify simplifier
- Pour réécrire les résultats selon son choix : autosimplify
- Simplifier à l’aide de fractions rationnelles : ratnormal
- Substituer une valeur à une variable : |
- Substituer une valeur à une variable : subst substituer
- Pour substituer plus simplement une valeur à une variable dans une expression : ()
- Substituer une valeur à une variable (compatibilité Maple et Mupad) : subs
- Substituer dans une expression, une expression algébrique par une variable : algsubs
- Éliminer une (ou des) variable(s) dans une liste d’équations : eliminate
- Évaluer une primitive : preval
- Sous-expression d’une expression : part

## 6.15 Valeurs de un

- Tableau de valeurs des termes d’une suite : tablefunc table_fonction
- Valeurs d’une suite récurrente ou d’un système de suites récurrentes : seqsolve
- Valeurs d’une suite récurrente ou d’un système de suites récurrentes : rsolve
- Tableau de valeurs et graphe d’une suite récurrente : tableseq table_suite et plotseq graphe_suite

## 6.16 Les fonctions infixées ou opérateur

Un opérateur est une fonction infixée.

- Les opérateurs usuels :+, -, *, /, ^
- Les autres opérateurs de Xcas
- Définition d’un opérateur: user_operator

## 6.17 Les fonctions et les expressions de variables symboliques

- Différence entre fonction et expression
- Transformer une expression en une fonction : unapply
- Sommet et feuille d’une expression : sommet feuille op

## 6.18 Les fonctions

- Les fonctions ayant plusieurs usages
  - + et -
  - *
  - /
- Les fonctions usuelles
- Définition d’une fonction utilisateur
  - Généralités
  - Définition d’une fonction de ℝp dans ℝ
  - Définition d’une fonction de ℝp dans ℝq
  - Définition d’une fonction de ℝp−1 dans ℝq à partir d’une fonction de ℝp dans ℝq
- Composition de fonctions : @
- Puissance n-ième de composition d’une fonction : @@
- Definir une fonction avec l’historique : as_function_of

## 6.19 Étude des fonctions de ℝ dans ℝ

- Tableau de valeurs des termes d’une fonction de ℝ dans ℝ : tablefunc table_fonction
- Domaine de définition d’une fonction de ℝ dans ℝ : domain
- Tableau de variation d’une fonction de ℝ dans ℝ : tabvar

## 6.20 Dérivation

- Généralités
- Calcul du taux d’accroissement : taux_accroissement
- Fonction dérivée d’une fonction : function_diff
  fonction_derivee
- Derivées et derivées partielles d’une expression et derivées d’une fonction : diff derive deriver ’
  - Généralités
  - Derivée et fonction derivée
  - Derivées et derivées partielles d’ordre 1 : diff derive deriver ’
  - Derivée et derivée partielle d’ordre n : diff derive deriver

## 6.21 Intégration

- Primitive et intégrale définie : integrate Int integrer int integration
- Primitive et intégrale définie : risch
- Somme indicée finie et infinie et primitive discrète : sum
- Somme de Riemann : sum_riemann
- Intégration par parties : integrer_par_parties_dv ibpdv et integrer_par_parties_u ibpu
  - ibpdv
  - ibpu
- Changement de variables : subst substituer
- Longueur d’un arc de courbe : arcLen

## 6.22 Maximum, minimum, tableau de valeurs et graph

- Maximum et minimum d’une expression : fMax fMin
- Tableau de valeurs et graphe : tablefunc table_fonction et plotfunc

## 6.23 Limites

- Limites : limit limite
- Limite et intégrale

## 6.24 Réécrire des expressions transcendantes et trigonométriques

- Développer une expression transcendante et trigonométrique : texpand tExpand developper_transcendant
- Rassembler les termes de même nature : combine

## 6.25 Les expressions trigonométriques

- Les différentes fonctions trigonométriques
- Développer une expression trigonométriques : trigexpand
- Linéariser une expression trigonométrique : tlin
  lineariser_trigo
- Augmenter la phase de π/2 dans les expressions trigonométriques : shift_phase
- Rassembler les sinus et les cosinus de même angle : tcollect tCollect rassembler_trigo
- Simplifier : simplify simplifier
- Transformer les arccos en arcsin : acos2asin
- Transformer les arccos en arctan : acos2atan
- Transformer les arcsin en arccos : asin2acos
- Transformer les arcsin en arctan : asin2atan
- Transformer les arctan en arcsin : atan2asin
- Transformer les arctan en arccos : atan2acos
- Transformer les exponentielles complexes en sin et en cos : sincos exp2trig
- Transformer tan(x) en sin(x)/cos(x) : tan2sincos
- Transformer sin(x) en cos(x)*tan(x) : sin2costan
- Transformer cos(x) en sin(x)/tan(x) : cos2sintan
- Transformer tan(x) avec sin(2x) et cos(2x) : tan2sincos2
- Transformer tan(x) avec cos(2x) et sin(2x) : tan2cossin2
- Transformer une expression trigonométrique en fonction de tan(x/2) : halftan
- Transformer les expressions trigonomètriques et hyperboliques en tan(x/2) et en exp(x): halftan_hyp2exp
- Transformer avec des fonctions trigonométriques inverses en logarithmes : atrig2ln
- Transformer une expression trigonométrique en des exponentielles complexes: trig2exp
- Simplifier en privilégiant les sinus : trigsin
- Simplifier en privilégiant les cosinus : trigcos
- Simplifier en privilégiant les tangentes : trigtan
- Réecriture d’une expression avec différentes options : convert convertir =>
- Écriture d’une chaîne en un nombre ou en le nom d’une variable avec différentes options : convert convertir =>

## 6.26 Transformée de Fourier

- Les coefficients de Fourier : fourier_an et fourier_bn ou fourier_cn
  - fourier_an
  - fourier_bn
  - fourier_cn
- Transformée de Fourier discrète
  - Les propriétes
  - Où interviennent ces sommes ?
- La transformée de Fourier rapide : fft
- L’inverse de la transformée de Fourier rapide : ifft
- Un exercice utilisant fft

## 6.27 Les Exponentielles et les Logarithmes

- Transformer les fonctions hyperboliques en exponentielles : hyp2exp
- Développer les exponentielles : expexpand
- Développer les logarithmes : lnexpand
- Linéariser les exponentielles : lin lineariser
- Regrouper les log : lncollect
- Transformer une puissance en produit de puissances :
  powexpand
- Transformer une puissance en une exponentielle : pow2exp
- Transformer exp(n*ln(x)) en puissance : exp2pow
- Écrire avec des exponentielles complexes : tsimplify

## 6.28 Les polynômes

- Les polynômes à une variable poly1[...]
- Les polynômes à plusieurs variables
- Transformer le format interne dense récursif en une écriture polynômiale : poly2symb r2e
- Transformer le format interne creux distribué du polynôme en une écriture polynômiale : poly2symb r2e
- Transformer un polynôme en une liste (format interne récursif dense) : symb2poly e2r
- Transformer un polynôme au format interne : e2r symb2poly
- Transformer un polynôme au format interne en une liste et réciproquement : convert
- Coefficients d’un polynôme : coeff coeffs
- Degré d’un polynôme : degree
- Valuation d’un polynôme : valuation ldegree
- Coefficient du terme de plus haut degré d’un polynôme : lcoeff
- Coefficient du terme de plus bas degré d’un polynôme : tcoeff
- Évaluation d’un polynôme : peval polyEval
- Mise en facteur de xn dans un polynôme : factor_xn
- PGCD des coefficients d’un polynôme : content
- Partie primitive d’un polynôme : primpart
- Factorisation sur les entiers : collect
- Factorisation : factor factoriser
- Factorisation sans facteur carré : sqrfree
- Liste des facteurs d’un polynôme : factors
- Évaluer un polynôme : horner
- Écriture selon les puissances de (x-a) : ptayl
- Calcul avec les racines exactes d’un polynôme : rootof
- Racines exactes d’un polynôme : roots
- Coefficients d’un polynôme défini par ses racines : pcoeff pcoef
- Troncature d’ordre n : truncate
- Convertir un développement limité en polynôme : convert convertir
- Convertir un polynôme de n variables en une liste : convert convertir
- Convertir une liste en polynôme de n variables : convert convertir
- Polynômes aléatoires : randpoly randPoly
- Changer l’ordre des variables : reorder
- Liste aléatoire : ranm
- Interpolation de Lagrange : lagrange interp
- Les splines naturelles: spline

## 6.29 Arithmétique des polynômes

Les polynômes sont représentés par des expressions ou par la liste de leurs coefficients par ordre de puissances décroissantes. Dans le premier cas la variable utilisée par défaut est x. Pour les polynômes à coefficients dans ℤ/nℤ, appliquez % n à l’expression ou à chaque coefficient de la liste.

- Liste des diviseurs d’un polynôme : divis
- Quotient euclidien de 2 polynômes : quo
- Quotient euclidien : Quo
- Reste euclidien de 2 polynômes : rem
- Reste euclidien : Rem
- Quotient et reste euclidien : quorem divide
- PGCD de polynômes par l’algorithme d’Euclide : gcd igcd
- PGCD de deux polynômes par l’algorithme d’Euclide : Gcd
- Choisir l’algorithme du PGCD de deux polynômes : ezgcd heugcd modgcd psrgcd
- PPCM de deux polynômes : lcm
- Idendité de Bézout : egcd gcdex
- Résolution polynômiale de au+bv=c : abcuv
- Les restes chinois : chinrem
- Polynôme cyclotomique : cyclotomic
- Suites de Sturm et nombre de de changements de signe de P sur ]a; b] : sturm
- Nombre de changements de signe sur ]a; b] : sturmab
- Suites de Sturm : sturmseq
- Matrice de Sylvester de deux polynômes : sylvester
- Résultant de deux polynômes : resultant

## 6.30 Polynômes orthogonaux

- Polynôme de Legendre : legendre
- Polynôme de Hermite : hermite
- Polynôme de Laguerre : laguerre
- Polynôme de Tchebychev de 1-ière espèce : tchebyshev1
- Polynôme de Tchebychev de 2-ième espèce : tchebyshev2

## 6.31 Base et réduction de Gröbner

- Base de Gröbner : gbasis
- Réduction par rapport à une base de Gröbner : greduce
- Test d’appartenance d’un polynôme ou d’une liste de polynômes à un idéal donné par une base de Groebner : in_ideal
- Construire un polynôme de n variables : genpoly

## 6.32 Les fractions rationnelles

- Numérateur : getNum
- Numérateur après simplification : numer
- Dénominateur : getDenom
- Dénominateur après simplification : denom
- Numérateur et dénominateur : f2nd fxnd
- Simplifier : simp2
- Réduire au même dénominateur : comDenom
- Partie entière et fractionnaire : propfrac
- Décomposition en éléments simples : partfrac =>+
- Décomposition en éléments simples sur C : cpartfrac

## 6.33 Racines exactes d’un polynôme

- Encadrement exact des racines complexes d’un polynôme : complexroot
- Encadrement exact des racines réelles d’un polynôme avec leur multiplicité: realroot
- Encadrement exact des racines réelles d’un polynôme : VAS
- Encadrement exact des racines réelles positives d’un polynôme : VAS_positive
- Borne supérieure des racines réelles positives d’un polynôme : posubLMQ
- Borne inférieure des racines réelles positives d’un polynôme : poslbdLMQ
- Valeurs exactes des racines rationnelles d’un polynôme : rationalroot
- Valeurs exactes des racines complexes rationnelles d’un polynôme : crationalroot

## 6.34 Fraction rationnelle, ses racines et ses pôles exacts

- Racines et pôles exacts d’une fraction rationnelle : froot
- Coefficients d’une fraction rationnelle définie par ses racines et ses pôles : fcoeff

## 6.35 Le calcul modulaire dans ℤ/pℤ ou dans ℤ/pℤ[x]

On peut faire des calculs modulo p c’est à dire dans ℤ/pℤ ou dans ℤ/pℤ[x] et la façon de s’y prendre dépends de la syntaxe choisie :

- En mode Xcas, les nombres n de ℤ/pℤ sont notés n% p.
  Exemples de notation
  - un entier n de ℤ/13ℤ
    n:=12% 13.
  - un vecteur V de coordonnées dans ℤ/13ℤ
    V:=[1,2,3]% 13 ou V:=[1% 13,2% 13,3% 13].
  - une matrice A de coefficients dans ℤ/13ℤ
    A:=[[1,2,3],[2,3,4]]% 13 ou
    A:=[[1% 13,2% 13,3% 13],[2% 13,3% 13,4% 13]].
  - un polynôme A de ℤ/13ℤ[x] en représentation symbolique
    A:=(2*x`^`2+3*x-1)%13 ou
    A:=2%13*x`^`2+3%13*x-1%13.
  - un polynôme A de ℤ/13ℤ[x] en représenté avec une liste
    A:=poly1[1,2,3]%13 ou A:=poly1[1%13,2%13,3%13].
  Pour transformer un objet o à coefficients modulaires en un objetà coefficients entiers tapez o % 0. Par exemple, si on tape o:=4% 7 puis o% 0, on obtient -3.
- En mode Maple, on n’utilise pas % pour représenter les entiers modulo p : ces entiers sont représentés comme les entiers usuels et pour eviter les confusions on utilise les commandes commençant par une majuscule que l’on fait suivre par la commande mod (on se reportera à la section suivante).

Remarques

- Pour certaines commandes dans ℤ/pℤ ou dans ℤ/pℤ[x], il faut choisir un nombre p premier.
- La représentation choisie est la représentation symétrique :
  11%13 = -2%13.

- Développer et réduire : normal
- Addition dans ℤ/pℤ ou dans ℤ/pℤ[x] : +
- Soustraction dans ℤ/pℤ ou ℤ/pℤ[x] : -
- Multiplication dans ℤ/pℤ ou ℤ/pℤ[x] : *
- Quotient : quo
- Remainder : rem
- Quotient and remainder : quorem
- Division dans ℤ/pℤ ou ℤ/pℤ[x] : /
- Puissance dans ℤ/pℤ et dans ℤ/pℤ[x] : ^
- Calcul de an mod p ou de A(x)n mod P(x),p: powmod powermod
- Inverse dans ℤ/pℤ : inv ou /
- Transformer un entier en sa fraction modulo p : fracmod iratrecon
- PGCD dans ℤ/pℤ[x] : gcd
- Factorisation dans ℤ/pℤ[x] : factor factoriser
- Déterminant d’une matrice de ℤ/pℤ : det
- Inverse d’une matrice de ℤ/pℤ : inv inverse
- Résolution d’un système linéaire de ℤ/pℤ : rref
- Construction d’un corps de Galois : GF
- Factorisation d’un polynôme à coefficients dans un corps de Galois : factor

## 6.36 Le calcul modulaire comme Maple dans ℤ/pℤ[x]

- Quotient euclidien : Quo
- Reste euclidien : Rem
- PGCD dans ℤ/pℤ[x] : Gcd
- Factorisation dans ℤ/pℤ[x] : Factor
- Déterminant d’une matrice de Z/pZ : Det
- Inverse d’une matrice de ℤ/pℤ : Inverse
- Résolution d’un système linéaire de ℤ/pℤ : Rref

## 6.37 Développements limités et asymptotiques

- Division selon les puissances croissantes : divpc
- Développement limité : taylor
- Développement limité : series
- Développement de Taylor d’une fonction de plusieurs variables : series taylor
- Développement réciproque d’un développement en séries en 0 : revert
- Résidu d’une expression en un point : residue
- Développement de Padé: pade

## 6.38 Les plages de valeurs

- Définition d’une plage de valeurs : a1..a2
- Pour accéder aux bornes d’une plage de valeurs : left gauche right droit
- Centre d’une plage de valeurs : interval2center
- Plages de valeurs définies par leur centre : center2interval

## 6.39 Les intervalles

- Définition : i[]
- Somme de 2 intervalles
- Opposé d’un intervalle
- Produit de 2 intervalles
- Inverse d’un intervalle
- Pour accéder aux bornes d’un intervalle : left gauche right droit
- Milieu d’un intervalle : midpoint milieu
- Union de 2 intervalles : union
- Intersection de 2 intervalles : intersect
- Tester si un élément est dans un intervalle : contains
- Convertir un nombre en un intervalle : convert

## 6.40 Les séquences

- Définition : seq[] ()
- Concaténer deux séquences : ,
- Pour accéder à un élément d’une séquence : []
- Pour extraire une sous-séquence d’une séquence : []
- Pour fabriquer une séquence ou une liste : seq $
- Pour transformer une séquence en liste : [] nop
- L’effet de l’opérateur + sur deux séquences

## 6.41 Les ensembles

- Définition : set[]
- Tester si 2 ensembles (ou listes) sont inclus(e) l’un(e) dans l’autre :is_included, est_inclus
- Union de deux ensembles ou de deux listes : union
- Intersection de deux ensembles, de deux listes : intersect
- Différence de deux ensembles ou de deux listes : minus
- Délimiteur définissant un n-uplet : tuple
- Produit cartésien de 2 ensembles : *

## 6.42 Les listes ou les vecteurs

- Les différentes listes
- Comment définir une liste :makelist
- Aplatir une liste : flatten
- Accès à un élément ou à une sous-liste d’une liste : at []
  - Accès à un élément d’une liste
  - Accès à un élément d’une sous-liste d’une liste
- Extraire une sous-liste, d’une liste : at
- Extraire une sous-liste d’une liste : mid
- Avoir le premier élément d’une liste : head
- Supprimer l’élément ’indice donné dans une liste ou une chaine de caractères : suppress
- Insérer un élément dans une liste ou une chaine de caractères : insert
- Avoir la liste privée de son premier élément : tail
- Partie droite et gauche d’une liste : droit ou right, gauche ou left
- Avoir la liste permutée : revlist
- Avoir la liste permutée à partir de son n-ième élément : rotate
- Avoir la liste permutée à partir de son n-ième élément : shift
- Modifier un élément d’une liste : subsop
- Transformer une liste en séquence : op makesuite
- Transformer une séquence en liste : makevector []
- Longueur d’une liste : size nops length len
- Longueur d’une liste de listes : sizes
- Concaténer deux listes ou une liste et un élément: concat augment
- Rajouter un élément à la fin d’une liste : append
- Rajouter un élément au début d’une liste : prepend
- Trier : sort
- Trier une liste selon l’ordre croissant : SortA et sorta
- Trier une liste selon l’ordre décroissant : SortD sortd
- Sélectionner des éléments d’une liste : select
- Supprimer des éléments d’une liste : remove
- Tester si un élément est dans une liste : member
- Tester si un élément est dans une liste : contains
- Compter les éléments d’une liste ou d’une matrice vérifiant une propriété : count
- Nombre d’éléments ayant une valeur donnée : count_eq
- Nombre d’éléments inférieurs à une valeur : count_inf
- Nombre d’éléments supérieurs à une valeur : count_sup
- Somme des éléments d’une liste : sum add
- Somme cumulée des éléments d’une liste : cumSum
- Produit indicé : product mul
  - Produit des valeurs d’une expression : product
  - Produit des éléments d’une liste : product
- Appliquer une fonction d’une variable aux éléments d’une liste : map apply of
- Appliquer une fonction de plusieurs variables à un polynôme donné au format interne :map
- Appliquer une fonction de 2 variables aux éléments de 2 listes : zip
- Faire une liste de zéros : newList
- Faire une liste d’entiers : range
- Faire une liste avec une fonction : makelist
- Faire une liste aléatoire : randvector, ranv
- Liste des différences de termes consécutifs : deltalist
- Faire une matrice avec une liste : list2mat
- Faire une liste avec une matrice : mat2list

## 6.43 Fonctions utiles pour les vecteurs et les composantes d’un vecteur

- Les normes d’un vecteur : maxnorm l1norm l2norm norm
- Pour normaliser les composantes d’un vecteur : normalize unitV
- Somme terme à terme de deux listes : + .+
- Différence terme à terme de deux listes : - .-
- Produit terme à terme de deux listes : .*
- Quotient terme à terme de deux listes : ./
- Le produit scalaire : scalar_product dotprod dot dotP * scalar_Product produit_scalaire
- Le produit vectoriel : cross crossP crossproduct

## 6.44 Fonctions utiles pour les statistiques : mean moyenne,variance, stddev ecart_type, stddevp ecart_type_population, stdDev, median, quantile, quartiles, quartile1, quartile3, boxwhisker, moustache

Voir aussi 6.51.5 and 8.
Fonctions utiles pour les statistiques dont les donn’ees sont des listes :

- mean ou moyenne pour calculer la moyenne des éléments d’une liste.
  On tape :
  mean([3,4,2])
  On obtient :
  3
  On tape :
  mean([1,0,1])
  On obtient
  2/3
- stddev ou ecart_type pour calculer l’écart type numèrique des éléments d’une liste.
  On tape :
  stddev([3,4,2])
  On obtient :
  sqrt(2/3)
  On a en effet la moyenne qui vaut 3 et l’écart type qui vaut :
  √((3−3)2+(4−3)2+(2−3)2)/3=√2/3
- stddevp ou stdDev ou ecart_type_population pour calculer une estimation de l’écart type numèrique de la population à partir d’un échantillon dont les éléments sont donnés dans une liste.
  On tape :
  stddevp([3,4,2])
  On obtient :
  1
  On a en effet la moyenne qui vaut 3 et l’écart type qui vaut :
  √((3−3)2+(4−3)2+(2−3)2)/2=√2/2=1
  On a la relation :
  stddevp(l)`^`2=size(l)*stddev(l)`^`2/(size(l)-1).
- variance pour calculer la variance numèrique des éléments d’une liste.
  On tape :
  variance([3,4,2])
  On obtient :
  2/3
- median pour calculer la médiane des éléments d’une liste.
  On tape :
  median([0,1,3,4,2,5,6])
  On obtient :
  3.0
- quantile pour calculer les déciles des éléments d’une liste.
  On tape :
  quantile([0,1,3,4,2,5,6],0.25)
  On obtient le premier quartile :
  [1.0]
  On tape :
  quantile([0,1,3,4,2,5,6],0.5)
  On obtient la médiane :
  [3.0]
  On tape :
  quantile([0,1,3,4,2,5,6],0.75)
  On obtient le troisième quartile :
  [5.0]
- quartiles calcule le minimum, le premier quartile, la médiane, le troisième quartile et le maximum d’une serie statistique.
  On tape :
  quartiles([0,1,3,4,2,5,6])
  On obtient :
  [[0.0],[1.0],[3.0],[5.0],[6.0]]
- quartile1 calcule le premier quartile d’une serie statistique.
  On tape :
  quartile1([0,1,3,4,2,5,6])
  On obtient :
  1.0
- quartile3 calcule le troisième quartile d’une serie statistique.
  On tape :
  quartile3([0,1,3,4,2,5,6])
  On obtient :
  5.0
- boxwhisker ou moustache pour afficher la boite à moustaches des éléments d’une liste.
  On tape :
  moustache([0,1,3,4,2,5,6])
  On obtient le dessin de la boite à moustaches de la liste mise comme paramètre.

Soit A la liste [0,1,2,3,4,5,6,7,8,9,10,11].
On tape :
A:=[0,1,2,3,4,5,6,7,8,9,10,11]
On obtient :
11/2 pour mean(A)
sqrt(143/12) pour stddev(A)
0 pour min(A)
[1.0] pour quantile(A,0.1)
[2.0] pour quantile(A,0.25)
[5.0] pour median(A) ou pour quantile(A,0.5)
[8.0] pour quantile(A,0.75)
[9.0] pour quantile(A,0.9)
11 pour max(A)
[[0.0],[2.0],[5.0],[8.0],[11.0]] pour quartiles(A)
Voir aussi ces fonctions pour les matrices à la section 6.51.5 et pour les listes pondérées au chapitre 8.

## 6.45 Les tableaux indicés par des chaînes : table

Une table est une liste indicée par quelque chose de plus général que des entiers.
Une table peut être utilisée, par exemple, pour stocker des numèros de téléphone indicés par des noms.
Dans Xcas, les indices d’une table peuvent être n’importe quels objets de Xcas.
L’accés se fait par un algorithme qui trie par type puis utilise l’ordre de chaque type (par exemple < pour le type numérique, l’ordre lexicographique pour les chaines etc...).
Par exemple pour définir une table représentant une matrice creuse, on peut mettre des indices doubles entre des parenthèses. La commande matrix permet de transformer une table ainsi définie en une matrice.
Inversement table permet de transformer une matrice en une table. table a comme argument une liste ou une séquence d’égalité de la forme :
"nom_index"=valeur_element.
table renvoie cette table.
On tape :

T:=table(3=-10,"a"=10,"b"=20,"c"=30,"d"=40)

On tape :

T["b"]

On obtient :

20

On tape :

T[3]

On obtient :

-10

Pour définir une matrice creuse par une table, on tape par exemple :

B:=table([1,2] = 12,[2,3] = 13,[3,4] = 14)

Ou on tape de façon plus simple, on peut définir la variable B à l’aide d’une multi-affectation, à condition que la variable B soit purgée :

purge(B)
B[1..3,2..4]:=[12..14]

On tape :

B[1,2]

On obtient :

12

Attention
B n’est pas une matrice mais une table ! On obtient facilement une matrice à partir de B avec convert(B,array) ou matrix(B).
On tape :

B

On obtient :

table([1,2] = 12,[2,3] = 13,[3,4] = 14)

On tape :

b:=convert(B,array)

Ou on tape de façon plus simple :

b:=matrix(B)

On obtient :

[[0,0,0,0,0],[0,0,12,0,0],[0,0,0,13,0],[0,0,0,0,14]]

Remarque
On peut faire toutes les opérations matricielles sur les tables par exemple :
B*B, B+B
Ne pas oublier de faire purge(B) avant de définir la variable B à l’aide d’une multi-affectation.
Exemple
On veut coder les lettres "a","b",.."z" par 1,2,....26.
On tape :
alphab:="abcdefghijklmnopqrstuvwxyz";
puis :
code:=table(seq(alphab[j]=j+1,j=0..25));
On tape code["c"]
On obtient 3
ou bien on écrit une fonction :

    Code(a):={
    local code,alphab,j;
    alphab:="abcdefghijklmnopqrstuvwxyz";
    code:=table(seq(alphab[j]=j+1,j=0..25));
    return code(a);
    };

On tape Code("c")
On obtient 3
Remarque
Si on fait une affectation du type T[n]:= ... où T est le nom d’une variable et n un entier

- si la variable T contient une liste ou une séquence, alors le n-ième élément de T est modifié,
- si la variable T n’est pas assignée, une table T est créée avec une entrée (correspondant à l’indice n). Notez qu’après cette assignation T n’est pas une liste, bien que n soit un entier.

## 6.46 Les matrices particulières

Une matrice est representée par une liste de listes de même longueur. Dans les réponses de Xcas, les matrices sont parenthésées avec []. Par exemple, [1,2,3] désigne la matrice [[1,2,3]] qui a une seule ligne, alors que [1,2,3] désigne la liste [1,2,3].
Dans ce document, on utilise la notation habituelle ( [[1,2,3]]) pour les matrices renvoyées comme réponses.

- Matrice identité : idn identity
- Matrice de zéros : newMat matrix
- Matrice aléatoire : ranm randMat randmatrix
- Diagonale d’une matrice ou matrice d’une diagonale : diag BlockDiagonal
- Matrice triangulaire inférieure ou supérieure associée à une matrice : diag
- Bloc de Jordan : JordanBlock
- Matrice de Hilbert : hilbert
- Matrice de Vandermonde : vandermonde

## 6.47 Création des matrices et extraction d’éléments

- Création et modification par affectation
- Création par multi-affectation
- Faire une matrice avec une fonction : makemat
- Définir une matrice : matrix
- Modifier un élément ou une ligne d’une matrice contenue dans une variable : := et =<

## 6.48 Arithmétique des matrices

- Pour évaluer une matrice : evalm
- Addition et soustraction de deux matrices : + - .+ .-
- Multiplication de deux matrices : * &*
- Addition des éléments d’une même colonne d’une matrice : sum
- Somme cumulée des éléments d’une même colonne d’une matrice : cumSum
- Multiplication des éléments d’une même colonne d’une matrice : product
- Elévation d’une matrice à une puissance entière : ^ &^
- Produit de Hadamard : hadamard product
- Produit de Hadamard (version infixée): .*
- Division de Hadamard (version infixée): ./
- Puissance de Hadamard (version infixée): .^

## 6.49 Extraire des élément(s) ou des sous-matrices d’une matrice

- Extraire un ou des élément(s) d’une matrice : at
- Extraire des lignes ou des colonnes d’une matrice (compatibilité Maple) : row col
- Extraire une sous-matrice d’une matrice (compatibilité TI) : subMat

## 6.50 Modifier une matrice

- Modifier un élément ou une ligne d’une matrice : subsop
- Redimensionner une matrice ou un vecteur : REDIM
- Remplacer une partie d’une matrice ou d’un vecteur : REPLACE
- Supprimer des lignes ou des colonnes d’une matrice : delrows delcols
- Redimensionner une matrice ou un vecteur : redim
- Remplacer une partie d’une matrice ou d’un vecteur : replace
- Ajouter une ligne à une autre : rowAdd
- Multiplier une ligne par une expression : mRow et scale SCALE
- Ajouter k fois une ligne à une autre : mRowAdd et scaleadd SCALEADD
- Échanger deux lignes : rowSwap swaprow rowswap
- Échanger deux colonnes : colSwap swapcol colswap
- Faire une matrice avec une liste de matrices : blockmatrix
- Faire une matrice avec deux matrices : semi_augment
- Faire une matrice avec deux matrices : augment concat
- Rajouter une colonne à une matrice : border

## 6.51 Pour compter...

- Compter les éléments d’une matrice vérifiant une propriété : count
- Compter les éléments ayant une valeur donnée : count_eq
- Compter les éléments plus petits qu’une valeur donnée : count_inf
- Compter les éléments plus grands qu’une valeur donnée : count_sup
- Fonctions utiles pour les colonnes d’une matrice : mean ou moyenne, stddev ou ecart_type, variance, median, quantile, quartiles, boxwhisker ou moustache
- Dimension d’une matrice : dim
- Nombre de lignes : rowdim rowDim nrows
- Nombre de colonnes : coldim colDim ncols

## 6.52 Définition des matrices creuses : matrix

- Définition
- Opérations

## 6.53 Algèbre linéaire

- Transposée d’une matrice : tran transpose
- Inverse d’une matrice : inv inverse /
- Trace d’une matrice : trace
- Déterminant d’une matrice : det
- Déterminant d’une matrice creuse : det_minor
- Rang d’une matrice : rank
- Matrice adjointe : trn
- Matrice équivalente : changebase
- Base d’un sous espace vectoriel : basis
- Base de l’intersection de deux sous espaces vectoriels : ibasis
- Image d’une application linéaire : image
- Noyau d’une application linéaire : kernel nullspace ker
- Noyau d’une application linéaire : Nullspace
- Espace engendré par les colonnes d’une matrice : colspace
- Espace engendré par les lignes d’une matrice : rowspace

## 6.54 Programmation linéaire

- La commande Xcas : simplex_reduce
- Écriture matricielle et algorithme du simplexe
- Premier cas : 3 arguments
- Deuxième cas: un argument
- Passage de la forme standard à la forme canonique
- Résolution d’un problème d’optimisation linéaire : lpsolve
  - Problèmes à variables continues
  - Integer programming
  - Entering linear programs in matrix form
- Solving transportation problems: tpsolve

## 6.55 Nonlinear optimization

- Global extrema: minimize maximize
  - Examples
- Local extrema: extrema
  - Examples
- Minimax polynomial approximation: minimax

## 6.56 Les différentes norme d’une matrice

Voir aussi 6.43.1 pour les différentes norme d’un vecteur.

- Norme de Frobenius d’une matrice : frobenius_norm
- Norme d’une matrice avec la norme des lignes : rownorm rowNorm
- Norme d’une matrice avec la norme des colonnes : colnorm colNorm
- La triple norme d’une matrice : matrix_norm et l1norm, l2norm ou norm ou specnorm, linfnorm
- Norme : COND cond

## 6.57 Réduction des matrices

- Valeurs propres : eigenvals eigenvalues
- Matrice de Jordan : egvl eigVl
- Vecteurs propres : egv eigenvectors eigenvects eigVc
- Matrice de Jordan rationnelle : rat_jordan
- Matrice de passage et matrice de Jordan : jordan
- Puissance n d’une matrice carrée : matpow
- Polynôme caractéristique : pcar charpoly
- Polynôme caractéristique d’une matrice creuse de grande dimension: pcar_hessenberg
- Polynôme minimal : pmin
- Comatrice : adjoint_matrix
- Matrice compagnon d’un polynôme : companion
- Réduction de Hessenberg d’une matrice : hessenberg
- Forme normale de Hermite : ihermite
- Forme normale de Smith dans ℤ : ismith
- Forme normale de Smith : smith

## 6.58 Les isométries

- Reconnaitre une isométrie : isom
- Trouver la matrice d’une isométrie : mkisom

## 6.59 Factorisation des matrices

La factorisation des matrices renvoie en général des matrices numériques et quelquefois des matrices symboliques.

- Décomposition de Cholesky : cholesky
- Décomposition QR : qr
- Décomposition QR (compatible TI) : QR
- Décomposition LQ (compatible HP) : LQ
- Décomposition LU : lu
- Décomposition LU (compatible TI): LU
- Valeurs singulières (compatible HP) : SVL svl
- Singular value decomposition : svd
- Singular value decomposition (compatible HP) : SVD
- Recherche d’une base de vecteurs courts d’un réseau : lll

## 6.60 Les formes quadratiques

- Matrice d’une forme quadratique : q2a
- Transformer une matrice en une forme quadratique : a2q
- Méthode de Gauss : gauss
- Algorithme du gradient conjugué : conjugate_gradient
- Procédé de Gramschmidt : gramschmidt
- Tracé d’une conique : conic conique
- Réduction d’une conique : conique_reduite reduced_conic
- Tracé d’une quadrique : quadrique
- Réduction d’une quadrique : quadrique_reduite reduced_quadric

## 6.61 Les expressions de plusieurs variables

- Le gradient : derive deriver diff grad
- Le Laplacien : laplacian
- La matrice hessienne : hessian
- La divergence : divergence
- Le rotationnel : curl
- Le potentiel : potential
- Champ à flux conservatif : vpotential

## 6.62 Équations

- Écrire une équation : equal
- Transformer une équation en diffèrence : equal2diff
- Transformer une équation en une liste : equal2list
- Pour avoir le membre de gauche d’une équation : left gauche lhs
- Pour avoir le membre de droite d’une équation : right droit rhs
- Résolution d’équations : solve resoudre
- Résoudre des équations dans ℂ : resoudre_dans_C csolve cSolve

## 6.63 Les systèmes linéaires

Dans tout ce paragraphe, on appelle "matrice augmentée" du système A*X=B la matrice formée par la matrice A bordée à droite par le vecteur colonne B ("matrice augmentée" du système A*X=B=border(A,tran(B))).

- Matrice d’un système : syst2mat
- Réduction de Gauss d’une matrice : ref
- Réduction de Gauss-Jordan : rref gaussjord
- Résolution de A*X=B : simult
- Étape de la réduction de Gauss-Jordan d’une matrice : pivot
- Résoudre un système linéaire : linsolve resoudre_systeme_lineaire
- Résoudre un système linéaire par la méthode itérative de Jacobi : jacobi_linsolve
- Résoudre un système linéaire par la méthode itérative de Gauss-Seidel : gauss_seidel_linsolve
- Norme minimale d’un système linéaire : LSQ lsq
- Résolution d’une récurrence linéaire : reverse_rsolve

## 6.64 Les équations différentielles

Pour le calcul numérique de solutions déquations différentielles on se reportera à odesolve et pour la représentation graphique de solutions déquations différentielles on se reportera à plotfield, plotode, interactive_plotode.

- Équations différentielles : desolve deSolve dsolve
- Transformée de Laplace et transformée de Laplace inverse : laplace ilaplace invlaplace

## 6.65 Transformée en z et transformée en z inverse

- Transformée en z d’une suite, la fonction ztrans : ztrans
- Transformée en z inverse d’une fraction rationnelle, la fonction invztrans : invztrans

## 6.66 Autres fonctions

- Négliger les petites valeurs : epsilon2zero
- Liste des variables : lname indets
- Liste des variables et des expressions : lvar
- Liste des variables et des expressions algébriques : algvar
- Test de la présence d’une variable dans une expression : has
- Pseudo-variable gérant les extensions algébriques : keep_algext
- Évaluation numérique : evalf
- Approximation rationnelle : float2rational exact

## 6.67 Lejour de la semaine : dayofweek

dayofweek(j,m,a renvoie 0 pour dimanche, 1 pour lundi ...6 pour samedi pour çindiquer le jour de la semaine qui correspond à la date donnée en argument date supérieure au 15 octobre 1582. On tape :

dayofweek(15,10,1582)

On obtient :

5

Donc le 15 octobre 1582 était un vendredi. En effet le calendrier grégorien date du 15 octobre 1582 (le lendemain du jeudi 4 octobre 1582 fut le vendredi 15 octobre 1582 car avant les annèes bissextiles étaient tous les 4 ans ce qui donne comme durée moyenne de l’annèe civile 365.25 jours alors que la révolution de la terre autour du soleil est plus courte (365.242 jours) d’où un décalage qui était de 10 jours en 1582.
Avec la nouvelle règle (la dernière année de chaque siécle est bissextile si son millésime est divisble par 400) l’écart n’est plus que de l’ordre de 1 jour tous les 3000 ans.
On tape :

dayofweek(1,10,2014)

On obtient :

3

Donc le 1ier octobre 2014 était un mercredi.

# Chapitre 7 Propriétés métriques des courbes planes ou gauches

## 7.1 Tangente et plans tangents

Soit une courbe Γ lieu des points M=M(t) de coordonnées x(t),y(t),z(t) dans un repère orthonormé Oxyz.
Le vecteur directeur de la tangente à Γ est le premier vecteur T= dpM/dtp qui ne soit pas nul.
À chaque tangente en M on associe :
une infinité de plans tangents qui sont les plans contenant T et
une infinité de normales qui sont toutes perpendiculaires en M à T et qui forment le plan normal en M.

## 7.2 Place de la courbe par rapport à un plan tangent

Comment se place la courbe par rapport à un certain plan Π tangent en M à Γ ? Soit N la normale qui est perpendiculaire à Π en M.
Soit M1 un point de Γ et m1 la projection de M1 sur T.
Mm1 a le sens de (t1−t)pdpM/dtp ( dpM/dtp étant le premier vecteur derivé de OM non nul.
M1 est dans la même région par rapport à Pi que le vecteur (t1−t)qdqM/dtq où (t1−t)qdqM/dtq est la première des dérivées suivantes qui soit non nulles et non situés dans Pi

## 7.3 Notion d’abscisse curviligne :

Soit une courbe Γ lieu des points M=M(t) de coordonnées x(t),y(t),z(t) dans un repère orthonormé Oxyz.
On suppose que x(t),y(t),z(t) sonr continues , dérivables et à dérivées continues.
On note dM/dt le vecteur de coordonnées x′(t),y′(t),z′(t) qui est un vecteur tangent à Γ quelque soit t.
On introduit un nouveau paramétre s pour Γ pour que dM/ds soit unitaire c’est à dire tel que :
ds2=dx2+dy2+dz2
Cette relation définie da dérivée de s par rapport à t au signe près :
ds/dt=√x′(t)2+y′(t)2+z′(t)2 si on oriente Γ selon les t croissants,
ds/dt=−√x′(t)2+y′(t)2+z′(t)2 si on oriente Γ selon les t décroissants.
On appelle abscisse curviligne à partir de l’origine M0=M(t0), la fonction s(t) ayant pour dérivée : ds/dt=√x′(t)2+y′(t)2+z′(t)2 (ou ds/dt=−√x′(t)2+y′(t)2+z′(t)2 selon l’orientation choisie) et telle que s(t0)=0.
La tangente orientée de Γ au point M est alors :
τ= dM/ds qui est le vecteur :
en coordonnées cartésiennes : τ=(dx/ds,dy/ds,dz/ds).
en coordonnées semi-polaires τ=(dρ/ds,ρ dθ/ds,dz/ds).

## 7.4 Le plan osculateur

Soit une courbe Γ lieu des points M=M(t) de coordonnées x(t),y(t),z(t) dans un repère orthonormé Oxyz.
Le vecteur directeur de la tangente à Γ est le premier vecteur dpM/dtp qui ne soit pas nul.
Considérons le cas le plus courant où dM/dt et d2M/dt2 sont non nuls et non colinéaires. Le plan osculateur est le plan des deux vecteurs dM/dt et d2M/dt2 et plus généralement le plan des deux premiers vecteurs : dpM/dtp et dp+hM/dtp+h qui ne sont ni nuls et ni colinéaires.
Remarque Le plan osculateur comme la tangente ne dépend pas du paramètre utilisé.
Le vecteur d2M/ds2=dτ/ds est donc dans le plan osculateur et il est orthogonal à τ. On appelle normale principale l’intersection du plan normal (plan perpendiculaire à la tangente τ) et du plan osculateur.
Soit n le vecteur unitaire de la normale principale orientée dans le sens de la concavité i.e. selon dτ/ds

## 7.5 Courbure et Cercle osculateur

- Courbure : curvature, courbure
- Première formule de Frenet
- Cercle osculateur : osculating_circle
- Applications

## 7.6 Torsion

- Trièdre de Frenet
- Deuxième et troisième formule de Frenet

## 7.7 Cas des courbes planes

Lorsque Γ est une courbe du plan Oxy : son plan osculateur est le plan Oxy.
La torsion d’une courbe plane est nulle.
Soit α l’angle (Ox,τ. On a alors :
1/R dα/ds et donc :
ds/dα=R
Soit ν tel que (τ ν)=π/2, on a ;
dτ =ν dα et si c est le centre de courbure en M on a :
MC= ds/dαν

## 7.8 Développée d’une courbe plane : evolute

On appelle développée d’une courbe plane Γ, le lieu des centres de courbure de Γ : c’est aussi l’enveloppe de ses normales. Exemple
Trouver la développée de la spirale logarithmique :
ρ=3eθ/2.
On tape :
developpee([3*exp(t/2)*cos(t),3*exp(t/2)*sin(t)],t,affichage=2))
On obtient :
Définition : Développante d’une courbe plane On appelle développante d’une courbe plane Γ les courbes admettant Γ comme développée.

# Chapitre 8 Les fonctions de statistique

## 8.1 Les fonctions de Xcas de statistique à 1 variable

On va décrire les différentes fonctions statistiques sur un exemple :
avec la liste A:=[0,1,2,3,4,5,6,7,8,9,10,11]
- en prenant comme série statistique d’effectif 1 la liste A, ou
- en prenant comme série statistique la liste A avec comme effectifs encore la liste A.
On tape :
A:=[0,1,2,3,4,5,6,7,8,9,10,11]
On pourra se reporter aussi à 6.44 lorsque les arguments sont des listes et à 6.51.5 lorsque les arguments sont des matrices.

- La moyenne : mean moyenne
- L’écart-type : stddev ecart_type
- L’écart-type de la population : ecart_type_population stddevp stdDev
- La variance : variance
- La médiane : median
- Différentes valeurs statistiques : quartiles
- Le premier quartile : quartile1
- Le troisième quartile : quartile3
- Les déciles : quantile
- Le regroupement en classes : classes
- Regroupement de termes : accumulate_head_tail
- La boite à moustaches : boxwhisker moustache
- L’histogramme : histogram histogramme
- Les fréquences : frequencies frequences
- Les fréquences cumulées : cumulated_frequencies frequences_cumulees
- Dessiner un diagramme en batons : diagramme_batons
- Dessiner un diagramme en camembert : camembert

## 8.2 Les fonctions statistiques à 2 variables

On continue à utiliser la liste A dans les exemples.
On tape :

A:=[0,1,2,3,4,5,6,7,8,9,10,11]

- La covariance : covariance
- La corrélation : correlation
- Covariance et corrélation : covariance_correlation
- Le nuage de points : scatterplot nuage_points
- Les batons du nuage de points : batons
- Ligne polygonale : polygonplot ligne_polygonale
- Ligne polygonale : listplot plotlist
- Ligne polygonale et nuage de points : polygonscatterplot ligne_polygonale_pointee
- Interpolation linéaire : linear_interpolate
- Régression linéaire : linear_regression
- Graphe de la régression linéaire : linear_regression_plot
- Régression exponentielle : exponential_regression
- Graphe de la régression exponentielle : exponential_regression_plot
- Régression logarithmique : logarithmic_regression
- Graphe de la régression logarithmique : logarithmic_regression_plot
- Régression polynômiale : polynomial_regression
- Graphe de la régression polynomiale : polynomial_regression_plot
- Régression puissance : power_regression
- Graphe de la régression puissance : power_regression_plot
- Régression logistique : logistic_regression
- Graphe de la régression logistique : logistic_regression_plot

## 8.3 Les fonctions aléatoires de Xcas

- Pour initialiser les nombres aléatoires : srand randseed RandSeed
- Tirage équiréparti rand alea hasard
  - Tirage équiréparti sur [0,1[ : rand() randnorm() alea() hasard
  - Tirage aléatoire équiréparti sur l’intervalle [a;b[ : rand(a,b) random(a,b) hasard(a,b) rand(a..b)() hasard(a..b)()
  - Tirage aléatoire d’entiers équirépartis sur [0,..,n[ : rand(n) alea(n) hasard(n)
  - Tirage aléatoire d’entiers équirépartis sur [n1,..,n2] : randint(n1,n2)
  - Tirage aléatoire sans remise de p objets parmi n : rand alea hasard
- Tirage selon une loi binomiale : randbinomial
- Tirage selon une loi multinomiale : randmultinomial
- Tirage selon une loi de Poisson : randpoisson
- Tirage selon une loi normale : randnorm randNorm
- Tirage selon une loi exponentielle : randexp
- Matrice aléatoire : ranm randmatrix randMat

## 8.4 Densité, fonction de répartition et leur inverse

- Probabilité que X égale k lorsque X ∈ B(n,p) : binomial
- Fonction de répartition de la loi binomiale : binomial_cdf
- Fonction de répartition inverse de la loi binomiale: binomial_icdf
- Probabilité que X égale k lorsque X ∈ N eg B in(n,p) : negbinomial
- Fonction de répartition de la loi binomiale négative : negbinomial_cdf
- Fonction de répartition inverse de la loi binomiale négative : negbinomial_icdf
- Probabilité que X égale [k0,k1..kj]+K lorsque X suit une loi multinomiale de probabilité [p0,p1,..pj]=P : multinomial
- Probabilité pour que X égale k lorsque X∈ P(µ) : poisson
- Fonction de répartition de Poisson : poisson_cdf
- Fonction de répartition inverse de Poisson : poisson_icdf
- Densité de probabilité de la loi normale : loi_normale normald
- Fonction de répartition de la loi normale : normal_cdf normald_cdf
- Fonction de répartition inverse normale : normal_icdf normald_icdf
- Complément à 1 de la fonction de répartition de la loi normale : UTPN
- Densité de probabilité de la loi de Student : student studentd
- Fonction de répartition de la loi de Student : student_cdf
- Fonction de répartition inverse de Student : student_icdf
- Complément à 1 de la fonction de répartition de la loi de Student : UTPT
- Densité de probabilité de la loi du χ2 : chisquare chisquared
- Fonction de répartition de la loi du χ2 : chisquare_cdf
- Fonction inverse de la fonction de répartition de la loi du χ2 : chisquare_icdf
- Complément à 1 de la fonction de répartition de la loi du χ2 : UTPC
- Densité de probabilité de la loi de Fisher-Snédécor : fisher fisherd snedecor snedecord
- La fonction de répartition de la loi de Fisher-Snédécor : fisher_cdf snedecor_cdf
- Inverse de la fonction de répartition de la loi de Fisher-Snédécor : fisher_icdf snedecor_icdf
- Complément à 1 de la fonction de répartition de la loi de Fisher-Snédécor : UTPF
- Densité de probabilité de la loi gamma : gammad
- Fonction de répartition de la loi gamma : gammad_cdf
- Fonction de répartition inverse de la loi gamma : gammad_icdf
- Densité de probabilité de la loi beta : betad
- Fonction de répartition de la loi beta : betad_cdf
- Fonction de répartition inverse de la loi beta : betad_icdf
- Densité de probabilité de la loi géométrique : geometric
- Fonction de répartition de la loi géométrique : geometric_cdf
- Fonction de répartition inverse de la loi géométrique : geometric_icdf
- Densité de probabilité de la loi de Cauchy : cauchy cauchyd
- Fonction de répartition de la loi de Cauchy : cauchy_cdf cauchyd_cdf
- Fonction de répartition inverse de la loi de Cauchy : cauchy_icdf cauchyd_icdf
- Densité de probabilité de la loi uniforme : uniform uniformd
- Fonction de répartition de la loi uniforme : uniform_cdf uniformd_cdf
- Fonction de répartition inverse de la loi uniforme : uniform_icdf uniformd_icdf
- Densité de probabilité de la loi exponentielle : exponential exponentiald
- Fonction de répartition de la loi de exponentielle : exponential_cdf exponentiald_cdf
- Fonction de répartition inverse de la loi exponentielle : exponential_icdf exponentiald_icdf
- Densité de probabilité de la loi de Weibull : weibull weibulld
- Fonction de répartition de la loi de Weibull : weibull_cdf weibulld_cdf
- Fonction de répartition inverse de la loi de Weibull : weibull_icdf weibulld_icdf
- Distribution de Kolmogorov-Smirnov : kolmogorovd
- Test de Kolmogorov-Smirnov : kolmogorovt
- Polynome donnant la distribution du test de Wilcoxon ou de Mann-Whitney wilcoxonp
- Statistique de Wilcoxon ou de Mann-Whitney wilcoxons
- Test de Wilcoxon ou de Mann-Whitney wilcoxont
- Fonction génératrice des moments d’une loi de probabilité: mgf
- Distribution cumulée pour une loi de probabilité : cdf
- Distribution cumulée inverse pour une loi de probabilité : icdf
- Chaine de Markov : markov
- Génération d’une marche aléatoire sur un graphe d’état : randmarkov

## 8.5 Les tests d’hypothèses

- Généralités
- normalt
- studentt
- chisquaret
- kolmogorovt
- Des exemples

# Chapitre 9 Les fonctions de programmation

## 9.1 La forme d’une fonction, d’un programme et d’un script

- Le choix de l’éditeur
- La forme d’une fonction
- Valeurs par défaut des paramètres d’une fonction
- La forme d’un programme
- La forme d’un script

## 9.2 Exécuter une fonction pas à pas

On peut exécuter une fonction pas à pas, en utilisant le debuggeur :
on se sert de l’instruction debug avec comme argument une fonction et ses arguments et cela permet d’exécuter la fonction pas à pas. On a alors la possibilité de voir l’évolution des variables de son choix (on se reportera pour plus de détails à la section 9.7).

## 9.3 La séquence d’instructions

Un bloc d’instructions ou une séquence d’instructions doit être parenthésé soit par {}, soit par begin et end.
Entre ces accolades (ou entre begin et end) on met les instructions en les terminant par un point-virgule ;

## 9.4 Les instructions de base

- Les commentaires : comment //
- Les entrées : input, saisir, Input, InputStr, saisir_chaine, textinput
- Fonction testant si une touche est pressée : getKey
- Fonction testant si une condition est vérifiée : assert
- Fonction testant le type de son argument: type
- Fonction testant les sous-type du type DOM_LIST : subtype
- Fonction testant le type de son argument: getType
- Fonction testant le type de son argument: compare
- Les sorties : print, Disp, afficher
- Pour effacer les sorties : ClrIO
- Les sorties de ab : printpow
- Sortie dans une petite fenêtre : output Output
- Les affectations infixées : => := =<
- L’affectation par copie : copy
- Les différences entre :=, =< et copy
- Les instructions copy et =< dans un programme
- L’affectation prefixée : sto Store
- L’affectation d’une égalité : assign
- L’instruction conditionnelle : if then else end, si alors sinon fsi
- L’instruction conditionnelle : if then elif else end
- L’instruction conditionnelle : switch
- La boucle : for pour fpour
- La fonction : seq
- La boucle : repeat until et repeter jusqua
- La boucle : while et tantque
- Modifier l’ordre d’exécution des instructions : label goto

## 9.5 Les autres instructions

- Pour lire les entrées à partir d’un fichier : read
- Pour écrire des variables et leur contenu dans un fichier : write
- Pour écrire des sorties dans un fichier : fopen fprint fclose
- Pour utiliser une chaîne comme nom de variable ou comme nom de fonction : #
- Pour utiliser une chaîne comme un nombre : expr
- Pour utiliser une chaîne comme nom de commande : expr
- Évaluer une expression sous la forme d’une chaîne : string

## 9.6 D’autres instructions utiles

- Définir une fonction ayant un nombre variable d’arguments : args
- Pour sortir d’une boucle : break
- Pour ne pas faire la fin d’une boucle : continue
- Ouvrir l’ècran DispG depuis un programme : DispG
- Effacer l’ècran DispG depuis un programme : ClrGraph
- Fermer l’ècran DispG depuis un programme : DispHome

## 9.7 Le debuggeur

- Ouvrir le débuggeur : debug
- Instruction du debuggeur : watch
- Instruction du debuggeur : rmwatch
- Instruction du debuggeur : breakpoint
- Instruction du debuggeur : rmbreakpoint
- Instruction du debuggeur : cont
- Instruction du debuggeur : kill tuer
- Instruction en vue d’un debugage : halt
- Utilisation des instructions du debuggeur : cont halt kill
- Avoir un arrêt momentané : Pause
- Avoir un arrêt momentané : WAIT
- Intercepter une erreur : try..catch
- Générer une erreur : throw error ERROR

# Chapitre 10 Les fonctions de géométrie 2-d

## 10.1 Généralités

Toutes les commandes graphiques faites dans une ligne d’entrée auront en réponse l’ouverture d’un écran graphique.
Les dessins de la géométrie 2-d se font en général dans un écran de géométrie 2-d qui est un écran graphique interactif muni d’un éditeur de commandes et d’une barre de menus (on ouvre un écran de géométrie 2-d avec Alt+g).
Les dessins faits dans un écran de géométrie 2-d sont interactifs : on peut définir des points et des segments avec la souris et modifier une figure en faisant bouger un de ses points avec la souris.

## 10.2 Les fonctions de base

- Effacer l’écran DispG : erase
- Effacer les axes : switch_axes
- Tracer les vecteurs unitaires : vecteur_unitaire_Ox_2d Ox_2d_unit_vector, vecteur_unitaire_Oy_2d, Oy_2d_unit_vector
- Tracer un repère : repere_2d frame_2d
- Effacer les points définis par TX et TY
- Avoir du papier pointé : papier_pointe dot_paper
- Avoir du papier avec des lignes : papier_ligne line_paper
- Avoir du papier quadrillé : papier_quadrille grid_paper
- Avoir du papier triangulé : papier_triangule triangle_paper
- Changer les paramètres de la fenêtre graphique : xyztrange

## 10.3 Les attributs des objets graphiques

- Généralités sur les attributs
- Les commandes d’attributs
- Les paramètres optionnels d’attributs
- Mettre une légende : legende
- Les commandes d’affichage : display color affichage couleur
  - Pour ne pas afficher le nom de l’objet
  - Mettre de la couleur
  - Pour dessiner une figure pleine
  - Les différents affichages de points
  - Les différents formes d’affichage des lignes
  - Les différentes épaisseurs d’affichage des lignes

## 10.4 Comment définir un objet géométrique sans le tracer : nodisp

nodisp appliqué à une commande permet de ne pas afficher la réponse, même quand il s’agit d’une commande graphique.
On peut aussi terminer la commande par :; pour ne pas générer de réponse.
On tape :

C:=point(1+i)
cercle(C,sqrt(2))

On obtient :

Le point C d’affixe 1+i et le cercle de centre C et de rayon sqrt(2) sont tracés

On tape :

nodisp(C:=point(1+i))

Ou on tape :

C:=point(1+i):;

puis

cercle(C,sqrt(2))

On obtient :

Seul le cercle de centre 1+i et de rayon sqrt(2) est tracé

## 10.5 Comment définir et tracer sans nom, un objet géométrique

nodisp permet de définir un objet géométrique sans le tracer. On peut ensuite tracer l’objet en mettant comme commande son nom, mais alors, son nom n’apparaitra pas sur la figure.
On peut aussi définir un objet géométrique et utiliser eval. On tape :

nodisp(C:=point(1+i))

Ou on tape :

C:=point(1+i):;

puis on tape :

C

Ou on tape :

eval(C:=point(1+i))

On obtient :

Le point 1+i est marqué d’une croix mais il n’a pas de nom

## 10.6 Comment définir et tracer un objet géométrique avec son nom

L’affectation d’un objet géométrique dans une variable permet de définir cet objet géométrique et de le tracer avec une légende ayant comme nom, le nom de la variable.
Si on veut donner à cet objet géométrique un nom différent de celui de la variable, on peut définir l’objet géométrique avec une affectation qui se termine par :; et utiliser legende. Voici des exemples : On tape :

nodisp(B:=point(1+i))

Ou on tape :

B:=point(1+i):;

Le point B est défini mais n’est pas tracé.
puis on tape :

legende(B,"Bien")

Ou on tape :

point(affixe(B),legende="Bien")

On obtient :

Le point 1+i est marqué d’une croix et a comme nom "Bien"

Remarque
Si on veut définir l’objet géométrique sans le tracer, puis le faire apparaitre avec son nom, on peut aussi utiliser eval (voir la commande eval 6.14.2).
On tape :

nodisp(B:=point(1+i))

Ou on tape :

B:=point(1+i):;

Le point B est défini mais n’est pas tracé.
puis on tape :

B:=eval(B,1))

Ou on tape :

B:=B

Ou on tape :

legende(B,"B")

Ou on tape :

point(affixe(B),legende="B")

On obtient :

Le point 1+i est marqué d’une croix et a comme nom "B"

Si on tape :

B:=eval(B,2))

On obtient :

Le point 1+i est marqué d’une croix et n’a pas de nom

## 10.7 Comment faire une démonstration : assume

Pour pouvoir faire une démonstration en géométrie, il suffit de demander au calcul formel de faire les calculs, en choisisant bien les paramètres du problème et ces paramètres doivent être formels....En géométrie les points peuvent avoir des coordonnèes exactes ou numériques ou formelles. Mais pour faire une figure, il faut affecter les paramètres formels. On peut le faire de différentes façons :

- on utilise a commande assume avant la création du point à coordonnèes formelles. Par exemple assume(a=2.1);A:=point(a+i); fera la figure en donnant à a la valeur 2.1, mais a ne sera pas affecté dans les calculs qui seront faits ultérieurement avec le paramètre formel a : si on tape longueur(0,A), on obtient sqrt((-a)`^`2+1)
- on utilise l’écran de configuration des attributs d’un point déjà crée avec des coordonnèes exactes ou numériques et on coche la rubrique symb figurant sur cet écran.
  Pour faire apparaitre l’écran de configuration des attributs d’un point où figure la rubrique symb, il faut être en mode point ou en mode Pointeur et uniquement dans ces 2 modes. On suppose que l’on a déjà défini un point, par exemple A:=point(2.1,1). On clique sur A avec le bouton droit de la souris, on fait apparaitre l’écran de configuration des attributs du point A où figure la rubrique symb. On coche symb avec la souris et cela a pour effet de rajouter les deux lignes assume(Ax=[2.1,-5.0,5.0]), assume(Ay=[1,-5.0,5.0]) et de définir automatiquement le point A avec les coordonnées symboliques (Ax,Ay). Attention la rubrique symb n’apparait que dans l’écran de configuration des attributs d’un point non symbolique : autrement dit si on a défini un point avec des coordonnées symboliques c’est définitif !

## 10.8 Les points en géométrie plane

- Les points et les nombres complexes
- Le point en géométrie plane : point
- Différence ou somme de 2 points en géométrie plane : - +
- Définir au hasard un point 2-d : point2d
- Le point en polaire en géométrie plane : polar_point point_polaire
- Un des points d’intersection de deux objets géométriques : single_inter inter_unique inter_droite line_inter
- Les points d’intersection de deux objets géométriques : inter
- Orthocentre d’un triangle : orthocenter orthocentre
- Le milieu d’un segment : midpoint milieu
- L’isobarycentre de n points : isobarycenter isobarycentre
- Point défini comme barycentre de n points : barycenter barycentre
- Le centre d’un cercle : centre center
- Les sommets d’un polygone : vertices vertices_abc sommets sommets_abc
- Les sommets d’un polygone : vertices_abca sommets_abca
- Point sur un objet géométrique : element

## 10.9 Les droites en géométrie plane

- La droite et la droite orientée en géométrie plane : line droite
- La demi-droite en géométrie plane : half_line demi_droite
- Le segment en géométrie plane : segment
- Le vecteur en géométrie plane : segment
- Le segment : Line
- Le vecteur en géométrie plane : vector vecteur
- Les droites parallèles : parallel parallele
- Les droites perpendiculaires en 2-d : perpendicular perpendiculaire
- Les tangentes à un objet géométrique plan : tangent
- La médiane d’un triangle issue d’un sommet : median_line mediane
- La hauteur d’un triangle issue d’un sommet : altitude hauteur
- La médiatrice d’un segment : perpen_bisector mediatrice
- La bissectrice intérieure d’un angle : bisector bissectrice
- La bissectrice extérieur d’un angle : exbisector exbissectrice

## 10.10 Les triangles

Pour les dessins dans l’espace voir la section 11.7

- Généralités
- Le triangle quelconque : triangle
- Le triangle isocèle : isosceles_triangle triangle_isocele
- Le triangle rectangle : right_triangle triangle_rectangle
- Le triangle équilatèral : equilateral_triangle triangle_equilateral

## 10.11 Les quadrilatères

Voir aussi : 11.7.1 pour la géométrie 3-d.
Pour les dessins dans l’espace voir la section 11.8

- Généralités
- Le carré : square carre
- Le losange : rhombus losange
- Le rectangle : rectangle
- Le parallélogramme : parallelogram parallelogramme
- Le quadrilatère : quadrilateral quadrilatere

## 10.12 Les polygones

Voir aussi : 11.9 pour la géométrie 3-d.

- L’hexagone : hexagon hexagone
- Les polygones réguliers : isopolygon isopolygone
- Le polygone : polygon polygone
- La ligne polygonale : open_polygon polygone_ouvert
- L’enveloppe convexe de points du plan: convexhull

## 10.13 Les cercles

- Le cercle et ses arcs : circle cercle
- Les arcs de cercle : arc
- Les segments circulaires ou segments de cercle : arc
- Le cercle (compatibilité TI): Circle
- Le cercle inscrit : incircle inscrit
- Le cercle circonscrit : circumcircle circonscrit
- Le cercle exinscrit : excircle exinscrit
- Puissance d’un point par rapport à un cercle : powerpc puissance
- Axe radical de deux cercles : radical_axis axe_radical

## 10.14 Les coniques

- L’ellipse : ellipse
- L’hyperbole : hyperbola hyperbole
- La parabole : parabola parabole

## 10.15 Les mesures

- L’affixe d’un point ou d’un vecteur : affix affixe
- L’abscisse d’un point ou d’un vecteur : abscissa abscisse
- L’ordonnée d’un point ou d’un vecteur : ordinate ordonnee
- Les coordonnées d’un point, d’un vecteur ou d’une droite : coordinates coordonnees
- Les coordonnées rectangulaire d’un point : rectangular_coordinates coordonnees_rectangulaires
- Les coordonnées polaire d’un point : polar_coordinates coordonnees_polaires
- L’équation cartésienne d’un objet géométrique : equation
- L’équation paramétrique d’un objet géométrique : parameq

## 10.16 Les mesures

- Remarques générales sur l’affichage des mesures
- La longueur d’un segment et distance entre les deux objets géométriques : distance longueur
- La longueur d’un segment et son affichage : distanceat distanceen et distanceatraw distanceenbrut
- Le carré de la longueur d’un segment : distance2 longueur2
- La mesure d’un angle : angle
- La mesure d’un angle et son affichage : angleat angleen et angleatraw angleenbrut
- Représentation graphique de l’aire d’un polygone : tracer_aire graphe_aire aire_graphe plotarea areaplot
- Aire d’un polygone : area aire
- L’aire d’un polygone et son affichage : areaat aireen et areaatraw aireenbrut
- Périmètre d’un polygone : perimeter perimetre
- Périmètre d’un polygone et son affichage :perimeterat perimetreen et perimeteratraw perimetreenbrut
- Pente d’une droite : slope pente
- Pente d’une droite et son affichage : slopeat, penteen et slopeatraw, penteenbrut
- Avoir comme réponse la valeur d’une mesure affichée : extract_measure, extraire_mesure
- Le rayon d’un cercle : radius rayon
- La longueur d’un vecteur : abs
- L’angle d’un vecteur avec Ox : arg
- Pour normaliser un nombre complexe : normalize

## 10.17 Les transformations

- Généralités
- La translation : translation
- La symétrie droite et la symétrie point : reflection symetrie
- La rotation : rotation
- L’homothétie : homothety homothetie
- La similitude : similarity similitude
- L’inversion : inversion
- La projection orthogonale : projection

## 10.18 Les propriétés

- Savoir si 1 point est sur un objet graphique : is_element est_element
- Savoir si 3 points sont alignés : is_collinear est_aligne
- Savoir si 4 points sont cocycliques : is_concyclic est_cocyclique
- Savoir si 1 point est à l’intérieur d’un polygone ou d’un cercle : is_inside est_dans
- Savoir si on a un triangle équilatéral : is_equilateral est_equilateral
- Savoir si on a un triangle isocéle : is_isosceles est_isocele
- Savoir si on a un triangle rectangle ou si on a un rectangle : is_rectangle est_rectangle
- Savoir si on a un carré : is_square est_carre
- Savoir si on a un losange : is_rhombus est_losange
- Savoir si on a un parallélogramme : is_parallelogram est_parallelogramme
- Savoir si 2 droites sont parallèles : is_parallel est_parallele
- Savoir si 2 droites 2-d sont perpendiculaires : is_perpendicular est_perpendiculaire
- Savoir si 2 cercles sont orthogonaux : is_orthogonal est_orthogonal
- Savoir si des éléments sont conjugués : is_conjugate est_conjugue
- Savoir si 4 points forment un division harmonique : is_harmonic est_harmonique
- Ces droites sont en faisceau ? is_harmonic_line_bundle est_faisceau_droite
- Ces cercles sont-ils en faisceau : is_harmonic_circle_bundle est_faisceau_cercle

## 10.19 La division harmonique, pôles et polaires

- Point divisant un segment dans le rapport k : division_point point_div
- Le birapport de 4 points alignés : cross_ratio birapport
- Division harmonique : harmonic_division div_harmonique
- Le conjugué harmonique : harmonic_conjugate conj_harmonique
- Pôle et polaire : pole et polar polaire
- Polaire réciproque: reciprocation polaire_reciproque

## 10.20 Les lieux et les enveloppes

- Les lieux : locus lieu
- Les enveloppes : envelope enveloppe
- La trace d’un objet géométrique: trace

# Chapitre 11 Les fonctions de géométrie 3-d

## 11.1 Généralités

Les graphes ou les dessins de la géométrie 3-d se font dans un écran graphique 3-d qui s’ouvre automatiquement en réponse d’une commande graphique 3-d.
Les dessins de la géométrie 3-d se font en général dans un écran de géométrie 3-d qui est un écran graphique muni d’un éditeur de commandes et d’une barre de menus at que l’on ouvre avec Alt+h.
Si on clique dans la fenêtre graphique avec la souris, en dehors du parallélépipéde servant à la représentation, on peut faire tourner les axes x, y ou z, soit avec les touches x, X, y, Y, z, Z, soit en bougeant la souris sans relacher son bouton. Cela modifie l’axe de vision (axe passant par l’observateur et de vecteur directeur la direction de la visée de l’objet) et le plan de vision (plan perpendiculaire à l’axe de vision dont l’équation est inscrite en haut de l’écran). Le plan de vision est matérialisé par son intersection avec le parallélépipéde servant à la représentation, ces droites d’intersection sont dessinée en pointillé.
On peut aussi translater le plan de vision, le long de l’axe de vision grâce à la molette de la souris : les plans successifs sont obtenus par une translation de vecteur parallèle à l’axe de vision.
On peut se servir d’attributs pour faire une représentation graphique 3-d comme la couleur, l’épaisseur, les lignes en pointillé pour cela voir 10.3. Mais, les points ont toujours la forme d’un carré et il faut mettre une epaisseur d’au moins 3 si on veut le voir (point_width=3).
On peut faire des dessins en perspective ou en repère orthonormé (en cochant Proj_ortho dans la configuration graphique (bouton cfg)), les surfaces sont transparentes ou non et peuvent être éclairées par 8 spots que l’on peut placer en diffèrents endroits repérés par leur coordonnées homogènes (on configure ses spots avec les boutons l0,l1..l7 situés dans la configuration graphique).
Ces dessins sont interactifs : on peut faire bouger, avec la souris, les points situés dans le plan de vision, et aussi déplacer ces points, avec la molette de la souris, sur une parallèle à l’axe de vision .

À noter que l’on peut aussi faire un zoom-in ou un zoom-out à l’aide des boutons in et out (voir 3.4).

Si dans la configuration du graphique, on coche hidden3d, la surface sera tracée sans dessiner les lignes qui sont cachées et si on veut voir les lignes cachées on décoche hiden3d (voir aussi 1.6.2).
Pour la traduction Latex de l’écran 3-d on se reportera à la section 1.10.5.

## 11.2 Les angles d’Euler

Les angles d’Euler sont utilisés pour modifier le repère de visualisation. Rappel Soient deux repères : l’ancien (Oxyz) et le nouveau (OXYZ).
Soit Ou l’intersection du plan (OY,OZ) avec le plan (Ox,Oz) que l’on oriente arbitrairement.
Soient :

- Ra la rotation d’axe Oy et d’angle a=(Oz,Ou) qui transforme Ox en Ov et Oz en Ou,
- Rb la rotation d’axe Ou et d’angle b=(Ov,OX) qui transforme Ov en OX et Oy en Ow,
- Rc la rotation d’axe OX et d’angle c=(Ou,OZ) qui transforme Ow en OY et Ou en OZ.

On définit complètement la mise en place de (OXYZ) par rapport à (Oxyz) en donnant les angles a,b,c de (OXYZ) par rapport à (Oxyz) et en effectuant la composition de ces trois rotations : Rc@Rb@Ra.
Les angles d’Euler sont :
a=(Oz,Ou),
b=(Ov,OX),
c=(Ou,OZ).

Les dessins de la géométrie 3-d se font en choissisant comme repère Oxyz, Ox horizontal dirigé vers la droite, Oy vertical dirigé vers le haut et l’axe des z qui pointe vers vous.
Les mesures en degré de a,b,c sont mises dans ry,rz,rx.
Selon l’orientation de Ou, les valeurs de a,b,c ne sont pas uniques :
a,b,c et a+180,180−b,c+180 mettent en place le même repère OXYZ,
Lorsque b est un angle droit, c’est à dire que l’axe OX et l’axe Oy ont le même support on n’a pas non plus unicité:
a,90,c et a+c,90,0 mettent en place le même repère OXYZ et
a,−90,c et a−c,−90,0 mettent en place le même repère OXYZ.
On peut donc choisir, l’angle b dans ]−90,90[ et les angles a et c dans ]−180,180] ou bien b dans −90,90 c=0 et a dans ]−180,180].

## 11.3 Les axes

- Tracer les vecteurs unitaires : vecteur_unitaire_Ox_3d Ox_3d_unit_vector, vecteur_unitaire_Oy_3d Oy_3d_unit_vector, vecteur_unitaire_Oz_3d Oz_3d_unit_vector
- Tracer un repère : repere_3d frame_3d

## 11.4 Les points

- Définir un point 3-d : point
- Définir un point 3-d au hasard : point3d
- Un des points d’intersection de deux objets géométriques : single_inter line_inter inter_unique inter_droite
- Les points d’intersection de deux objets géométriques : inter
- Le milieu d’un segment : midpoint milieu
- L’isobarycentre de n points : isobarycenter isobarycentre
- Point défini comme barycentre de n points : barycenter barycentre

## 11.5 Les lignes

- Définir une droite 3-d : line droite
- Définir une droite orientée en 3-d : line droite
- La demi-droite en 3-d: half_line demi_droite
- Le segment en 3-d : segment
- Le vecteur en 3-d : vecteur
- Plan et droites parallèles : parallel parallele
- Plans (ou droites) perpendiculaires : perpendicular perpendiculaire
- Droite orthogonale à un plan et plan orthogonal à une droite : orthogonal
- La perpendiculaire commune à deux droites 3-d : common_perpendicular perpendicu- laire_commune

## 11.6 Les plans

- Le plan : plane plan
- Le plan médiateur : perpen_bisector mediatrice
- Le plan tangent : tangent
- Plan orthogonal à une droite : orthogonal
- Plan perpendiculaire à un plan : perpendicular perpendiculaire

## 11.7 Les triangles dans l’espace

Le principe est de rajouter, si necessaire, un paramètre pour définir le plan du triangle et définir aussi l’orientation de ce plan. Pour la géométrie plane voir 10.10.

- Le triangle quelconque dans l’espace: triangle
- Le triangle isocèle dans l’espace : isosceles_triangle triangle_isocele
- Le triangle rectangle dans l’espace : triangle_rectangle
- Le triangle équilatèral dans l’espace : equilateral_triangle triangle_equilateral

## 11.8 Les quadrilatères dans l’espace

Voir aussi : 10.11 pour la géométrie plane.
Le principe est de rajouter si necessaire un paramètre pour définir le plan du quadrilatère et définir aussi l’orientation de ce plan.

- Le carré dans l’espace : square carre
- Le losange dans l’espace : rhombus losange
- Le rectangle dans l’espace : rectangle
- Le parallélogramme dans l’espace : parallelogram parallelogramme
- Les quadrilatères quelconques dans l’espace : quadrilateral quadrilatere

## 11.9 Les polygones dans l’espace

Voir aussi : 10.12 pour la géométrie plane.
Le principe est de rajouter si necessaire un paramètre pour définir le plan du polygone et définir aussi l’orientation de ce plan.

- L’hexagone : hexagon hexagone
- Les polygones réguliers dans l’espace : isopolygon isopolygone
- Les polygones quelconques dans l’espace : polygon polygone
- Ligne polygonale dans l’espace : open_polygon polygone_ouvert

## 11.10 Les cercles dans l’espace : circle cercle

Voir aussi : 10.13.1 pour la géométrie plane.
cercle, en géométrie 3-d, a comme argument :

- soit 3 points A,B,C non alignés : les deux premiers points définissent un diamètre du cercle et les trois points définissent le plan du cercle.
- soit un point A, un vecteur v et un point C non situé sur la droite définie par A et v : le point A est le centre du cercle, le point B:=A+v est un point du cercle et le plan ABC est le plan du cercle.

À noter que dans les 2 cas, le premier et le troisième argument peuvent être les coordonnées du point.
On tape :

cercle(point(0,0,1),point(0,1,0),point(0,2,2))

Ou on tape :

cercle([0,0,1],point(0,1,0),point(0,2,2))

Ou on tape :

cercle([0,0,1],point(0,1,0),[0,2,2])

On obtient :

Un cercle de diamètre les points [0,0,1] et [0,1,0] situés dans le plan x=0

On tape :

cercle(point(0,0,1),[0,1,0],point(0,2,2))

Ou on tape :

cercle([0,0,1],[0,1,0],point(0,2,2))

Ou on tape :

cercle([0,0,1],[0,1,0],[0,2,2])

On obtient :

Un cercle de centre [0,0,1] et passant par le point [0,1,1] (donc de rayon 1) situés dans le plan x=0

## 11.11 Les coniques dans l’espace

- L’ellipse dans l’espace : ellipse
- L’hyperbole dans l’espace : hyperbola hyperbole
- La parabole dans l’espace : parabola parabole

## 11.12 Les mesures

- L’abscisse d’un point 3-d : abscissa abscisse
- L’ordonnée d’un point 3-d : ordinate ordonnee
- La cote d’un point 3-d : cote
- Les coordonnées d’un point, d’un vecteur ou d’une droite 3-d : coordinates coordonnees
- L’équation cartésienne d’un objet géométrique : equation
- L’équation paramétrique d’un objet géométrique : parameq
- La longueur d’un segment: distance longueur
- Le carré de la longueur d’un segment : distance2 longueur2
- La mesure d’un angle : angle

## 11.13 Les propriétés

- Savoir si 1 objet géométrique est sur un objet graphique : is_element est_element
- Savoir si des points ou /et des droites sont coplanaires : is_coplanar est_coplanaire
- Savoir si droites ou /et plans sont parallèles is_parallel est_parallele
- Savoir si des droites ou/et plans sont perpendiculaires is_perpendicular est_perpendiculaire
- Orthogonalité de 2 droites ou 2 sphères : is_orthogonal est_orthogonal
- Savoir si 3 points sont alignés : is_collinear est_aligne
- Savoir si 4 points sont cocycliques : is_concyclic est_cocyclique
- Savoir si 5 points sont cospheriques : is_cospheric est_cospherique
- Savoir si on a un triangle équilatéral : is_equilateral est_equilateral
- Savoir si on a un triangle isocéle : is_isosceles est_isocele
- Savoir si on a un triangle rectangle ou si on a un rectangle : est_rectangle
- Savoir si on a un carré : is_square est_carre
- Savoir si on a un losange : is_rhombus est_losange
- Savoir si on a un parallélogramme : is_parallelogram est_parallelogramme

## 11.14 Les transformations

- Généralités
- La translation : translation
- La symétrie par rapport à un plan, une droite ou un point : reflection symetrie
- La rotation : rotation
- L’homothétie : homothety homothetie
- La similitude : similarity similitude
- L’inversion : inversion
- La projection orthogonale : projection

## 11.15 Les surfaces

- Le cône : cone
- Le demi-cône : half_cone demi_cone
- Le cylindre : cylinder cylindre
- La sphère : sphere
- Surface définie par une fonction : funcplot
- Surface définie par une équation paramétrique : paramplot

## 11.16 Les solides

- Le cube : cube
- Le tétraèdre : tetrahedron pyramid tetraedre pyramide
- Le parallélépipède : parallelepiped parallelepipede
- Le prisme : prism prisme
- Les polyèdres : polyhedron polyedre
- Les sommets : sommets
- Les faces : faces
- Les arêtes : line_segments aretes

## 11.17 Les solides de Platon

Pour les construire, on donne le centre, un sommet et un 3ème point définissant un plan de symétrie.
Pour accélérer les calculs, il peut être utile faire seulement des calculs approchés en utilisant evalf dans l’argument : on tapera, par exemple :
cube_centre(evalf([0,0,0],[3,2,1],[1,1,0]))

- : centered_tetrahedron tetraedre_centre
- : centered_cube cube_centre
- L’octaèdre : octahedron octaedre
- Le dodecaèdre : dodecahedron dodecaedre
- L’icosaèdre : icosahedron icosaedre

## 11.18 Figures et preuves d”exercices avec Xcas

- Exercice 1
- Exercice 2
- Exercice 3 prolongement de l’exercice 2

# Chapitre 12 Commandes multimédia

## 12.1 Son

- Lecture d’un fichier wav : readwav
- Écriture d’un fichier wav : writewav
- Écouter un son numérisé playsnd
- Préparer une donnée de son numérisée soundsec

## 12.2 Comment lire et créer une image

- Qu’est-ce qu’une image ?
- Pour lire une image : readrgb
- Pour visualiser une image
- Pour recréer ou créer une image : writergb

## 12.3 Définition des variables typées

Soit la variable a on peut donner sont type soit en la renommant soit en mettant : puis son type :
a_i ou a:integer pour signifier que a est de type entier
a_d ou a:double ou a:real pour signifier que a est de type réel
a_c ou a:complex pour signifier que a est de type complexe
a_v ou a:vector pour signifier que a est de type vecteur
a_m ou a:matrix pour signifier que a est de type matrice
a_s ou a:string pour signifier que a est de type chaîne de caractères

- Pour traduire un programme Xcas en C++

# Chapitre 13 Utilisation de giac à l’intérieur d’un programme

## 13.1 Utilisation dans un programme C++

On peut utiliser giac à l’intérieur d’un programme C++ en mettant au début du programme par exemple essai.cc :
#include<giac/giac.h>
puis en compilant le compilant avec :
c++ -g essai.cc -lgiac -lgmp
et en l’exécutant en mettant :
./a.out
Exemple

    // -*- compile-command: "g++ -g pgcd.cc -lgiac -lgmp" -*-
    #include <giac/giac.h>

    using namespace std;
    using namespace giac;

    gen pgcd(gen a,gen b){
      gen q,r;
      for (;b!=0;){
        r=irem(a,b,q);
        a=b;
        b=r;
      }
      return a;
    }

    int main(){
      cout << "Entrer 2 entiers";
      gen a,b;
      cin >> a >> b;
      cout << pgcd(a,b) << endl;
      return 0;
    }

## 13.2 Pour définir de nouvelles fonctions de giac

On peut définir de nouvelles fonctions qui deviendront des fonctions de giac. Pour définir par exemple la fonction de nom pgcd ( et c’est l’instruction : const string _pgcd_s("pgcd"); qui définit le nom de la fonction), on tape :

    // -*- mode:C++ ; compile-command: "g++ -I.. -fPIC -DPIC
    -g -c pgcd.cpp  -o pgcd.lo && ln -sf pgcd.lo pgcd.o && gcc
    -shared pgcd.lo -lc  -Wl,-soname -Wl,libpgcd.so.0 -o
    libpgcd.so.0.0.0 &&  ln -sf libpgcd.so.0.0.0 libpgcd.so.0 &&
     ln -sf libpgcd.so.0.0.0 libpgcd.so" -*-
    using namespace std;
    #include <stdexcept>
    #include <cmath>
    #include <cstdlib>
    #include <giac/giac.h>
    #include "pgcd.h"

    #ifndef NO_NAMESPACE_GIAC
    namespace giac {
    #endif // ndef NO_NAMESPACE_GIAC

      gen pgcd(gen a,gen b){
        gen q,r;
        for (;b!=0;){
          r=irem(a,b,q);
          a=b;
          b=r;
        }
        return a;
      }
      gen _pgcd(const gen & args){
        if ((args.type!=_VECT)||(args._VECTptr->size()!=2))
          setsizeerr();
        vecteur &v=*args._VECTptr;
        return pgcd(v[0],v[1]);
      }
      const string _pgcd_s("pgcd");
      unary_function_unary __pgcd(&_pgcd,_pgcd_s);
      unary_function_ptr at_pgcd (&__pgcd,0,true);

    #ifndef NO_NAMESPACE_GIAC
    } // namespace giac
    #endif // ndef NO_NAMESPACE_GIAC

On compile avec la commande située après compile-command de l’en-tête du programme. Puis, pour l’insérer dans une session Xcas, il faut taper la commande insmod suivi du chemin absolu complet de la librairie, par exemple :
insmod("/home/user/giac-0.4.0/doc/en/libpgcd.so").
Cela suppose que le source de giac a été désarchivé dans le répertoire /home/user).

- - Le type gen

> Ce document a été traduit de LATEX par H E V E A