\documentclass[a4paper,11pt]{article}
\textheight 23 cm
\textwidth 15.5cm
\oddsidemargin=0mm
\topmargin=-7mm
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{stmaryrd}
\usepackage{makeidx}
\usepackage{times}
 \usepackage{pst-plot}
\usepackage{ifpdf}
\ifpdf
 \usepackage[pdftex,colorlinks]{hyperref}
\else 
\usepackage{pst-plot}
\fi
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{latexsym}

\newcommand{\R}{{\mathbb{R}}}
\newcommand{\C}{{\mathbb{C}}}
\newcommand{\Z}{{\mathbb{Z}}}
\newcommand{\N}{{\mathbb{N}}}
\title{Terminale S sp\'ecialit\'e avec {\tt Xcas}}
%\makeindex
\author{Bernard Parisse}

\begin{document}
%\maketitle

\section{Commandes Xcas pour la sp\'ecialit\'e maths Terminale S.}
Ces commandes se trouvent dans le menu {\tt Cmds}.
\begin{center}
\begin{tabular}{|ll|}
\hline
\multicolumn{2}{|c|}{\bf Arithm\'etique}\\
\hline\hline
\verb|iquo(a,b), irem(a,b)| & quotient et reste de la division
euclidienne de $a$ par $b$ \\
\verb|isprime(p)| & Test de primalit\'e \\ 
\verb|gcd(a,b), lcm(a,b)| & PGCD, PPCM de 2 entiers \\ 
\verb|iabcuv(a,b,c)| & Renvoie $u$ et $v$ tels que $au+bv=c$ \\ 
\verb|powmod(a,n,m)| & Renvoie $a^n \pmod m$ \\ 
\verb|L:=convert(a,base,b)| & conversion de a en base b \\
\verb|a:=convert(L,base,b)| & conversion inverse \\
\verb|n:=a % b; A:=n % 0| & $n\in \Z/b\Z$ congru \`a $a$;
           $A \in \Z, \ A = a \pmod b $ \\
\hline
\multicolumn{2}{|c|}{\bf Matrices et vecteurs}\\
\hline\hline
\verb|M:=matrix(3,4,(j,k)->j+k)| & matrice d\'efinie par une formule \\
\verb|M:=[[1,2,3],[4,5,6]]| &  matrice d\'efinie par des coefficients
(ou bien cr\'eer un\\
& tableur Xcas en lui donnant un nom de variable)\\
\verb|v:=[0,1,0]| & vecteur d\'efini par ses coordonn\'ees \\
\verb|M[0,1] ou M(1,2)| & \'el\'ement de \verb|M| ligne 1 colonne 2 \\
& les indices commencent \`a 0 ou \`a 1 selon la notation \\
\verb|M[j,k]:=a| & modifie l'\'el\'ement d'indice $j,k$ (copie
$M$)\\
\verb|M[j,k] =< a ou M(j,k) =< a| & modifie en place
l'\'el\'ement d'indice $j,k$ \\
\verb|+,-,*| & addition, soustraction, multiplication de matrices/vecteurs \\
\verb|inv(M)|& inverse d'une matrice carr\'ee \verb|M|\\
\verb|M^4| & puissance enti\`ere d'une matrice \\
\verb|matpow(M,n)| & puissance (symbolique) d'une matrice \\
& faire \verb|supposons(n>0)| si \verb|M| n'est pas inversible \\
\verb|P,D:=jordan(M)| & diagonalisation de la matrice \verb|M| (hors
programme) \\
\hline
\multicolumn{2}{|c|}{\bf Autres}\\
\hline\hline
\verb|asc("chaine")| & renvoie la liste des codes ASCII d'une chaine \\
\verb|char(L)| & renvoie la chaine de caract\`eres \`a partir d'une
liste \\ \hline
\verb|rsolve()| & r\'esolution de suites r\'ecurrentes \\ \hline
\verb|L:=readrgb("fichier")| & lecture du fichier image (jpg, png) dans \verb|L|\\ 
\verb|writergb("fichier.png",L)| &  stocke et affiche l'image contenue
dans \verb|L|\\
\verb|rectangle(dx,0,dy/dx,| & affiche l'image de taille \verb|dx,dy| \\
\verb|gl_texture="fichier")|  & contenue dans fichier \\ 
\hline
\end{tabular}
\end{center}
Attention~: la notation {\tt M(j,k):=a} est
interpr\'et\'ee comme une d\'efinition de fonction si {\tt j,k} est
symbolique (non entier) et non comme une affectation de l'indice $j,k$
de $M$. On peut utiliser la notation {\tt M(j,k)=<a} qui
  modifie toutes les matrices partageant la repr\'esentation de $M$,
  est donc beaucoup plus rapide pour de grosses matrices, mais peut
  avoir des effets surprenants.\\
N.B.: il peut être nécessaire d'utiliser la version 0.9.6 ou ultérieure de Xcas.

\section{Exemples d'illustrations}
\begin{itemize}
\item {\bf Cryptographie}\\
\verb|s:="un message a coder"; L:=asc(s)|, la liste \verb|L| contient
une suite d'entiers compris entre 0 et 255. 
Pour le syst\`eme RSA, on peut g\'en\'erer une paire de premiers et $n$\\
\verb|p:=nextprime(10^30); q:=nextprime(10^15); n:=p*q;|\\
(on peut aussi utiliser de l'al\'eatoire) puis une paire de clefs,\\
\verb|n1:=euler(n); c:=rand(); d:=inv(c % n1) % 0|\\
puis coder et d\'ecoder avec \verb|N:=powmod(L,c,n); char(powmod(N,d,n));|
Pour \'eviter des attaques \'evidentes, on peut cr\'eer des regroupements de 8 par deux conversion en base\\
\verb|l:=convert(L,base,256); M:=convert(l,base,256^8)|\\
Pour le syst\`eme de Hill, on cr\'ee par exemple une matrice al\'eatoire 2,2\\
\verb|n:=nextprime(512); M:=ranm(2,2) % n; Minv:=inv(M);| \\
(on recommence si \verb|M| n'est pas inversible), puis on calcule les
produits par paire d'\'el\'ements de \verb|L| (ajouter un espace dans \verb|s| en fin de
si le nombre d'\'el\'ements est impair)\\
\verb|N:=seq(M*[L[2*j],L[2*j+1]],j,0,size(L)/2-1)|\\
Le d\'ecodage en utilisant \verb|Minv|\\
\verb|O:=seq(Minv*N[j],j,0,size(N)-1)|\\
puis il faut aplatir \verb|O| avant d'appeler \verb|char|\\
\verb|P:=[]; pour j de 0 jusque size(O)-1 faire P:=concat(P,O[j]); fpour; P|
\item {\bf Syst\`emes dynamiques, graphes probabilistes}\\
Ouvrir un tableur (menu Tableur), indiquez par exemple 4 lignes et 4
colonnes et choisissez un nom de matrice, par exemple \verb|M| puis
remplissez-le par exemple avec
\[ \left(\begin{array}{cccc}
\frac{1}{3} & \frac{1}{4} & 0 & \frac{1}{4} \\
\frac{1}{3} & \frac{1}{4} & \frac{1}{2} & \frac{1}{4} \\
0 & \frac{1}{4} & 0 & \frac{1}{4} \\
\frac{1}{3} & \frac{1}{4} & \frac{1}{2} & \frac{1}{4}
\end{array}\right) \]
Si vous n'avez pas le bon nombre de lignes ou de colonnes ou oubli\'e
le nom de variable, cliquez sur la ligne \verb|Sheet config...| du
tableur.
Vous pouvez ensuite faire une \'etude formelle\\
\verb|supposons(n>0); Mn:=matpow(M,n); limit(Mn,n=inf)|\\
ou num\'erique avec \verb|v:=seq(1./nrows(M),j,1,nrows(M));|\\
\verb|pour j de 1 jusque 100 faire v:=M*v; fpour;|\\
Notez que pour un graphe probabiliste, les sommes des colonnes doivent \^etre \'egales \`a 1 pour
la convention du programme de TS (produit matrice, par vecteur).\\
Un exemple de mod\`ele proie-pr\'edateur se trouve sur le site p\'edagogique de Xcas\\
\verb|www-fourier.ujf-grenoble.fr/~parisse/irem.html|
\item {\bf Images}\\
Voir la session \verb|image.xws| sur le site de Xcas (cf. ci-dessus).
\item {\bf Autres}\\
Cherchez le mot-clef fougere (F12 dans Xcas), ou fraction continue
(en lien avec l'identit\'e de B\'ezout, les r\'eduites successives sont
les coefficients de B\'ezout de $au_n-bv_n=(-1)^n r_n$), ...
\end{itemize}

\end{document}

