\documentclass[a4paper,10pt]{book}
\textwidth 11,8 cm
\textheight 17 cm
\def\@evenhead{\thepage\hfill{\footnotesize\textit{\leftmark}}}
\def\@oddhead{\footnotesize{\textit{\rightmark}}\hfill\thepage}
%\usepackage{hp}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{latexsym}
\usepackage{makeidx}
\usepackage[pdftex]{hyperref}
\title {Calcul formel \\et \\ Mathématiques\\ avec\\ la HP49G \\en mode algébrique}
\author{Renée De Graeve\\ Ma\^itre de Conférence à Grenoble I}
\date{}
\makeindex
\begin{document}
\maketitle
{\bf \centerline{Remerciements}}

\vspace{1cm}

Je  remercie:
 \begin{itemize}
\item Bernard Parisse pour ses précieux conseils et ses remarques sur ce texte,
\item Sylvain Daud\'e pour sa relecture,
 \item Jean Tavenas pour l'int\'er\^et port\'e \`a l'ach\`evement de ce guide,
 \item les \'el\`eves de Terminale du lyc\'ee Notre-Dame des Victoires
 de Voiron, ainsi que leur professeur Jean Marc Paucod,  pour leur participation au test du sujet de bac avec la HP49.
 \end{itemize}

\vfill


\copyright\ 09/1999 Ren\'ee De Graeve, \verb|degraeve@fourier.ujf-grenoble.fr|\\
La copie, la traduction et la redistribution de ce document sur support \'electronique
ou papier sont autoris\'es pour un usage non commercial uniquement.
L'utilisation de ce document \`a des fins commerciales est interdite
sans l'accord \'ecrit du d\'etenteur du copyright.
Cette documentation est fournie en l'\'etat, sans garantie d'aucune
sorte. En aucun cas le d\'etenteur du copyright ne pourra \^etre tenu
pour responsable de dommages r\'esultant de l'utilisation de ce
document.\\
Son contenu ne saurait en aucun cas engager la responsabilité de la société 
Hewlett-Packard ni de ses distributeurs.

Ce document est disponible à l'adresse Internet suivante :\\
http://www-fourier.ujf-grenoble.fr/\tild parisse/hp49.pdf
\newpage 
{\bf \centerline{Préface}}

\vspace{1cm}

 On me pose parfois la question : pourquoi mettre du calcul formel
 dans une calculatrice, alors que les logiciels sp\'ecialis\'es
 sur ordinateur sont maintenant bon march\'e, voire gratuits?\\
Selon moi, la calculatrice est l'instrument le mieux
adapt\'e \`a l'{\em int\'egration}\/ des outils de calcul dans
 l'enseignement des math\'ematiques puisque  vous pouvez 
l'emporter facilement avec vous et l'utiliser pendant une s\'eance de travaux
 dirig\'es ou un cours.\\

 Mais l'utilisation d'un logiciel de calcul formel n'est pas aussi simple
 que l'interface pourrait le laisser croire... Il est donc important de 
disposer de la documentation ad\'equate. Le manuel de la HP49G d\'ecrit assez
 bri\`evement le logiciel, aussi ce guide en est le compl\'ement indispensable:
 il pr\'esente la HP49G dans la perspective de quelqu'un qui souhaite faire des
 math\'ematiques.
 
 Le lecteur qui s'int\'eresse aux mathématiques peut tr\`es bien ne lire que
 ce texte puisque l'auteur commence par une pr\'esentation de la machine et
  d\'etaille ensuite les commandes de calcul formel class\'ees par
 th\`eme (l'index permet de retrouver les commandes par ordre alphab\'etique)
 puis  la programmation en mode alg\'ebrique. Chaque commande est illustr\'ee
 par un exemple et certaines sont mises en pratique dans la r\'esolution d'un
 sujet de bac.  La partie programmation comporte de nombreux programmes,
 en particulier d'arithm\'etique.
 
 En r\'esum\'e, ceci est le guide que j'aurais d\^u \'ecrire si j'en avais
 eu la patience! Je remercie Renée de l'avoir réalisé...\\
\\
  Bernard Parisse\\
Ma\^itre de Conférences à l'Université de Grenoble I\\
Développeur du logiciel de calcul formel de la HP49G
 
\chapter*{Pour commencer}
\section{Présentation générale}
\subsection{Mise en route}
Appuyer sur la touche {\tt ON}.\\ En cours de travail, cette touche  {\tt ON}
permet de sortir d'une application : elle joue le r\^ole de EXIT ou de CANCEL.\\
 Pour éteindre la calculatrice, taper {\tt shift-rouge} puis sur {\tt ON}.\\ 
Si malgré plusieurs {\tt ON} ({\tt CANCEL}), la calculatrice ne repond pas,
 appuyer simultanément sur {\tt ON} et {\tt F3} pour la réinitialiser.
\subsection{Que voit-on?}
De haut en bas :\\
1. l'écran\\
1.a l'état de la calculatrice \\
1.b l'historique des calculs \\
1.c un bandeau contenant des commandes\\
2. le clavier\\

\noindent 1.L'écran :\\
1.a L'état de la calculatrice décrit les modes mis en {\oe}uvre :
\begin{itemize}
\item {\tt RAD} ou {\tt DEG} selon que l'on travaille en radians ou en degrés.
\item {\tt XYZ} pour indiquer que l'on travaille en coordonnées rectangulaires.
\item {\tt HEX} pour indiquer que les entiers binaires précédés de {\tt \#} sont écrits en base 16.
\item {\tt R} ou  {\tt C} selon que l'on travaille en mode RÉEL ou en mode
 COMPLEXE.
\item {\tt =} ou  ${\tt \sim}$ selon que l'on travaille en mode EXACT (calcul
 formel) ou en mode APPROCHÉ (calcul numérique).
\item {\tt 'X'} indique le nom de la variable courante contenu dans {\tt VX} : 
en général c'est {\tt 'X'}
\item {\tt ALG} ou  {\tt RPN} selon que l'on travaille en mode ALGÉBRIQUE ou
en mode RPN.
\item {\tt \{HOME\}} ou  {\tt  \{HOME ESSAI\}} pour indiquer le nom du répertoire dans lequel on se trouve (par exemple le répertoire principale HOME ou le
sous répertoire ESSAI).
\end{itemize}
1.b L'historique des calculs \\
Principe : sur l'écran, le calcul demandé (précédé de {\tt :}) s'inscrit à 
gauche et le résultat s'inscrit à droite.\\
1.c Le bandeau :\\
Les commandes du bandeau sont accessibles par les touches :\\
 {\tt F1 F2 F3 F4 F5 F6}.\\
Lorsque le bandeau comporte plus de 6 commandes, la suite du bandeau est 
visible lorsqu'on appuie sur la touche {\tt NXT}. Le bandeau peut contenir 
des répertoires (contenant un ensemble de commandes), ils sont repérables par
 leur forme de valise. Pour activer une commande du bandeau, il suffit de 
taper sur la touche {\tt Fi} correspondante. \\
2. Le clavier :\\
Il faut repérer :
\begin{itemize}
\item  la touche {\tt ON} pour la mise en route ou pour arr\^eter un calcul en
 cours . Pour éteindre la calculatrice, taper {\tt shift-rouge} puis sur
 {\tt ON}. 
\item les deux touches ''shift'', une bleue et une rouge qui permettent à une
m\^eme touche d'avoir plusieurs fonctions. 
\item la touche {\tt ALPHA} pour taper du texte (en majuscules par défaut). Pour rester en 
mode de saisie alphabétique il faut appuyer deux fois sur  la touche
 {\tt ALPHA}. Pour sortir de ce mode taper à nouveau sur la touche {\tt ALPHA}.
Pour basculer entre l'écriture en majuscules ou en minuscules, taper  sur 
{\tt shift-bleu} puis sur  la touche {\tt ALPHA} (lorsqu'on est en mode de 
saisie alphabétique).
\item la touche {\tt ENTER} qui sert à valider une commande.
\item les quatres flèches (gauche, droite, haut, bas) qui permettent de déplacer le curseur lorsqu'on est dans l'éditeur ou dans un menu.
\end{itemize}
\section{Les différents modes}  
Cette  calculatrice permet de travailler dans différents modes.\\
On peut choisir :\\
-le mode  algébrique ou écriture polonaise inversée ({\tt ALG ou RPN})\\  
-le mode réel ou le mode complexe (${\tt R}$ ou ${\tt C}$)\\
-le mode exact ou le mode approximatif (${\tt =}$ ou ${\tt \sim}$)\index{\tt = $\sim$}\\ 
-le mode direct ou le mode pas a pas...\\
{\sc Attention} : ce qui suit suppose que la calculatrice est dans le mode 
alg\'ebrique r\'eel exact direct ( ${\tt R\ =\ ALG}$).\\
Tapez : {\tt CASCFG}\index{CASCFG} (Computer Algebra System ConFiG) pour mettre la calculatrice en mode réel exact direct. Au cours de votre travail, il est conseillé de 
 taper {\tt CASCFG} pour se remettre dans cette configuration (en effet la calculatrice change -en vous demandant l'autorisation- de mode quand c'est nécessaire!).\\ 
{\sc V\'erification}\\
V\'erifiez maintenant que la calculatrice est bien en mode alg\'ebrique r\'eel exact.
 
Pour cela faire :

touche {\tt MODE} puis v\'erifier que l'operating mode est bien {\tt algebraic}
sinon choisir {\tt algebraic} \`a l'aide de {\tt choos} du bandeau ou taper
sur la touche ${\tt ^+/_-}$.

 V\'erifier, pendant que vous \^etes dans {\tt MODE}, \`a l'aide de {\tt cas}
 du bandeau que ni {\tt numeric}, ni {\tt approx}, ni {\tt complex} ne sont
 coch\'es (sinon enlever la croix \`a l'aide de {\tt chk} du bandeau).\\
Remarque :
pour des applications pédagogiques, il est souvent intéressant  de cocher 
{\tt step/step} pour que la calculatrice fasse les calculs en pas à pas.

 Puis {\tt ok} du bandeau pour valider le choix fait dans {\tt cas} puis {\tt ok} du bandeau pour valider le choix fait dans {\tt MODE}.

On est alors en mode alg\'ebrique r\'eel exact.\\
{\sc Attention :\\ ce qui suit suppose que la calculatrice est dans cet état}.

Vous \^etes \`a nouveau dans le r\'epertoire {\tt HOME}.

Il suffit maintenant de taper les calculs \`a effectuer par exemple :
  
$1+1$ suivi de {\tt ENTER}

Le r\'esultat s'affiche (\`a droite) alors que l'expression $1+1$ pr\'ecéd\'ee de ${\tt :}$ remonte dans l'historique (\`a gauche).

 On pourra ainsi recopier cette expression dans la ligne de commande en
 appuyant sur la touche {\tt HIST} (la fl\`eche vers le haut permet de
 s\'electionner l'expression et {\tt echo }du bandeau de la recopier et de la 
simplifier).

On peut aussi utiliser le dernier r\'esultat (not\'e {\tt ANS(1)}) gr\^ace \`a la
 touche {\tt ANS (shift-bleu ENTER)} et aussi les r\'esultats
 pr\'ec\'edents (not\'es {\tt ANS(2)}...).

Vous avez la possibilit\'e de faire soit des calculs exacts, soit des calculs approch\'es par exemple :
$\sqrt 2$
suivi de {\tt ENTER} n'\'evalue pas $\sqrt 2$ et effectue des calculs exacts
mais suivi de  {\tt shift-rouge ENTER ($\rightarrow$NUM)} donne une
 approximation de $\sqrt 2$ avec 12 chiffres significatifs, tout en restant
en mode exact.

Bien s\^ur, si vous ne voulez faire que du calcul num\'erique il suffit de 
cocher {\tt approx} ({\tt MODE } puis {\tt cas} du bandeau), dans ce cas, la 
touche {\tt ENTER} effectue le calcul num\'erique en \'evaluant les constantes
 et les variables.\\

\section{Notations}
Les quatre flèches de direction du curseur sont ici représentées par
les quatre triangles :
$$\triangle\  \lhd \  \rhd \ \bigtriangledown  $$ \index{$ \triangle\  \lhd \  \rhd \ \bigtriangledown$}
La flèche d'effacement (effacement du caractère se trouvant avant le curseur)
est représentée par :
$$\Leftarrow$$\index{$\Leftarrow$}
La flèche rouge au dessus du 0 est représentée par :
$$\rightarrow$$\index{$\rightarrow$}
La touche {\tt STO} est représentée dans un programme par :
$$ {\tt STO\triangleright \mbox{ ou }\triangleright}$$\index{$\triangleright$ {\tt STO}$\triangleright$ }
Le retour à la ligne (en rouge au dessus du point) est representé par :
$$\hookleftarrow$$\index{$\hookleftarrow$}
\section{Les flags}\label{sec:flag}
La plupart des commandes tiennent compte des indicateurs (flags) du système.\\
Chaque flag est repéré par un numéro et a une valeur par défaut.\\
Si on veut changer la valeur d'un flag, on peut le faire en tapant sur la touche {\tt MODE},
puis sur {\tt F1} pour {\tt flags} du bandeau, on accède ainsi au gestionnaire 
des flags.
On coche le flag que l'on veut changer et sa nouvelle fonction appara\^it.\\
 Quand on connait le numéro d'un flag, on peut aussi changer sa valeur à 
l'aide des commandes {\tt SF}\index{SF} ou {\tt CF}\index{CF}.
 Par exemple pour changer le flag de numéro 117 (c'est le flag qui gére l'affichage des menus) on tape :\\\label{sec:flag}
{\tt SF(-117)} (les menus se trouvent alors inscrits dans le bandeau) et alors :\\
{\tt FS?(-117)}\index{FS?} est égal à {\tt 1.} et {\tt FC?(-117)}\index{FC?} est égal à {\tt 0.}.\\
 Pour avoir à nouveau des menus déroulants
il suffit de taper :\\
{\tt CF(-117)} ({\tt FS?(-117)} est alors égal à {\tt 0.} et {\tt FC?(-117)} à {\tt 1.}).\\
\chapter{Touches importantes}
\section{La touche APPS}
Cette touche ouvre le  menu des différentes applications.
\subsection{Plot functions}
On trouve :\\
{\tt Equation entry}. Ce menu est identique à la suite de touches
 {\tt shift-bleu F1 (Y=)}.\\
{\tt Plot window}. Ce menu est identique à la suite de touches
 {\tt shift-bleu F2 (WIN)}.\\
{\tt Graph display}. Ce menu est identique à la suite de touches
 {\tt shift-bleu F3 (GRAPH)}.\\
{\tt Plot setup}. Ce menu est identique à la suite de touches
 {\tt shift-bleu F4 (2D/3D)}.\\
{\tt Table setup}. Ce menu est identique à la suite de touches
 {\tt shift-bleu F5 (TBLSET)}.\\
{\tt Table display}. Ce menu est identique à la suite de touches
 {\tt shift-bleu F6 (TABLE)}.\\
On se reportera au chapitre \ref{sec:graph} pour avoir plus de détails 
\subsection{I/O functions}
Ce sont les fonctions qui permettent de faire dialoguer votre calculatrice 
avec votre ordinateur.\\
Par exemple on trouve en 5 : {\tt Transfer}.\\
Si on tape sur 5 puis {\tt ok} du bandeau on ouvre la fen\^etre {\tt Transfer} :\\
Port : Wire\\
Type : Kermit (ou XModem)\\
Par exemple, voilà comment on utilise le programme Kermit sous Linux :\\
-On branche la calculatrice au cordon de transfert.\\
-Sur l'ordinateur on tape :\\
{\tt kermit}\\
puis {\tt serv}\\
-Sur la {\tt HP49G} on tape :\\
{\tt SEND('NOM')}\\
pour que la variable de nom {\tt NOM} qui se trouve sur votre {\tt HP49G}
 soit recopiée sur votre ordinateur.\\
-Ou\\
Sur la {\tt HP49G} on tape :\\
{\tt KGET('NOM')}\\
pour que la variable de nom {\tt NOM} qui se trouve sur votre  ordinateur
 soit recopiée sur votre {\tt HP49G}. 
 \subsection{Constants library}
Cela ouvre une liste  de 40 constantes de la physique.\\
Ces constantes sont définies par leurs  abréviations et leurs noms ou  leurs
 valeurs (si {\tt value} du bandeau est coché).\\
Elles sont suivies de leurs unités si {\tt unit} du bandeau est coché.\\
Elles peuvent \^etre recopiées dans la ligne de commande quand on 
appuie sur {\tt ->stk} du bandeau.
\subsection{Numeric solver}
Ce menu est identique au menu obtenu à partir de la suite de touches
 {\tt shift-rouge 7 (NUM.SLV)}.
\subsection{Time \& date}
Ce menu est identique au menu obtenu à partir de la suite de touches
 {\tt shift-rouge 9 (TIME)}.
\subsection{Equation writer}
Ce menu est identique au menu obtenu à partir de la touche
 {\tt EQW}.\\
Pour plus de détails, on se reportera à la section \ref{sec:eqw}. 
\subsection{File manager}
Ce menu est identique au menu obtenu à partir de la suite de touches
 {\tt shift-bleu APPS (FILES)}.\\
Pour plus de détails, on se reportera à la section \ref{sec:rep}. 
\subsection{Matrix writer}
Ce menu est identique au menu obtenu à partir de la suite de touches
 {\tt shift-bleu EQW (MTRW)}.\\
Pour plus de détails, on se reportera à la section \ref{sec:mtrw}. 
\subsection{Text editor}
Cela ouvre la ligne de commande : il faut remarquer que ce que l'on écrit peut
s'écrire sur plusieurs lignes (lorsqu'on tape sur 
${\tt shift-rouge\ \bullet\ (\hookleftarrow)}$).
\subsection{Math menu}
Ce menu est identique au menu obtenu à partir de la suite de touches
 {\tt shift-bleu SYMB (MTH)}.
\subsection{CAS menu}
On trouve :\\
{\tt 1.ARITHMETIC} correspondant au menu de {\tt shift-bleu 1 (ARIT)} \\
{\tt 2.ALGEBRA} correspondant au menu de {\tt shift-rouge 4 (ALG)}\\
{\tt 3.COMPLEX} correspondant au menu de {\tt shift-rouge 1 (CMPLX)}\\
{\tt 4.CALCULUS} correspondant au menu de {\tt shift-bleu 4 (CALC) }\\
{\tt 5.EXP\&LN} correspondant au menu de {\tt shift-bleu 8 (EXP\&LN)}\\
{\tt 6.SYMBOLIC SOLVER} correspondant au menu de {\tt shift-bleu 7 (S.SLV)}\\
{\tt 7.MATRICES} correspondant au menu de {\tt shift-bleu 5 (MATRICES)}\\
{\tt 8.CONVERT} correspondant au menu de {\tt shift-bleu 6 (CONVERT)}\\
{\tt 9.TRIGONOMETRIC} correspondant au menu de {\tt shift-rouge 8 (TRIG)}\\
Pour plus de détails, on se reportera au chapitre \ref{sec:cas}.  
\section{La touche MODE}
Cette touche permet de régler le mode de fonctionnement de votre calculatrice :
mode {\tt Algeraic} ou {\tt RPN}, de régler les {\tt flags} (touche {\tt F1}),
de régler le fonctionnement du {\tt cas} (touche {\tt F3}) et de régler la 
taille de l'affichage avec {\tt disp} (touche {\tt F4}).\\
Par exemple (cf page \pageref{sec:flag}) le {\tt flag 117} peut \^etre :\\
 {\tt choose boxes} pour avoir des menus déroulants\\
ou\\
{\tt soft menu} pour avoir les menus dans le bandeau.\\ 
\section{La touche TOOL}
Cette touche fait appara\^itre un bandeau contenant :\\
{\tt edit} pour éditer la première ligne (ou la ligne mise en surbrillance).\\
{\tt view} pour visualiser la première ligne (ou la ligne mise en surbrillance).\\
{\tt rcl} identique à la suite de touches ${\tt shift-bleu\ STO \triangleright\ (RCL)}$ (cf page \pageref{sec:rcl}).\\
{\tt sto $\triangleright$ } identique à la touche ${\tt  STO \triangleright}$.\\
{\tt purge} identique à la commande {\tt PURGE} (cf page \pageref{sec:purge}).\\
{\tt clear} efface la ligne de commande en cours en laissant le curseur en 
début de ligne (n'est pas identique à {\tt CANCEL} qui annule la ligne de 
commande en cours!!!).\\
Attention, {\tt clear} efface tout l'historique en l'absence de ligne de commande et est alors identique à ${\tt shift-rouge\ \leftarrow  (CLEAR)}$. 
\section{La touche UNDO (shift-rouge HIST)}
Cette touche est très pratique puisqu'elle permet d'annuler la dernière 
commande.

\section{La touche VAR}
Cette touche fait appara\^itre un bandeau contenant le nom de toutes les variables utilisées (appuyer sur {\tt NXT} pour tout voir!!!).\\
Pour plus de détails, on se reportera à la section \ref{sec:var}.
\section{La touche EQW }
%\ref{sec:eqw}
Elle permet d'ouvrir l'éditeur d'équations.\\
Cette touche peut \^etre utilisée à tout  moment m\^eme à l'intérieur
 de l'éditeur de matrices.\\
On peut aussi accéder à l'historique depuis l'éditeur d'équations (cf \ref{sec:hist}).
Pour plus de détails, on se reportera à la section \ref{sec:eqw}.
\section{La touche MTRW (shift-bleu EQW)}
Elle permet d'ouvrir l'éditeur de matrices pour éditer des tableaux.
Si vous voulez entrer un vecteur, veillez à ce que {\tt vect} du bandeau soit 
coché.\\ 
Pour écrire une matrice :\\
On édite la première ligne, puis on fait revenir le curseur au début de la 
deuxième ligne, puis  on écrit les lignes suivantes, le curseur se met
 automatiquement au début des autres lignes.\\
Pour plus de détails, on se reportera à la section \ref{sec:mtrw}.  
\section{La touche SYMB}
Cela ouvre le menu des fonctions symboliques de base classées par thème.\\
Les différents sous-menus contiennent les fonctions du {\tt cas} utiles à un 
élève de terminale. On retrouve ces fonctions (et d'autres!) dans les menus correspondants du {\tt cas}.\\
Exemple :\\
Le {\tt SYMBOLIC ARITH MENU} est une partie du sous-menu {\tt INTEGER} du menu 
{\tt ARITH (shift-bleu 1)}.   
\section{La touche MTH (shift-bleu SYMB)}
Cela ouvre le menu des fonctions mathématiques.\\
On notera :\\
Les fonctions hyperboliques (sous -menu 4) comme :\\
{\tt SINH ASINH COSH ACOSH TANH ATANH}\\
Les fonctions :\\
 {\tt EXPM(X)=EXP(X)-1   LNP1(X)=LN(X+1)}\\
et les fonctions utiles pour les réels (sous -menu 5) comme :\\
{\tt FLOOR(X)} qui donne la partie entière de {\tt X}.\\
 {\tt CEIL(X)} qui donne la partie entière de {\tt X+1} si {\tt X} n'est pas 
entier et {\tt X} sinon.\\
 {\tt RND(X,n)} qui arrondit {\tt X} avec {\tt n} décimales.\\
{\tt TRNC(X,n)} qui tronque  {\tt X} avec {\tt n} décimales.
\section{La touche UNITS (shift-rouge 6)}
Le menu {\tt UNITS } contient 127 unités classées par catégories.\\
Pour utiliser des unités il faut écrire l'unité précedée de {\tt \_}
({\tt shift-rouge -}).\\
On peut faire des changements d'unités gr\^ace à la fonction {\tt CONVERT} 
(qui se trouve  dans le sous-menu {\tt Tools} du menu {\tt UNITS}).\\
Exemple :\\
On tape :\\
{\tt CONVERT(12\_cm,1\_m)}\\
On obtient :\\
{\tt 0.12\_m}
\section{La touche HIST}\label{sec:hist}
Cette touche permet d'accéder à l'historique lorsqu'on est en train de taper 
une commande.
Elle  permet aussi d'y accéder depuis l'éditeur d'équations ou de matrices. \\
Il faut savoir que ce que l'on recopie est recopié ET évalué.\\
Si on veut réutiliser un résultat sans qu'il soit évalué, il faut utiliser :\\
{\tt ANS(1)} ou {\tt ANS(2)}...({\tt shift-bleu ENTER (ANS(1)}).\\
Si on veut réutiliser une commande, on peut aussi utiliser
 {\tt shift-bleu HIST (CMD)} qui donne la liste des dernières commandes
 utilisées.
 
\chapter{Saisie}
\section{L'\'editeur d'\'equations}\label{sec:eqw}
\subsection{Acc\`es \`a  l'equationwriter}
La touche {\tt EQW} (pour EQuationWriter) vous permet d'entrer dans l'\'editeur d'\'equations, \`a tout moment, lors de la saisie de la ligne de commande.\\ 
C'est un \'editeur tr\`es performant pour \'ecrire, 
simplifier et travailler sur des expressions math\'ematiques. 

Lorsque l'on est dans l'\'editeur d'\'equations on peut taper des expressions 
en sachant que l'opérateur que l'on utilise porte toujours sur l'expression 
adjacente ou sur l'expression s\'electionn\'ee.
On ne se pr\'eoccupe pas de mettre des parenth\`eses, on s\'electionne!!! \\
Il faut voir les expressions math\'ematiques comme un arbre (pas forc\'ement 
binaire) et comprendre que les quatre fl\`eches permettent de parcourir
 l'arbre de fa\c{c}on naturelle (les fl\`eches droite et gauche permettent 
d'aller d'un sous-arbre \`a l'autre, les fl\`eches  haut et bas de monter ou de
descendre dans l'arbre, les fl\`eches droite et gauche ``shift\'ees'' permettent
 diverses  s\'elections (cf page \pageref{sec:exemple2} l'exemple 2)).
\subsection{Comment s\'electionner?}
On peut entrer dans le mode s\'election de deux fa\c{c}ons
\begin{itemize}
\item
 La fl\`eche $\triangle$ vous fait entrer dans le mode s\'election et 
s\'electionne l'\'elément adjacentau curseur.\\
Si vous appuyez à nouveau sur  $\rhd$ vous augmentez votre s\'election  du
 sous-arbre conitgu (à droite de votre sélection).
\item
 La fl\`eche $\rhd$ vous fait entrer dans le mode s\'election et 
s\'electionne le sous-arbre adjacent au curseur.
\item Attention : si on est en train de taper une fonction ayant plusieurs
arguments (comme par exemple une $\sum$ ou une $\int$ ou {\tt AND}), 
la fl\`eche $\rhd$ permet de progresser dans l'écriture, en changeant le
 curseur d'emplacement (la fl\`eche $\rhd$ permet le passage d'un 
argument à l'autre)).
Il faut donc toujours dans ce cas sélectionner avec  la
 fl\`eche $\triangle$ (cf \ref{sec:sum}) 
 \end{itemize}
Exemples  de fonctionnement de cet \'editeur :
\begin{itemize}
\item Exemple 1\\
On tape : $${\tt 2\ +\ X\ *\ 3 \ -\ X }$$
et on obtient :
$${\tt 2+X \cdot 3-X}$$
{\tt ENTER} {\tt ENTER} donne le r\'esultat :
$${\tt 2+2 \cdot X}$$
On tape :$${\tt 2\ +\ X \ \rhd\ * \ 3 \ -\ X}$$
 et on obtient :
$${\tt (2+X) \cdot 3-X}$$ 
{\tt ENTER} {\tt ENTER} donne le r\'esultat :
$${\tt 6+2 \cdot X}$$
On tape :
 $${\tt 2\ +\ X\  \rhd\ *\ 3\  \triangle\  -\ X }$$
et on obtient :
$${\tt (2+X) \cdot (3-X)}$$ 
{\tt ENTER} {\tt ENTER} donne le r\'esultat :
$${\tt-(X^2-X-6)}$$
\item Exemple 2 \label{sec:exemple2}\\
Si on veut taper :
$${\tt X^2-3 \cdot X+1}$$
On tape :
$${\tt X \ y^x \ 2 \ \rhd \ - \ 3 \ X \  + \ 1 }$$
%En effet il faut sélectionner ${\tt -3 \cdot X}$ avant de taper ${\tt +\ 1}$
\item Exemple 3\\ %\label{sec:exemple3}
Si on veut taper :
$$\frac{1}{2}+\frac{1}{3}+\frac{1}{4}+\frac{1}{5}$$
Ici, le sommet de l'arbre est un $+$ et il y a 4 sous arbres ; chacun de ces 
sous-arbres a comme sommet un $\div$ et poss\`ede  deux feuilles.

On tape tout d'abord {\tt EQW}, puis le premier sous -arbre :
$${\tt1 \div 2} $$
puis on s\'electionne cet arbre avec $$ \rhd$$
puis on tape $$+$$ et le second sous-arbre :
$${\tt 1 \div 3}$$ 
puis on s\'electionne cet arbre avec $$ \rhd$$
puis on tape $$+$$ et le troisi\`eme sous-arbre :
$${\tt 1 \div 4}$$ 
puis on s\'electionne cet arbre avec $$ \rhd$$
puis on tape $$+$$ et le quatri\`eme sous-arbre :
$${\tt 1 \div 5}$$ 
puis on s\'electionne cet arbre avec $$ \rhd$$
Maintenant,  l'expression voulue
 $${\tt \frac{1}{2}+\frac{1}{3}+\frac{1}{4}+\frac{1}{5}}$$
se trouve ecrite dans l'equationwriter et ${\tt \frac{1}{5}}$ est s\'electionn\'ee.
 
    Parcourez l'arbre pour s\'electionner 
$${\tt\frac{1}{3}+\frac{1}{4}}$$

Il faut taper  $$ \lhd$$
pour s\'electionner ${\tt \frac{1}{4}}$
puis
$${\tt shift-rouge  \lhd}$$  permet de s\'electionner deux sous-arbres
 contigus ici
$${\tt \frac{1}{3}+\frac{1}{4}}$$
Int\'er\^et :
On peut demander d'effectuer le calcul de la partie s\'electionn\'ee en faisant
$${\tt shift-rouge \  SYMB\  (EVAL)}$$ 
On obtient : $${\tt \frac{1}{2}+\frac{7}{12}+\frac{1}{5}}$$
Si on veut effectuer maintenant le calcul partiel $$\frac{1}{2}+\frac{1}{5}$$
il faut tout d'abord faire une permutation pour que ${\tt \frac{1}{2}}$ et 
${\tt \frac{1}{5}}$ soient c\^ote \`a c\^ote en tapant
$${\tt shift-bleu \lhd} $$
qui \'echange l'élément s\'electionn\'e avec son voisin de gauche.

On obtient
$${\tt \frac{7}{12}+\frac{1}{2}+\frac{1}{5}}$$
et ${\tt \frac{7}{12}}$ est s\'electionné, puis
$${\tt \rhd shift-rouge  \rhd}$$
 s\'electionne $${\tt \frac{1}{2}+\frac{1}{5}}$$

On peut alors faire \`a nouveau {\tt EVAL}.
\end{itemize}
\subsection{Comment modifier une expression}
Pour remplacer la sélection par  une expression, il suffit de taper
l'expression. \\
Pour supprimer la sélection  sans supprimer l'expression on tape :
$${\tt \Leftarrow}$$
Pour supprimer  l'expression s\'electionnée  on tape :
$${\tt shift-rouge\  \Leftarrow \ \ (CLEAR)}$$ 
Pour supprimer un opérateur unaire, sommet de l'arbre sélectionné, on tape :
$${\tt shift-bleu\  \Leftarrow \ \ (DEL)} $$ 
par exemple pour remplacer $\sin(expr)$ par $\cos(expr)$, on efface $\sin$ (en 
sélectionnant $\sin(expr)$ puis ${\tt shift-bleu\  \Leftarrow} $) puis on tape
 $\cos$.\\
Pour supprimer un opérateur binaire, il faut utiliser {\tt edit} du bandeau, 
corriger dans l'éditeur, et revenir à l'éditeur d'équations avec {\tt ENTER}.\\
La touche {\tt HIST} (utilisée depuis l'éditeur d'équations) permet de revenir 
à l'historique et de recopier un élément de l'historique avec {\tt echo}
 du bandeau.

\subsection{Comment \'ecrire {\tt AND} $\int$ et $\sum$} \label{sec:sum}
Pour entrer  {\tt AND} on le tape en mode {\tt alpha} puis on tape $\rhd$.\\
Pour entrer le signe $\int$ il suffit de taper
$${\tt  shift-rouge\ TAN \ (\int) }$$
Pour entrer le signe $\sum$ il suffit de taper
$${\tt shift-rouge\ SIN \ (\sum) }$$
le curseur se place aux endroits voulus et se d\'eplace \`a l'aide de
$${\tt \rhd}$$
Les expressions que l'on rentre suivent la loi de la  s\'election expliqu\'ee
pr\'ec\'edemment, mais il faut entrer dans le mode s\'election avec $\triangle$.

Attention, ne pas utiliser l'indice $i$ pour d\'efinir la somme car $i$
d\'esigne le nombre complexe solution de $x^2+1=0$.

Il faut savoir que $\sum $ sait calculer symboliquement les sommes de 
fractions rationnelles et les series hypergéométriques qui admettent une 
primitive discrète (à partir de la ROM version 1.11).\\
En mode numérique  $\sum $ effectue  des calculs approch\'es (par exemple $\sum_{k=0}^4 \frac{1}{k!}=2.70833333334$ alors que $1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}=\frac{65}{24}$) (le symbole \ $!$ \  s'obtient en tapant ${\tt alpha\ shift-rouge\ 2}$).
\subsection{Le mode curseur}
Le mode curseur permet de sélectionner une grande expression rapidement :\\
pour cela taper {\tt shift-rouge EQW (')} pour passer en mode curseur (ou
taper sur {\tt curs} du bandeau) puis,
utiliser les flèches pour inclure votre sélection dans une boite puis,
 {\tt ENTER} pour sélectionner le contenu de la boite, ou {\tt CANCEL} 
si vous voulez annuler votre sélection.
\subsection{Pour tout voir} 
En tapant sur {\tt big} du bandeau, on grossit ou on diminue, la taille de 
l'écriture : cela dans certain cas, permet de voir en entier une grande 
expression.\\
Si cela est insuffisant appuyer sur {\tt view} du bandeau de la touche 
{\tt TOOL}.
\section{L'éditeur de tableaux}\label{sec:mtrw}
 Pour ouvrir l'éditeur de tableaux ou le matrix writer taper :\\
{\tt shift-bleu EQW (MTRW)}.\\
Vous pouvez alors entrer les éléments de la première ligne en appuyant sur
 {\tt ENTER} après chaque entrée (vous pouvez bien s\^ur vous servir de l'éditeur
 d'équations pour les écrire!!!), puis il faut ramener le curseur avec  
les flèches  au début de la deuxième ligne etc...(le curseur revient ensuite 
automatiquement au début de la troisième ligne).\\
Si vous entrez un nombre négatif, par exemple $-2$, tapez $^+/_-\ 2$.\\
Si vous voulez entrer un vecteur pensez à vérifier que {\tt vect} du bandeau
 est coché. \\
A noter qu'en mode {\tt Algébrique} on doit entrer les éléments un à un (il 
faut appuyer sur {\tt ENTER} après chaque élément), alors qu'en mode {\tt RPN} 
on peut écrire plusieurs éléments en les séparant par des espaces.
\section{L'éditeur de texte}
C'est la ligne qui s'ouvre sous l'historique pour taper une commande.\\
C'est un véritable éditeur de texte o\`u l'on peut : sélectionner une 
expression (avec {\tt BEGIN END}), la couper ({\tt CUT}) ou  la recopier
 dans le buffer ({\tt COPY}), puis  la recopier là o\`u se trouve le curseur 
({\tt PASTE}).\\
Il faut noter que toutes ces commandes fonctionnent aussi dans {\tt EQW} et
{\tt MTRW}.
\subsection{\tt BEGIN END}
Mettre le curseur sur le premier élément du texte à sélectionner puis taper :\\
{\tt shift-rouge APPS (BEGIN)}.\\
Puis déplacer le curseur sur l'élément suivant le dernier caractère et taper :\\ {\tt shift-rouge MODE (END)}.\\ 
 Votre sélection appara\^it.
\subsection{\tt COPY}\index{COPY}
{\tt shift-rouge VAR (COPY)} recopie la sélection dans le buffer.  
\subsection{\tt CUT}\index{CUT}
{\tt shift-rouge STO (CUT)} recopie la sélection dans le buffer et l'efface. 
\subsection{\tt PASTE}\index{PASTE}
{\tt shift-rouge NXT (PASTE)} recopie la sélection  là o\`u se trouve le 
curseur (il faut avoir fait avant, soit {\tt COPY}, soit {\tt CUT}, pour que la
sélection soit dans le buffer).  
\section{Les variables}\label{sec:var}
Vous pouvez stocker des objets dans des variables, et les réutiliser en 
utilisant le nom de la variable.\\
Bien voir la différence entre {\tt A} et {\tt 'A'} :\\
{\tt A} est évalué (désigne l'exécution du contenu ) et {\tt 'A'} n'est pas 
évalué (désigne le nom de la variable).\\
Par exemple :\\
{\tt STO(B,'A')} : le contenu de  {\tt B} est mis dans {\tt A}.\\
{\tt STO('B','A')} signifie qu'à tout moment  {\tt B} et {\tt A} ont m\^eme contenu.\\
{\tt VAR} affiche un bandeau qui contient toutes les variables que vous avez
définies ainsi que les sous-répertoires (ils se différencient des variables,
 dans le bandeau, par leur forme de ''valise'').
Il faut savoir que  {\tt shift-bleu APPS (FILES)} affiche l'arborescence des variables de {\tt HOME} ainsi que la mémoire d'archive et facilite la gestion des
variables.
\subsection{\tt STO}\index{STO}
{\tt STO} permet de créer une variable et de stocker un objet dans cette variable.\\
{\sc Attention} {\tt STO} est préfixé si on tape la commande en mode alpha, et
est infixée si on utilise la touche {\tt STO} (notée dans la suite
 ${\tt STO\triangleright}$ ou ${\tt \triangleright}$).\\
Exemples :\\
On tape :\\
{\tt STO(1,'A')}\\
ou\\
 on utilise  la touche ${\tt STO\triangleright}$ qui se traduit à l'écran par 
${\tt \triangleright}$ :\\
on tape :\\
${\tt 1\ STO\triangleright\ A}$ (${\tt 1\ \triangleright\ A}$).\\
On remarque qu'ici les {\tt ' '} autour 
de {\tt A} sont inutiles.\\
La variable {\tt A} est alors créée et cette variable contient 1.\\
On tape :\\
${\tt \ll 12 \gg\ STO\triangleright\  P}$\\
{\tt P} est une variable contenant le programme ${\tt \ll 12 \gg\ }$ qui affiche {\tt 12}.\\
\subsection{\tt RCL}\index{RCL}\label{sec:rcl}
{\tt RCL} a comme paramètre le nom de la variable entouré de {\tt ' }et permet d'afficher le  contenu de cette variable.\\
Pour récupérer le contenu d'une variable, il suffit de taper le nom de cette 
variable, {\sc sauf}, si cette variable contient un programme (car alors
 le programme est exécuté).\\
Dans l'exemple précédent :\\
{\tt A} affiche 1 et {\tt P} affiche 12 \\
alors que :\\
{\tt RCL('A')} affiche 1 et {\tt RCL('P')} affiche  ${\tt \ll 12 \gg\ }$.
\subsection{\tt PURGE}\index{PURGE}\label{sec:purge}
{\tt PURGE} permet d'effacer le nom de la variable et son contenu.\\
On trouve {\tt PURGE} dans le menu {\tt TOOL}\\
On tape :\\
{\tt PURGE('A')}
\subsection{Les variables prédéfinies}
Le nom de la variable symbolique courante se trouve dans {\tt VX} (ce sera en
 général {\tt X}, il ne faut donc pas utiliser {\tt X} comme nom de variable 
ou effacer le contenu de {\tt X} avant de faire du calcul symbolique.\\
{\tt EPS} contient la valeur de epsilon utilisé dans la commande 
{\tt EPSX0} (cf \ref{sec:epsx0}).\\
{\tt EQ} contient l'équation du dernier graphe réalisé.\\
{\tt MATRIX} contient la matrice utilisée comme argument de {\tt JORDAN,EGV} 
ou {\tt  EGVL}.\\
{\tt MODULO} contient la valeur de $p$ quand on fait du calcul symbolique dans
$Z/p.Z$.\\ 
{\tt PERIOD} doit contenir la période de la fonction dont on veut les
 coefficients de Fourier (cf \ref{sec:fourier}).  \\
{\tt PRIMIT} contient la primitive de la dernière fonction intégrée.\\
{\tt REALASSUME} contient le nom des variables symboliques que l'on
considère comme réelles (par défaut {\tt X, t} et toutes les variables
 d'intégration utilisées).\\
{\tt SYSTEM} contient le  système utilisé comme argument
de {\tt rref} ou {\tt RREF} si ce système a au moins un  paramètre.\\
\section{Les répertoires}\label{sec:rep}
Au début, vous n'avez que le répertoire {\tt HOME} qui sera la racine 
principale de vos  répertoires futurs (répertoire père).
\subsection{Création d'un répertoire}
Taper {\tt shift-bleu APPS (FILES)} qui affiche la structure en arbre de vos
répertoires.\\
Sélectionner le répertoire que vous choisissez commme père 
(par exemple {\tt HOME} au début) puis {\tt ok} du bandeau.\\
Un bandeau contenant {\tt edit copy move...} s'affiche, faire {\tt NXT}  et
sélectionner avec {\tt F3} {\tt new} (new variable or directory ).\\
Ne pas remplir {\tt Object} mais {\tt Name} (il suffit de taper le nom que vous avez choisi puis {\tt ok} du bandeau).\\
Puis cocher {\tt Directory} avec  {\tt F3 (chk)},   puis {\tt ok} du bandeau.\\
Puis {\tt CANCEL} pour revenir dans {\tt HOME}.\\ 
Vérifier en tapant sur {\tt VAR} que votre répertoire a bien été créé.\\
On peut aussi créer un répertoire gr\^ace à la commande {\tt CRDIR}.\\
On se met dans le répertoire qui va \^etre le père et on tape :\\
{\tt CRDIR('NOMREP')}\\
Un sous-répertoire de nom {\tt NOMREP} est alors créé.  
\subsection{Travailler dans un répertoire}
Travailler dans un répertoire est facile : il suffit d'appuyer
 sur {\tt VAR} pour faire appara\^itre le nom des sous répertoires  dans 
le bandeau, puis d'ouvrir le répertoire voulu  en appuyant sur la touche 
{\tt Fi} correspondant à son nom, puis {\tt ENTER}.\\
Pour remonter dans l'arbre des répertoires il suffit de taper : \\
 {\tt shift-bleu VAR (UPDIR)}
\subsection{Effacer, renommer, déplacer un répertoire}
Taper {\tt shift-bleu APPS (FILES)} qui affiche la structure en arbre de vos
répertoires.\\
Sélectionner le répertoire que vous voulez effacer, renommer, déplacer, puis {\tt ok} du bandeau.\\
Un bandeau contenant {\tt edit copy move...purge rename...} s'affiche.\\
{\tt purge} efface ce répertoire à condition qu'il soit vide.\\
{\tt rename } lui donne un autre nom.\\
{\tt copy} le copie (on utilise les flèches pour désigner la destination puis {\tt ok}).\\
{\tt move} le déplace (on utilise les flèches pour désigner la destination puis {\tt ok}).\\
\chapter{Graphique}\label{sec:graph}
\section{Les différentes fen\^etres}
\subsection{Equation entry}
 Cette  fen\^etre est obtenue avec la suite de touches :\\
 {\tt shift-bleu F1 (Y=)}.
Elle permet de définir l'équation du graphique.
\subsection{Plot window}
 Cette  fen\^etre est obtenue avec la suite de touches :\\
 {\tt shift-bleu F2 (WIN)}.\\
Elle permet de définir la fen\^etre de visualisation et de donner les bornes 
entre lesquelles on veut faire varier le paramètre indépendant.\\
Si le paramètre indépendant est à {\tt Default} cela veut dire qu'il varie
comme le paramètre horizontal de la fen\^etre.\\
Pour remettre un paramètre à {\tt Default} il faut taper sur {\tt NXT} puis
sur {\tt reset} du bandeau.  
\subsection{Graph display}
Cette  fen\^etre est obtenue avec la suite de touches :\\
 {\tt shift-bleu F3 (GRAPH)}.\\
Elle permet d'obtenir le graphe quand tous les paramètres ont été choisis.
\subsection{Plot setup}
Cette  fen\^etre est obtenue avec la suite de touches :\\
 {\tt shift-bleu F4 (2D/3D)}.\\
Elle permet de définir le type du graphique, l'équation et les variables.
\subsection{Table setup}
 Cette  fen\^etre est obtenue avec la suite de touches :\\
 {\tt shift-bleu F5 (TBLSET)}.\\
Elle permet d'initialiser un tableau de valeurs.
\subsection{Table display}
 Cette  fen\^etre est obtenue avec la suite de touches :\\
 {\tt shift-bleu F6 (TABLE)}.\\
Elle donne le tableau de valeurs qui a été  initialisé par {\tt TBLSET}.
\section{Les différents champs à définir}
\subsection{Le type}
Le type de tracé que l'on veut peut \^etre choisi gr\^ace au {\tt choos} 
du bandeau de la fen\^etre  {\tt PLOT SETUP (shift-bleu F4 (2D/3D))}.\\
On détaillera ici les tracés les plus utilisés comme :\\
{\tt Function} pour tracer le graphe de fonctions en coordonnées cartésiennes.\\
{\tt Polar} pour tracer des courbes en coordonnées polaires.\\
{\tt Parametric} pour tracer des courbes en coordonnées paramétriques.\\
{\tt Truth} pour tracer les solutions d'inéquations (le pixel (x,y) est allumé
 si {\tt EQ} est vraie).\\ 
{\tt Diff Eq} pour tracer les solutions de l'équation différentielle $y'=f(x,y)$.\\
 On peut tracer les solutions sur l'intervalle [$a,b$] vérifiant $y(x_0)=y_0$.\\
 Pour cela, on met dans {\tt H-View} les valeurs de $a$ et $b$ puis $x_0$ 
dans {\tt Init} et $y_0$ dans {\tt Init-Soln}.\\
 Puis on fait  le tracé en 
deux temps : on met {\tt Final} à $b$ pour avoir la solution sur [$x_0,b$], on
trace, puis  on met {\tt Final} à $a$ pour avoir la solution sur [$a,x_0$] et
on trace.\\
{\tt Slopefield} pour tracer le champ des tangentes d'une équation différentielle de la forme $y'=f(x,y)$.\\
{\tt Fast3D} pour tracer  une surface définie par $z=f(x,y)$.\\
 On peut ensuite faire tourner le repère à l'aide des touches {\tt NXT}, {\tt TOOL} et
des flèches $\triangle\  \lhd \  \rhd \ \bigtriangledown $... ce qui permet 
d'avoir une bonne vision de la surface. 
\subsection{L'équation}
L'équation peut \^etre entrée de plusieurs façons :\\
-on peut la stocker dans la variable {\tt EQ}.\\
-on peut la taper dans la fen\^etre ouverte avec {\tt shift-bleu F1 (Y=)}.\\
-on peut la taper dans le champ  {\tt EQ} de la fen\^etre {\tt PLOT SETUP}
 ouverte avec {\tt shift-bleu F4 (2D/3D)}.\\
-on peut aussi utiliser la fonction du {\tt cas PLOT}\index{PLOT} qui prend comme argument
une équation, la stocke dans  {\tt EQ} et ouvre la fen\^etre  {\tt PLOT SETUP}.\\ 
Il faut noter que  {\tt EQ} peut \^etre une liste d'équations, dans ce cas 
on aura sur le m\^eme graphe les courbes correspondant aux éléments de la liste.\\
On peut aussi gr\^ace à la fonction du {\tt cas PLOTADD}\index{PLOTADD} rajouter une équation
à la liste d'équations contenue dans  {\tt EQ}.
\subsection{Variable indépendante et forme de l'équation}
La forme de l'équation depend du type de graphique choisi et du choix de la
 variable indépendante.\\
Selon les cas, on  tape une équation de la forme  :\\
${\tt f(x)}$ pour le tracé du graphe de $y=f(x)$  en coordonnées cartésiennes, si ${\tt x}$ est la variable indépendante et si le type est {\tt Function}.\\
${\tt f(t)}$ pour le tracé  en  coordonnées  polaires de la courbe  $r=f(t)$,
 si ${\tt t}$ est la variable indépendante et si le type est {\tt Polar}.\\
${\tt x(t)+i.y(t)}$ pour tracer la courbe $(x=x(t),y=y(t))$ en coordonnées 
paramétriques, si ${\tt t}$ est la variable indépendante et si le type est {\tt Parametric}.\\ 
${\tt f(x,y)>0}$ pour hachurer la zone correspondante, si
 ${\tt x}$ est la variable indépendante et si le type est {\tt Truth}.\\
${\tt f(t,y)}$ pour tracer les solutions de l'équation différentielle  $y'=f(t,y)$ si, ${\tt t}$ est la variable indépendante et si le type est
 {\tt Diff Eq}.\\
${\tt f(t,y)}$ pour tracer le champ des tangentes d'une équation différentielle de
 la forme $y'=f(t,y)$, si ${\tt t}$ est la variable indépendante et si le type est
 {\tt Slopefield}.\\
${\tt f(x,y)}$ pour tracer  une surface définie par $z=f(x,y)$ si
 ${\tt x}$ est la variable indépendante et si le type est {\tt Fast3D}.\\
Quelquefois, le nom de la deuxième variable peut \^etre
changé, par défaut son nom est ${\tt y}$. Ce nom est toujours précédé de {\tt Depend} m\^eme si c'est une
 variable indépendante!!!! Ne pas tenir compte du mot {\tt Depend}. 
\section{Le tracé}
Avant de faire un tracé, il faut régler différents paramètres.\\
Quand tous les paramètres sont entrés,  pour effectuer le tracé il suffit
 d'appuyer sur :\\
{\tt erase draw}  (si on veut effacer le graphique précédent) ou\\
 {\tt draw} (si on veut garder le graphique précédent) \\
du bandeau de l'une des fen\^etres :\\
 {\tt PLOT SETUP (shift-bleu F4 (2D/3D))} \\
 {\tt PLOT (shift-bleu F1 (Y=))} \\
 {\tt PLOT WINDOW (shift-bleu F2 (WIN))}.\\
On peut aussi taper :\\
  {\tt shift-bleu F3 (GRAPH)} pour effectuer le tracé sans
effacer le précédent.\\
On peut revoir le dernier graphe en appuyant sur
 ${\tt \lhd}$.
\chapter{Calcul formel}\label{sec:cas}
\section{Les entiers (et les entiers de Gauss)}
Dans tout ce paragraphe, on peut utiliser des entiers de Gauss à la place des 
entiers dans les différentes fonctions.\\ 
\subsection{\tt Ecriture normale}
La calculatrice peut g\'erer des nombres entiers en pr\'ecision infinie, 
essayez :

$$100!$$
\indent Le symbole \ $!$ \  s'obtient soit en tapant 
${\tt alpha\ shift-rouge\ 2}$,
soit en utilisant {\tt shift-rouge CAT (CHARS)}.
 Dans ce cas, on  s\'electionne  \ $!$ \ dans {\tt CHARS} (avec les fl\`eches) puis 
on le recopie avec {\tt echo1} du bandeau.

L'écriture décimale de $100!$  étant tr\`es longue, on peut  voir le r\'esultat  gr\^ace \`a  la touche {\tt TOOL} puis {\tt view }du bandeau.\\
La touche {\tt HIST}, puis la flèche vers le haut, permet de remonter dans 
l'historique et {\tt view }du bandeau de visualiser les résultats. 
\subsection{\tt DEFINE}\index{DEFINE}
Soit l'exercice suivant :\\
Calculer les six premiers nombres de Fermat $F_k=2^{2^k}+1$ pour $k=1..6$ et 
dire s'ils sont premiers.

On tape l'expression
$$2^{2^2}+1$$
on trouve 17, puis on lance la commande 
{\tt ISPRIME?()}\index{ISPRIME?} avec comme argument {\tt ANS(1)}. 
Cette commande  se trouve 
dans le menu {\tt ARITH (shift-bleu 1)} puis dans le sous menu 
{\tt 1  INTEGER} (ou on l'\'ecrit en mode $\alpha$).
 
La r\'eponse est {\tt 1.}, ce qui veut dire {\tt vrai}

Gr\^ace \`a l'historique ({\tt HIST}) je recopie l'expression
$2^{2^2}+1$
dans la ligne de commande et je la modifie en  $$2^{2^3}+1$$

Ou bien, je tape l'expression {\tt $2^{2^K}+1$ STO FK} puis {\tt 3 STO K} etc...\\
Ou bien, et c'est la meilleure méthode, on définit la fonction {\tt F(K)} à 
l'aide de {\tt DEF (shift-bleu 2)} ou en tapant 
$${\tt DEFINE(F(K)=2^{2^K}+1)}$$
La réponse est {\tt NOVAL} et {\tt F} s'inscrit parmi les variables (appuyer 
sur {\tt VAR} pour le vérifier). \\
Pour $K=5$ on tape :
$${\tt F(5)}$$
On obtient :
$$4294967297$$
On peut factoriser $F_5 $ avec {\tt FACTOR } que l'on trouve dans le menu :\\
{\tt ALG (shift-rouge 4)}.\\
On tape :
$${\tt FACTOR( F(5))}$$
On obtient$$641 \cdot 6700417$$
Pour ${\tt F(6)}$ on trouve :
$$18446744073709551617$$
On  factorise avec {\tt FACTOR},  on trouve :
$$274177.67280421310721$$
Attention \`a la diff\'erence entre :
$$2\cdot5 =\frac{5}{2}$$
et$$2.5=10$$
%\item Les  commandes arithmétiques communes aux entiers et aux polyn\^omes
\subsection{\tt GCD}\index{GCD}
{\tt GCD} désigne le PGCD de deux entiers (ou de deux listes d'entiers de m\^eme longueur).\\
 On tape :
$${\tt GCD(18,15) }$$
On obtient :
$${\tt 3}$$ 
On tape :
$${\tt GCD(\{18,28\},\{15,21\}) }$$
On obtient :
$${\tt \{3,7\}}$$ 
en effet ${\tt GCD(18,15)=3 }$ et ${\tt GCD(28,21)=7 }$
\subsection{\tt LGCD}\index{LGCD}
{\tt LGCD} désigne le PGCD d'une liste de nombres entiers.\\
On tape :
$${\tt  LGCD(\{18,15,21,36\}) }$$
On obtient :
$${\tt 3}$$
\subsection{\tt SIMP2}\index{SIMP2} \label{sec:simp2}
{\tt SIMP2} a comme paramètre deux entiers (ou deux listes d'entiers).
Ces deux entiers sont considérés comme représentants d'une fraction. 
{\tt SIMP2} renvoie la fraction simplifiée sous la forme d'une liste de deux 
entiers.\\  
 On tape :
$${\tt SIMP2(18,15) }$$
On obtient :
$${\tt \{6,5\}}$$ 
On tape :
$${\tt SIMP2(\{18,28\},\{15,21\}) }$$
On obtient :
$${\tt \{6,5,4,3\}}$$ 
\subsection{\tt LCM}\index{LCM}
{\tt LCM} désigne le PPCM de deux entiers (ou de deux listes d'entiers).\\
On tape :
$${\tt LCM(18,15) }$$
On obtient :
$${\tt 90}$$
\subsection{\tt FACTOR }\index{FACTOR}
{\tt  FACTOR} décompose l'entier en produit de facteurs premiers.\\
On tape :
$${\tt FACTOR(90) }$$
On obtient :
$${\tt 2.3^2.5}$$
\subsection{\tt FACTORS }\index{FACTORS}
{\tt  FACTORS} effectue aussi cette décomposition, mais le résultat est donné 
sous la forme d'une liste, formée par les diviseurs premiers et leur 
multiplicité.\\
On tape :
$${\tt FACTORS(90) }$$
On obtient :
$${\tt \{2,1.,3,2.,5,1.\} }$$
\subsection{\tt DIVIS} \index{DIVIS}
{\tt DIVIS} donne la liste des diviseurs d'un entier.\\
On tape :
$${\tt DIVIS(36) }$$
On obtient :
$${\tt \{1,3,9,2,6,18,4,12,36 \} }$$
%\item Les différentes commandes arithmétiques entières
\subsection{\tt IQUOT}\index{IQUOT}
{\tt IQUOT} désigne le quotient entier de la division euclidienne de deux entiers.\\ 
On tape :
$${\tt IQUOT(148,5) }$$
On obtient :
$${\tt 29}$$

\subsection{\tt IREMAINDER MOD}\index{IREMAINDER}
{\tt IREMAINDER} désigne le reste entier de la division euclidienne de deux entiers.\\ 
On tape :
$${\tt IREMAINDER(148,5) }$$
ou\index{MOD}
$${\tt 148\ MOD\ 5 }$$
On obtient :
$${\tt 3}$$
{\tt IREMAINDER} travaille avec des entiers ou des entiers de Gauss, c'est ce qui le différencie de {\tt MOD}.\\
 {\tt MOD} accepte des réels mais pas des entiers de Gauss.\\ 
Essayer :
$${\tt IREMAINDER(148!,5!+2 )}$$
($!$ s'obtient avec {\tt alpha shift-rouge 2}).
\subsection{\tt IDIV2}\index{IDIV2}
{\tt IDIV2} donne la liste du quotient et du  reste entier de la division euclidienne de deux entiers.\\  
On tape :
$${\tt IDIV2(148,5) }$$
On obtient :
$${\tt \{29,3\} }$$
En mode pas à pas, la division se fait comme à l'école, avec l'algorithme dit de
la ``potence''.
\subsection{\tt ISPRIME?}\index{ISPRIME?}
{\tt ISPRIME?(N)} si {\tt N} est pseudo-premier renvoie {\tt 1.} (vrai)  et  renvoie {\tt 0.} (faux) si {\tt N} n'est pas premier. \\
Définition : Pour les nombres inférieurs à $10^{14}$ \^etre pseudo-premier et 
premier c'est la m\^eme chose ! ...mais au delà de $10^{14}$  un nombre 
pseudo-premier est premier avec une probabilité très forte (cf l'algorithme de Rabin section\ref{sec:rabin}).\\ 
On tape :
$${\tt ISPRIME?(13) }$$
On obtient :$${\tt 1.}$$
On tape :
$${\tt ISPRIME?(14) }$$
On obtient :
$${\tt 0.}$$
\subsection{\tt NEXTPRIME}\index{NEXTPRIME}
{\tt NEXTPRIME(N)} désigne le premier nombre pseudo-premier trouvé après  ${\tt N}$. \\
On tape :
$${\tt NEXTPRIME(75) }$$
On obtient :
$${\tt 79}$$
\subsection{\tt PREVPRIME}\index{PREVPRIME}
{\tt PREVPRIME(N)} désigne le premier nombre pseudo-premier trouvé avant 
${\tt N}$.\\
On tape :
$${\tt  PREVPRIME(75)}$$
On obtient :
$${\tt 73}$$
\subsection{\tt IEGCD}\index{IEGCD}
{\tt IEGCD(A,B)} désigne le PGCD étendu (identité de Bézout) de deux  entiers.\\
{\tt IEGCD(A,B)} renvoie {\tt \{D,U,V\}} vérifiant {\tt AU+BV=D} et {\tt D=PGCD(A,B)}.\\
On tape :
$${\tt IEGCD(48,30) }$$
On obtient :
$${\tt \{6,2,-3\}}$$
En effet :
$$2 \cdot 48+ (-3) \cdot 30 =6$$
\subsection{\tt IABCUV}\index{IABCUV}
{\tt IABCUV(A,B,C)} donne {\tt \{U ,V\}} vérifiant {\tt AU+BV=C}.\\
Il faut bien s\^ur que {\tt C} soit un multiple du {\tt PGCD(A,B)} pour obtenir une solution.\\
On tape :
$${\tt IABCUV(48,30,18) }$$
On obtient :
$${\tt \{6,-9\}}$$
\subsection{\tt ICHINREM}\index{ICHINREM}
{\tt ICHINREM([A,P],[B,Q])} désigne un nombre {\tt X} vérifiant :\\
 {\tt X=A (mod P)} et {\tt X=B (mod Q)}. \\
Il existe toujours une solution 
{\tt X} si {\tt P} et {\tt Q} sont premiers entre eux, et toutes les solutions sont congrues modulo {\tt N=P.Q}   \\
Exemple : \\
Trouver les solutions de :
$${\tt \left \{ \begin{array}{rl} X=&3\ (\bmod\ 5)\\ X=&9\ (\bmod\ 13) \end{array}\right.}$$
On tape :
$${\tt ICHINREM([3,5],[9,13])}$$
On obtient :
$${\tt [-147,65] }$$
ce qui veut dire que {\tt X=-147 (mod 65)}
\subsection{\tt PA2B2}\index{PA2B2}
{\tt PA2B2} décompose un entier $p$ premier, congru à 1 modulo 4 en \\
$p= a^2+b^2$. La calculatrice donne le résultat sous la forme $a+b \cdot i$\\
On tape :
$${\tt PA2B2(17)}$$
On obtient :
$${\tt 4+i }$$
en effet $17=4^2+1^2$
\subsection{\tt EULER}\index{EULER}
{\tt EULER} désigne l'indicadrice d'EULER d'un entier. \\
EULER(n) est égale au cardinal de l'ensemble des nombres  inférieurs à $n$ et premiers avec $n$. \\
On tape :
$${\tt EULER(21)}$$
On obtient :
$${\tt 12}$$
En effet l'ensemble :\\
 E=\{2,4,5,7,8,10,11,13,15,16,17,19\}  correspond aux nombres inférieurs à 21 qui sont premiers avec 21, et E a comme cardinal 12.

\section{Les rationnels}
Essayez :
$$\frac{123}{12}+\frac{57}{21}$$
puis {\tt ENTER} la r\'eponse est :
$$\frac{363}{28}$$
avec {\tt shift-rouge ENTER ($\rightarrow$NUM)} la r\'eponse est :
$$12.9642857143$$
Si on m\'elange les deux repr\'esentations par exemple:
$$\frac{1}{2}+0.5$$
la caculatrice demande \`a passer en mode {\tt approx} pour faire le calcul ; 
il faut alors r\'epondre {\tt yes} pour obtenir :
$$1.$$ 
Revenez ensuite en mode exact ({\tt MODE cas} du bandeau  etc...).
\subsection{\tt PROPFRAC}\index{PROPFRAC}
${\tt PROPFRAC(A / B)}$ écrit la fraction $\frac{A}{B}$ sous la 
forme :$$Q+\frac{R}{B}\ \ avec \ \ 0\leq R<B$$
On tape :
$${\tt  PROPFRAC(43 \div 12)}$$
On obtient :
$${\tt 3+\frac{7}{12}}$$
\subsection{\tt FXND}\index{FXND}
{\tt FXND} a comme argument une fraction et renvoie, la liste form\'ee par le 
num\'erateur et le d\'enominateur de cette fraction simplifi\'ee.\\
On tape :
$${\tt  FXND(42 \div 12)}$$
On obtient :
$${\tt \{7,2\}}$$
\subsection{\tt SIMP2}\index{SIMP2}
{\tt SIMP2} (cf \ref{sec:simp2}) a pour argument une liste de deux entiers repr\'esentant une fraction, et
 renvoie comme {\tt FXND} une liste form\'ee par le 
num\'erateur et le d\'enominateur de cette fraction simplifi\'ee.\\
 On tape :
$${\tt  SIMP2(\{42 , 12\})}$$
On obtient :
$${\tt \{7,2\}}$$
\section{Les r\'eels}
Essayez :
$${\tt EXP(\pi*\sqrt{20})}$$
puis {\tt ENTER} la r\'eponse est :
$${\tt EXP(2*\sqrt5*\pi)}$$
avec {\tt shift-rouge ENTER ($\rightarrow$NUM)} la r\'eponse est :
$$1263794.7537$$

\section{Les complexes}
On tape :
$${\tt (1+2.i)^2}$$
puis {\tt ENTER} .

Si on n'est pas en mode {\tt complex}, la caculatrice demande \`a changer de 
mode : il faut alors r\'epondre {\tt yes} pour obtenir 
la r\'eponse :
$${\tt -(3-4 \cdot i)}$$
Il faut noter que cette expression ne sera pas simplifi\'ee davatange (les
 r\'esultats mettront toujours en évidence un nombre complexe de partie
 r\'eelle positive en mode exact).\\
Vous trouverez dans le menu {\tt shift-rouge 1 (CMPLX)} les fonctions suivantes
 ayant comme paramètre une expression à valeur complexe :\\
{\tt ARG}\index{ARG} pour déterminer l'argument du paramètre.\\
{\tt ABS}\index{ABS} pour déterminer le module du paramètre.\\
{\tt CONJ}\index{CONJ} pour déterminer le conjugué du paramètre.\\
{\tt RE}\index{RE} pour déterminer la partie réelle du paramètre.\\
{\tt IM}\index{IM} pour déterminer la partie imaginaire du paramètre.\\
{\tt NEG}\index{NEG} pour déterminer l'opposé du paramètre.\\
{\tt SIGN}\index{SIGN} pour déterminer le quotient du paramètre par son module.\\
Exemple :\\
On tape :\\
$${\tt ARG(3+4.i)}$$
On obtient :\\
$${\tt ATAN(\frac{4}{3})}$$
\section{Les expressions alg\'ebriques }
\subsection{\tt FACTOR}\index{FACTOR}
{\tt FACTOR} a comme paramètre une expression qu'il factorise.\\
Exemple :\\
Factoriser 
$$x^4+1$$
On tape :
$${\tt FACTOR(X^4+1)}$$
On trouve {\tt FACTOR} dans le menu de {\tt ALG \ (shift-rouge 4)} (ou on le
 tape en mode $\alpha$).\\ 
On trouve en mode réel:
$${\tt (X^2+\sqrt2 \cdot X+1) \cdot (X^2-\sqrt2 \cdot X+1)} $$
On trouve en mode complexe ( pour cela cocher {\tt complex} : touche  {\tt MODE} puis {\tt cas} du bandeau puis cocher avec {\tt chk} puis {\tt ok ok}) :
$${\tt \frac{ (2.X+(1+i).\sqrt 2).(2.X-(1+i).\sqrt 2).(2.X+(1-i).\sqrt 2).(2.X-(1-i).\sqrt 2)}{16}}$$
\subsection{\tt EXPAND EVAL}\index{EXPAND}
{\tt EXPAND} et {\tt EVAL}\index{EVAL} ont comme paramètre une expression qu'ils 
développent et simplifient.\\
Exemple :\\  
En faisant ${\tt EXPAND(ANS(1))}$ on obtient \`a nouveau $${\tt X^4+1}.$$      
\subsection{\tt SUBST}\index{SUBST}
{\tt SUBST} a deux paramètres : une expression dependant d'un paramètre et
une égalité (paramètre=valeur de substitution).\\
{\tt SUBST} effectue la substitution demandée dans l'expression.\\
On tape :\\
$${\tt SUBST(A^2+1,A=2)}$$ 
On obtient :\\
$$2^2+1$$ 
\subsection{\tt PREVAL}\index{PREVAL}
{\tt PREVAL} a trois paramètres : une expression ({\tt F(VX)}) dépendant de la variable contenue dans {\tt VX}  et deux expressions {\tt A } et {\tt B }.\\
{\tt PREVAL}  effectue {\tt F(B)-F(A)}.\\
 {\tt PREVAL} est utile pour calculer une intégrale définie à partir 
d'une primitive : on évalue cette primitive entre les deux bornes de l'intégrale.\\
On tape :\\
$${\tt PREVAL(X^2+X,2,3)} $$
On obtient :\\
$$12-6$$

\section{Les fonctions }
\subsection{\tt  DERVX}\index{DERVX}
Soit $$f(x)=\frac {x}{x^2-1}+\ln(\frac {x+1}{x-1})$$
Calculer la d\'eriv\'ee de $f$.

On trouve {\tt DERVX} dans le menu :\\
{\tt CALC \ (shift-bleu 4)} sous menu
{\tt 1.DERIV. \& INT...} en position 3 
 (ou on le tape en mode $\alpha$).\\
On tape :
$${\tt DERVX(\frac {X}{X^2-1}+LN(\frac {X+1}{X-1}))} $$
ou si on a stock\'e l'expression de $ f(x)$ dans {\tt F}
$${\tt DERVX(F) }$$ 
ou si on a défini  $ F(X)$ à l'aide de {\tt DEFINE} :
 (${\tt DEFINE (F(X)=\frac {X}{X^2-1}+LN(\frac {X+1}{X-1}))}$)
$${\tt DERVX(F(X)) }$$ 

On trouve une expression compliquée que l'on simplifie en la recopiant 
(${\tt \triangle\  ENTER\ ENTER)}$.\\
On obtient :
$${\tt -\frac {3 \cdot X^2-1}{X^4-2 \cdot X^2+1}} $$ 
\subsection{\tt  DERIV}\index{DERIV}
{\tt  DERIV} a deux arguments : une expression (ou une fonction) et 
une variable (ou un vecteur contenant le nom des variables) (voir fonctions de
 plusieurs variables paragraphe \ref{sec:deriv}).\\
{\tt  DERIV} renvoie la dérivée de l' expression (ou de la fonction) par rapport à  la  variable donnée comme deuxième paramètre (utile pour calculer des dérivées partielles!).\\
Exemple : \\
Soit à calculer :
$$\frac {\partial (x.y^2.z^3+x.y)}{\partial z}$$
On tape :
$${\tt  DERIV(X.Y^2.Z^3+X.Y\ ,\ Z)}$$
On obtient :
$${\tt 3.X.Y^2.Z^2}$$
\subsection{\tt  INTVX}\index{INTVX}
Soit $$f(x)=\frac {x}{x^2-1}+\ln(\frac {x+1}{x-1})$$
Calculer une primitive  de f.\\
On trouve {\tt INTVX} dans le menu {\tt CALC \ (shift-bleu 4)} sous menu
 {\tt 1. DERIV. \& INT...} en position 8  
 (ou on le tape en mode $\alpha$).\\ 
On tape :
$${\tt INTVX(\frac {X}{X^2-1}+LN(\frac {X+1}{X-1}))} $$
ou si on a stock\'e l'expression de $ f(x)$ dans {\tt F}
$${\tt INTVX(F)} $$ 
ou si on a défini  $ F(X)$ à l'aide de  {\tt DEFINE}
 ($ {\tt DEFINE (F(X)=\frac {X}{X^2-1}+LN(\frac {X+1}{X-1})}$)
$${\tt INTVX(F(X)) }$$ 
On trouve : 
$$ {\tt X \cdot LN(\frac {X+1}{X-1})+ \frac{3}{2} \cdot LN(|X-1|)+\frac{3}{2} \cdot LN(|X+1|)} $$

Exercice 1\\
Calculer :
$$\int \frac {2}{x^6+2 \cdot x^4+x^2} \ dx $$
On tape :
$${\tt INTVX(\frac {2}{X^6+2 \cdot X^4+X^2})}$$
On trouve :
$${\tt -3 \cdot ATAN(X)-\frac {2}{X}-\frac {X}{X^2+1}} $$
Remarque :\\
On peut aussi taper dans l'equation writer (touche {\tt EQW}) :
$${\tt \int_1^X \frac {2}{X^6+2 \cdot X^4+X^2} \ dX} $$
qui donne le m\^eme résultat plus une constante d'intégration égale à 
$$\frac{3.\pi+10}{4}$$
Exercice 2\\
Calculer :
$$\int \frac {1}{\sin(x)+\sin(2 \cdot x )} \ dx $$
On tape :
$${\tt INTVX(\frac {1}{SIN(X)+SIN(2 \cdot X )})}$$
On trouve :
 $${\tt \frac {1}{6} \cdot LN(|COS(X)-1|)+\frac {1}{2} \cdot LN(|COS(X)+1|)+\frac {-2}{3} \cdot LN(|2 \cdot COS(X)+1|)} $$ 
\subsection{\tt  LIMIT}\index{LIMIT}
Trouver pour $n>2$, la limite quand $x$ tend vers 0 de :
$$ \frac{n\times \tan(x)-\tan(n\times x)}{\sin(n\times  x)-n\times \sin(x)}$$
On utilise la commande {\tt LIMIT} que l'on trouve  dans le menu :\\
 {\tt CALC (shift-bleu 4)} sous-menu 2 {\tt LIMIT \& SERIES} (ou on le tape en mode $\alpha$).\\
On tape :
$${\tt LIMIT \left( \frac{N \cdot TAN(X)-TAN(N \cdot X)}{SIN(N \cdot X)-N \cdot SIN(X)}, 0 \right)}$$
On obtient :
$${\tt 2 }$$
Trouver la limite quand $x$ tend vers $+\infty$ de :
$$\sqrt{x+\sqrt{x+\sqrt x}}-\sqrt x$$ 
On tape :
$${\tt LIMIT (\sqrt{X+\sqrt{X+\sqrt{X}}}-\sqrt{X}, +\infty)} $$
On obtient au bout d'un moment :
$$\frac{1}{2}$$
Attention, ${\tt {+\infty}}$ s'obtient en tapant :
$${\tt  { \ ^+/_- \ \ ^+/_-  \; \; \infty}\ (shift-bleu\ 0)\ }$$ 
\subsection{\tt  LIMIT et $\int$}\index{LIMIT} 
D\'eterminer la limite quand $a$ tend vers l'infini de :
$$  \int _2^a (\frac {x}{x^2-1}+\ln(\frac {x+1}{x-1}))\ dx$$
On tape dans l'{\tt equationwriter} :
$${\tt \int _2^{+\infty} (\frac {X}{X^2-1}+LN(\frac {X+1}{X-1}))\ dX} $$
Attention, ${\tt {+\infty}}$ s'obtient en tapant :
$${\tt  { \ ^+/_- \ \ ^+/_-  \; \; \infty}\ (shift-bleu\ 0)\ }$$ 
On obtient :
$${\tt +\infty-\frac{7.LN(3)}{2} }$$
et après simplification :
$$+\infty$$
\subsection{\tt IBP}\index{IBP}
{\tt IBP} a deux paramètres : une expression de la forme $u(x).v'(x)$ et $v(x)$.\\
{\tt IBP} renvoie une liste formée de $u(x).v(x)$ et de $-v(x).u'(x)$ c'est à 
dire des termes que l'on doit calculer quand on fait une intégration par 
parties.\\
 Il reste alors à calculer l'intégrale du deuxième terme puis à 
faire la somme avec le premier terme pour obtenir une primitive de $u(x).v'(x)$(c'est très pratique en mode {\tt RPN}!!!).\\ 
On tape :
$${\tt IBP(LN(X),X) }$$
On obtient :
$${\tt \{X.LN(X),-1\}}$$
Remarque : Si le premier paramètre de {\tt IBP} est une liste de deux éléments,
 {\tt IBP} n'agit que sur le dernier élément de cette liste et ajoute le terme
 intégré au premier élément de la liste (de façon à pouvoir faire plusieurs
{\tt IBP} à la suite en mode Algébrique).
\subsection{\tt RISCH}\index{RISCH}
{\tt RISCH} a deux paramètres : une expression et un nom de variable.\\
{\tt RISCH} renvoie une primitive du premier paramètre par rapport à la 
variable spécifiée en deuxième paramètre.\\
On tape :
$${\tt RISCH((2.X^2+1).EXP(X^2+1),X) }$$
On obtient :
$${\tt X.EXP(X^2+1)}$$
\section{Les expressions trigonométriques}
\subsection{\tt TEXPAND}\index{TEXPAND}
{\tt TEXPAND} a comme argument une expression trigonométrique.\\
{\tt TEXPAND} développe cette expression en fonction de $\sin(x)$ et $\cos(x)$.\\
Exemple 1 :\\
On tape :\\
$${\tt TEXPAND( COS(X+Y))}$$
On obtient :\\
$${\tt COS(Y).COS(X)-SIN(Y).SIN(X)}$$
Exemple 2 :\\
On tape :\\
$${\tt TEXPAND( COS(3.X))}$$
On obtient :\\
$${\tt 4.{COS(X)}^3-3.COS(X)}$$
Exemple 3 :\\
On tape :\\
$${\tt TEXPAND( \frac{SIN(3.X)+SIN(7.X)}{SIN(5.X)})}$$
On obtient après une simplification (${\tt\triangle \ ENTER}$) :\\
$${\tt 4.{COS(X)}^2-2}$$
\subsection{\tt TLIN}\index{TLIN}
{\tt TLIN} a comme argument une expression trigonométrique.\\
{\tt TLIN} linéarise cette expression en fonction de $\sin(n.x)$ et $\cos(n.x)$.\\
Exemple  :\\
On tape :\\
$${\tt TLIN(COS(X). COS(Y))}$$
On obtient :\\
$${\tt \frac{1}{2}.COS(X-Y)+\frac{1}{2}.COS(X+Y)}$$
Exemple 2 :\\
On tape :\\
$${\tt TLIN({COS(X)}^3)}$$
On obtient :\\
$${\tt \frac{1}{4}.COS(3.X)+\frac{3}{4}.COS(X)}$$
Exemple 3 :\\
On tape :\\
$${\tt TLIN(4.{COS(X)}^2-2)}$$
On obtient :\\
$${\tt 2.COS(2.X)}$$
\subsection{\tt TCOLLECT}\index{TCOLLECT}
{\tt TCOLLECT} a comme argument une expression trigonométrique.\\
{\tt TCOLLECT} linéarise cette expression en fonction de $\sin(n.x)$ et $\cos(n.x)$  puis rassemble {\tt en mode réel} les sinus et les cosinus de m\^eme angle.\\
On tape :\\
$${\tt TCOLLECT(SIN(X)+COS(X))}$$
On obtient :\\
$${\tt \sqrt2.COS(X-\frac{\pi}{4})}$$
\subsection{\tt ACOS2S}\index{ACOS2S}
{\tt ACOS2S} a comme argument une expression trigonométrique.\\
{\tt ACOS2S}  transforme cette expression en remplaçant $\arccos(x)$ par $\frac{\pi}{2}-\arcsin(x)$.\\
On tape :\\
$${\tt ACOS2S(ACOS(X)+ASIN(X))}$$
On obtient :\\
$${\tt \frac{\pi}{2}}$$
\subsection{\tt ASIN2C}\index{ASIN2C}
{\tt ASIN2C} a comme argument une expression trigonométrique.\\
{\tt ASIN2C} transforme cette expression en remplaçant $\arcsin(x)$ par 
$\frac{\pi}{2}-\arccos(x)$.\\
On tape :\\
$${\tt ASIN2C(ACOS(X)+ASIN(X))}$$
On obtient :\\
$${\tt \frac{\pi}{2}}$$
\subsection{\tt ASIN2T}\index{ASIN2T}
{\tt ASIN2T} a comme argument une expression trigonométrique.\\
{\tt ASIN2T} transforme cette expression en remplaçant $\arcsin(x)$ par 
$\arctan(\frac{x}{\sqrt{1-x^2}})$.\\
On tape :\\
$${\tt ASIN2T(ASIN(X))}$$
On obtient :\\
$${\tt ATAN(\frac{X}{\sqrt{1-X^2}})}$$
\subsection{\tt ATAN2S}\index{ATAN2S}
{\tt ATAN2S} a comme argument une expression trigonométrique.\\
{\tt ATAN2S} transforme cette expression en remplaçant :\\
$\arctan(x)$ par $\arcsin(\frac{x}{\sqrt{1+x^2}})$.\\
On tape :\\
$${\tt ATAN2S(ATAN(X))}$$
On obtient :\\
$${\tt ASIN(\frac{X}{\sqrt{X^2+1}})}$$

\subsection{\tt SINCOS}\index{SINCOS}
{\tt SINCOS} a comme argument une expression contenant des exponentielles
 complexes.\\
{\tt SINCOS} transforme cette expression en fonction de $\sin(x)$ et de $\cos(x)$.\\
On tape :\\
$${\tt SINCOS(EXP(i.X))}$$
On obtient :\\
$${\tt COS(X)+i.SIN(X)}$$
\subsection{\tt TAN2SC}\index{TAN2SC}
{\tt TAN2SC} a comme argument une expression trigonométrique.\\
{\tt TAN2SC} transforme cette expression en remplaçant $\tan(x)$ par 
$\frac{\sin(x)}{\cos(x)}$.\\
On tape :\\
$${\tt TAN2SC(TAN(X))}$$
On obtient :\\
$${\tt \frac{SIN(X)}{COS(X)}}$$
\subsection{\tt TAN2SC2}\index{TAN2SC2}
{\tt TAN2SC2} a comme argument une expression trigonométrique.\\
{\tt TAN2SC2} transforme cette  expression en remplaçant $\tan(x)$ par 
$\frac{\sin(2.x)}{1+\cos(2.x)}$  (ou par $\frac{1-\cos(2.x)}{\sin(2.x)}$ si l'on
préfère les sinus  c'est à dire quand {\tt Prefer sin()} du flag 116 est
 coché cf \ref{sec:flag}).\\
On tape :\\
$${\tt TAN2SC2(TAN(X))}$$
On obtient :\\
$${\tt \frac{SIN(2.X)}{1+COS(2.X)}}$$

\subsection{\tt HALFTAN}\index{HALFTAN}
{\tt HALFTAN} a comme argument une expression trigonométrique.\\
{\tt HALFTAN} transforme les $\sin(x) \cos(x)$ et $ \tan(x)$ contenus dans 
l'expression en fonction de $\tan(\frac{x}{2})$.\\
On tape :\\
$${\tt HALFTAN(\frac{SIN(2.X)}{1+COS(2.X)})}$$
On obtient  après simplification :\\
$${\tt TAN(X)}$$
On tape :\\
$${\tt HALFTAN( SIN(X)^2+COS(X)^2)}$$
On obtient (${\tt SQ(X)=  X^2}$):\\
$${\tt {\left(\frac{2.TAN(\frac{X}{2})}{SQ(TAN(\frac{X}{2}))+1}\right)}^2+ {\left(\frac{1-SQ(TAN(\frac{X}{2}))}{SQ(TAN(\frac{X}{2}))+1}\right)}^2 }$$
On obtient après simplification:\\
$${\tt 1}$$
\subsection{\tt TRIG}\index{TRIG}
{\tt TRIG} a comme argument une expression trigonométrique.\\
{\tt TRIG} simplifie cette expression à l'aide de $\sin(x)^2+\cos(x)^2=1$.\\ 
On tape :\\
$${\tt TRIG(SIN(X)^2+COS(X)^2+1)}$$
On obtient :\\
$${\tt 2}$$
\subsection{\tt TRIGSIN}\index{TRIGSIN}
{\tt TRIGSIN} a comme argument une expression trigonométrique.\\
{\tt TRIGSIN} simplifie cette expression à l'aide de $\sin(x)^2+\cos(x)^2=1$ en
privilégiant les sinus.\\ 
On tape :\\
$${\tt TRIGSIN(SIN(X)^4+COS(X)^2+1)}$$
On obtient :\\
$${\tt SIN(X)^4-SIN(X)^2+2}$$
\subsection{\tt TRIGCOS}\index{TRIGCOS}
{\tt TRIGCOS} a comme argument une expression trigonométrique.\\
{\tt TRIGCOS} simplifie cette expression à l'aide de $\sin(x)^2+\cos(x)^2=1$ en
privilégiant les cosinus.\\ 
On tape :\\
$${\tt TRIGCOS(SIN(X)^4+COS(X)^2+1)}$$
On obtient :\\
$${\tt COS(X)^4-COS(X)^2+2}$$
\subsection{\tt TRIGTAN}\index{TRIGTAN}
{\tt TRIGTAN} a comme argument une expression trigonométrique.\\
{\tt TRIGTAN} simplifie cette expression à l'aide de $\sin(x)^2+\cos(x)^2=1$ en
privilégiant les tangentes.\\ 
On tape :\\
$${\tt TRIGTAN(SIN(X)^4+COS(X)^2+1)}$$
On obtient :\\
$${\tt \frac{2.TAN(X)^4+3.TAN(X)^2+2}{TAN(X)^4+2.TAN(X)^2+1}}$$

\subsection{\tt FOURIER}\index{FOURIER}\label{sec:fourier}
{\tt FOURIER} a deux paramètres : une expression $f(x)$ et un entier $n$.\\
{\tt FOURIER} renvoie le coefficient de Fourier $c_n$ de $f(x)$ considérée 
comme une fonction définie sur $[0,T]$ et périodique de période $T$ ($T$ etant
égale au contenu de la variable {\tt PERIOD}).\\
On a si $f$ est continue par morceaux :
 $$f(x)=\sum _{n=-\infty}^{+\infty} c_n e^\frac{2inx\pi}{T}$$
Exemple :
Déterminer les coefficients de Fourier de la fonction $f$ périodique de période
 $2.\pi$ et définie sur $[0\ 2.\pi[$ par $ f(x)=x^2$.\\ 
On tape :
$${\tt 2.\pi\ \  STO\triangleright \ PERIOD}$$
$${\tt FOURIER(X^2,N)}$$
On obtient après simplification :
$${\tt \frac{2.i.N.\pi+2}{N^2}}$$
Donc si $n \neq 0$ on a :
$$c_n=\frac{2.i.N.\pi+2}{N^2}$$ 
Puis on tape :
$${\tt FOURIER(X^2,0)}$$
On obtient :
$${\tt \frac{4.{\pi}^2}{3} }$$
Donc si $n= 0$ on a :
$$c_0=\frac{4.{\pi}^2}{3}$$ 
\section{Les Exponentielles et les Logarithmes}
\subsection{\tt EXPLN}\index{EXPLN}
{\tt EXPLN} a comme argument une expression trigonométrique.\\
{\tt EXPLN} transforme les fonctions trigonométriques en exponentielles et
logarithmes {\sc sans} linéariser.\\ 
{\tt EXPLN} fait passer en {\tt mode complexe}.\\
On tape :\\
$${\tt EXPLN(SIN(X))}$$
On obtient :\\
$${\tt \frac{EXP(i.X)-\frac{1}{EXP(i.X)}}{2.i}}$$
\subsection{\tt LIN}\index{LIN}
{\tt LIN} a comme argument une expression contenant des exponentielles et des 
fonctions trigonométriques.\\
{\tt LIN} linéarise cette expression (l'exprime en fonction de $\exp(n.x)$).\\
{\tt LIN} fait passer en {\tt mode complexe} quand il y a des fonctions
 trigonométriques.\\ 
Exemple 1 :\\
On tape :\\
$${\tt LIN((SIN(X))}$$
On obtient :\\
$${\tt -(\frac{i}{2}.EXP(i.X))+\frac{i}{2}.EXP(-(i.X))}$$
Exemple 2 :\\
On tape :\\
$${\tt LIN((COS(X)^2)}$$
On obtient :\\
$${\tt -(\frac{1}{4}.EXP(2.i.X))+\frac{1}{2}+\frac{1}{4}.EXP(-(2.i.X))}$$
Exemple 3 :\\
On tape :\\
$${\tt LIN((EXP(X)+1)^3)}$$
On obtient :\\
$${\tt 3.EXP(X)+1+3.EXP(2.X)+EXP3.X)}$$
\subsection{\tt LNCOLLECT}\index{LNCOLLECT}
{\tt LNCOLLECT} a comme argument une expression contenant des logarithmes.\\
{\tt LNCOLLECT} regroupe les termes en logarithmes. Il est donc préférable
de l'utiliser sur une expression factorisée (en utilisant {\tt FACTOR}).\\
On tape :\\
$${\tt  LNCOLLECT(LN(X+1)+LN(X-1))}$$
On obtient :\\
$${\tt LN((X+1)(X-1))}$$
\subsection{\tt TSIMP}\index{TSIMP}
{\tt TSIMP} simplifie toutes les expressions en les transformant en
 exponentielles complexes (fait passer en {\tt mode complexe}) puis en 
réduisant le nombre de variable au sens de {\tt LVAR} (cf \ref{sec:lvar}).\\
On n'utilise {\tt TSIMP} qu'en dernier ressort.\\ 
On tape :\\
$${\tt TSIMP(\frac{SIN(3.X)+SIN(7.X)}{SIN(5.X)})}$$
On obtient après simplification (en recopiant 2 fois le résultat) :\\
$${\tt \frac{EXP(i.X)^4+1}{EXP(i.X)^2}}$$

\section{Les polyn\^omes}
\subsection{\tt GCD}\index{GCD}
{\tt GCD} désigne le pgcd (plus grand commun diviseur) de deux polyn\^omes (ou de  deux listes de polyn\^omes de m\^eme longueur).\\
 On tape :
$${\tt GCD(X^2+2 \cdot X+1 ,X^2-1 )}$$
On obtient :
$${\tt X+1 }$$ 
On tape :
$${\tt GCD(\{X^2+2 \cdot X+1,X^3-1\} ,\{X^2-1,X^2+X-2 \})}$$
On obtient :
$${\tt \{ X+1, X-1 \} }$$
\subsection{\tt LGCD}\index{LGCD}
{\tt LGCD} désigne le pgcd (plus grand commun diviseur) d'une liste de
 polyn\^omes.\\ 
{\tt LGCD} renvoie une liste  constituée par la liste des polyn\^omes d'entr\'ee, et le {\tt PGCD} des polyn\^omes de cette liste.\\
 On tape :
$${\tt LGCD(\{X^2+2 \cdot X+1,X^3+1 ,X^2-1,X^2+X \})}$$
On obtient :
$${\tt \{\{X^2+2 \cdot X+1,X^3+1 ,X^2-1,X^2+X \}\ ,\  X+1 \}}$$
\subsection{\tt SIMP2}
{\tt SIMP2} a comme paramètre deux polyn\^omes (ou deux listes de polyn\^omes de m\^eme longueur).
Ces deux  polyn\^omes  sont considèrés comme représentant une fraction rationnelle.\\ 
{\tt SIMP2} renvoie la fraction rationnelle simplifiée sous la forme d'une liste de deux polyn\^omes.\\ 
 On tape :
$${\tt SIMP2(X^3-1,X^2-1) }$$
On obtient :
$${\tt \{X^2+X+1,X+1\}}$$ 

\subsection{\tt LCM}\index{LCM}
{\tt LCM} désigne le ppcm (plus petit commun multiple) de deux polyn\^omes (ou de  deux listes de polyn\^omes de m\^eme longueur).\\
On tape :
$${\tt LCM(X^2+2 \cdot X+1 ,X^2-1 )}$$
On obtient :
$${\tt (X^2+2 \cdot X+1) \cdot (X-1)}$$
\subsection{\tt FACTOR}\index{FACTOR}
 {\tt FACTOR} a pour argument un polyn\^ome ou une liste de polyn\^omes.\\
{\tt FACTOR} factorise le polyn\^ome ou la liste de polyn\^omes.\\
On tape :
 $${\tt FACTOR(X^2+2\cdot X+1)}$$
On obtient :
$${\tt (X+1)^2}$$
On tape :
 $${\tt FACTOR(X^4-2.X^2+1)}$$
On obtient :
$${\tt (X-1)^2.(X+1) ^2}$$
On tape :
 $${\tt FACTOR(\{X^3-2.X^2+1,X^2-X\})}$$
On obtient :
$${\tt \{\frac{(X-1).(2.X+-1+\sqrt5).(2.X-(1+\sqrt5))}{4}\ ,\ X(X-1)\}}$$
\subsection{\tt FACTORS}\index{FACTORS}
{\tt FACTORS} a pour argument un polyn\^ome ou une liste de polyn\^omes.\\
{\tt FACTORS } donne la liste des facteurs du polyn\^ome avec  leur multiplicité.\\
On tape :
 $${\tt FACTORS(X^2+2 \cdot X+1)}$$
On obtient :
$${\tt \{X+1,2\}}$$
On tape :
 $${\tt FACTORS(X^4-2.X^2+1)}$$
On obtient :
$${\tt \{X-1,2.\ ,\ X+1 ,2.\}}$$
On tape :
 $${\tt FACTORS(\{X^3-2.X^2+1,X^2-X\})}$$
On obtient :
$${\tt \{\{X-1,1.\ ,\ 2.X+-1+\sqrt5 ,1.\ ,\ 2.X-(1+\sqrt5) ,1.\ ,\ 4, -1.\},}$$
$${\tt \{X, 1.\ ,\ X-1,1.\}\}}$$
\subsection{\tt DIVIS}\index{DIVIS}
{\tt DIVIS} a pour argument  un polyn\^ome (ou une liste de polyn\^omes de m\^eme longueur) et renvoie 
la liste des diviseurs.\\ 
On tape : 
$${\tt DIVIS(X^4-1)}$$
On obtient :
$${\tt \{1,X^2+1,X-1,X^3-X^2+X-1,X+1,X^3+X^2+X+1,X^2-1,X^4-1\}}$$
\subsection{\tt QUOT}\index{QUOT}
{\tt QUOT} donne le quotient de deux polyn\^omes dans la division selon les puissances d\'ecroissantes.\\
 On tape :
$${\tt QUOT(X^2+2\cdot X +1 ,X )}$$
On obtient :
$${\tt X+2}$$
\subsection{\tt REMAINDER}\index{REMAINDER}
{\tt REMAINDER} donne le reste de la division de deux polyn\^omes (division 
selon les puissances d\'ecroissantes).\\
On tape :
$${\tt REMAINDER(X^3-1 ,X^2-1 )}$$
On obtient :
$${\tt X-1}$$
\subsection{\tt DIV2}\index{DIV2}
Donne la liste, du quotient et du reste de la division selon les puissances 
d\'ecroissantes  de deux polyn\^omes.\\
 On tape :
$${\tt DIV2(X^2+2\cdot X+1 ,X )}$$
On obtient :
$${\tt \{X+2,1\}}$$
Le mode pas \`a pas est ici int\'eressant car il donne les restes successifs... 
\subsection{\tt EGCD}\index{EGCD}
Il s'agit de l'identit\'e de B\'ezout (Extended Greatest Common Divisor).
${\tt EGCD(A[X],B[X] )}$ renvoie  ${\tt \{ D[X],U[X],V[X] \}}$ avec D,U,V v\'erifiant :
$${\tt {D[X]=U[X]*A[X]+V[X]*B[X]}}$$ 
 On tape :
$${\tt EGCD(X^2+2 \cdot X+1 ,X^2-1 )}$$
On obtient :
$${\tt \{2 \cdot X+2,1,-1\}}$$
\subsection{\tt ABCUV}\index{ABCUV}
Il s'agit encore de l'identit\'e de B\'ezout. Les paramètres sont trois polyn\^omes,
A, B, C (C doit \^etre un multiple du PGCD(A,B)): \\
${\tt ABCUV(A[X],B[X],C[X])}$ renvoie  ${\tt \{ U[X],V[X] \}}$ avec 
U,V v\'erifiant :
$${\tt {C[X]=U[X]*A[X]+V[X]*B[X]}}$$  
On tape :
$${\tt ABCUV(X^2+2 \cdot X+1 ,X^2-1,X+1 )}$$
On obtient :
$${\tt \{\frac{1}{2},\frac{-1}{2}\}}$$
On tape :
$${\tt ABCUV(X^2+2 \cdot X+1 ,X^2-1,X^3+1 )}$$
On obtient :
$${\tt \{ \frac{X^2-X+1}{2},-\frac{X^2-X+1}{2}\}}$$
\subsection{\tt HORNER}\index{HORNER}
{\tt HORNER}  a deux param\`etres : un  polyn\^ome $P[X]$ et un nombre 
$a$, et renvoie une liste compos\'ee du polyn\^ome $Q[X]$ (quotient de  $P[X]$ par $X-a$), de $a$ et de $P[a]$.\\
On tape :
$${\tt HORNER(X^4+2.X^3-3.X^2+X-2,1)}$$
On obtient :
$${\tt \{X^3+3.X^2+1\ ,\ 1\ ,\ -1 \}}$$

\subsection{\tt PTAYL}\index{PTAYL}
Il s'agit d'\'ecrire un polyn\^ome $P[X]$ selon les puissances de $X-a$.\\
{\tt PTAYL} a deux param\`etres : un  polyn\^ome P et un nombre $a$.\\
On tape :
$${\tt PTAYL(X^2+2\cdot X +1 , 2)}$$
On obtient le polyn\^ome Q[X]:
$${\tt X^2+6\cdot X +9 }$$
Attention, on a :
$${\tt P(X)=Q(X-2)}$$

\subsection{\tt ZEROS}\index{ZEROS}
{\tt ZEROS} a deux param\`etres : un polyn\^ome P et le nom de la variable.\\
{\tt ZEROS} renvoie la liste des z\'eros {\sc sans} leur multiplicit\'e.\\
On tape :
$${\tt ZEROS(X^4-1,X)}$$
On obtient :\\
-en mode r\'eel
$${\tt \{-1\ ,\ 1\}}$$
-en mode complexe
$${\tt \{ -1\ ,\ 1\ ,\ -i\ ,\ i\}}$$
\subsection{\tt PROOT}\index{PROOT}
{\tt PROOT} est la commande numérique  de la HP48.\\
{\tt PROOT} a comme argument un vecteur de composantes les coefficients
 d'un polyn\^ome (par ordre d\'ecroissant).\\
{\tt PROOT} renvoie un vecteur de composantes les racines du polyn\^ome.\\
Pour chercher les racines de $P[x]=x^5-2.x^4+x^3$,
on tape :
$${\tt PROOT([1,-2,1,0,0,0]) }$$
On obtient :
$${\tt [0.,0.,0.,1.,1.]}$$
ce qui signifie que : $0$ est racine triple et $1$ est racine double de $P[x]$.
\subsection{\tt FROOTS}\index{FROOTS}
{\tt FROOTS} a comme argument une fraction rationnelle $F[x]$.\\
{\tt FROOTS}  renvoie  un vecteur de composantes les racines  et les p\^oles de $F[x]$ suivis de leur multiplicit\'e.\\
On tape :
$${\tt FROOTS(\frac{X^5-2.X^4+X^3}{X-2}) }$$
On obtient :
$${\tt [2,-1.,0,3.,1,2.]}$$
ce qui signifie que : $2$ est un p\^ole d'ordre 1,  $0$ est racine triple et $1$ est racine double de $F[x]=\frac{x^5-2.x^4+x^3}{x-2}$.
\subsection{\tt PCOEF}\index{PCOEF}
{\tt PCOEF} est la commande numérique de la HP48.\\
{\tt PCOEF} a comme argument, un vecteur de composantes les  racines d'un 
 polyn\^ome $P[x]$.\\
{\tt PCOEF} renvoie un vecteur de composantes, les coefficients
 du polyn\^ome unitaire $P[x]$ (par ordre d\'ecroissant).\\
On tape :
$${\tt PCOEF([1,2,0,0,3])}$$
On obtient :
$${\tt [1.,-6.,11.,-6.,0.,0.]}$$
c'est \`a dire le d\'eveloppement du polyn\^ome $P[x]= (x-1).(x-2).x.x.(x-3)$ :\\$x^5-6.x^4+11.x^3-6.x^2$.
\subsection{\tt FCOEF}\index{FCOEF}
{\tt FCOEF} a comme argument un vecteur de composantes les racines  et les p\^oles d'une fraction rationnelle $F[x]$ suivis de leur multiplicit\'e.\\
{\tt FCOEF} renvoie la fraction rationnelle  $F[x]$.\\
On tape :
$${\tt FCOEF([1,2,0,3,2,-1]) }$$
On obtient :
$${\tt \frac{X^5-2.X^4+X^3}{X-2}}$$
puisque $(x-1)^2.x^3=x^5-2.x^4+x^3$
\subsection{\tt CHINREM}\index{CHINREM}
{\tt CHINREM} a comme argument deux vecteurs ayant chacun comme composantes deux  polyn\^omes.\\
{\tt CHINREM} renvoie un vecteur de composantes deux  polyn\^omes.\\
{\tt CHINREM([A[X],R[X]],[B[X],Q[X]])} désigne les  polyn\^omes  {\tt P[X]} et {\tt S[X]} vérifiant :\\
 {\tt S[X]=R[X].Q[X]},\\  
 {\tt P[X]=A[X] (mod R[X])} et {\tt P[X]=B[X] (mod Q[X])}. \\
Il existe toujours une solution 
{\tt P[X]} si {\tt R[X]} et {\tt Q[X]} sont premiers entre eux, et toutes les solutions sont congrues modulo {\tt S[X]=R[X].Q[X]}   \\
Trouver les solutions $P[X]$ de :
$${\tt \left \{ \begin{array}{rl} P[X]=&X\ (\bmod\ X^2+1)\\ P[X]=&X-1\ (\bmod\ X^2-1) \end{array}\right.}$$
On tape :
$${\tt CHINREM([X,X^2+1],[X-1,X^2-1])}$$
On obtient :
$${\tt [-\frac{X^2-2.X+1}{2},-\frac{X^4-1}{2}]}$$
donc $P[X]=-\frac{X^2-2.X+1}{2} \ (\bmod-\frac{X^4-1}{2})$
\subsection{\tt TRUNC}\index{TRUNC}
{\tt TRUNC} permet de tronquer un polyn\^ome à un ordre donné (utile quand on fait des 
développements limités).\\
{\tt TRUNC} a deux arguments : un polyn\^ome et  $ X^n$.\\ 
{\tt TRUNC} renvoie le polyn\^ome tronqué à l'ordre $n-1$  (pas de termes $\geq$ à $X^n$).\\
On tape :
$${\tt TRUNC({(1+X+\frac{1}{2}.X^2)}^3\ ,\ X^4)}$$
On obtient :
$${\tt 4.X^3+\frac{9}{2}.X^2+3.X+1}$$
\subsection{\tt LAGRANGE}\index{LAGRANGE}
{\tt LAGRANGE} a comme argument une matrice de deux lignes et $n$ colonnes :\\
la premi\`ere ligne correspond à des valeurs d'abscisses $x_i$, et la deuxième ligne correspond 
à des valeurs d'ordonnés $y_i$ ($i=1..n$).\\
{\tt LAGRANGE} renvoie le polyn\^ome $P$ de degré $n-1$ tel que $P(x_i)=y_i$.\\
On tape :
$${\tt LAGRANGE([[1,3],[0,1]])}$$
On obtient :
$${\tt \frac{X-1}{2}}$$
en effet $\frac{x-1}{2}=0 $ pour $x=1$ et $\frac{x-1}{2}=1$ pour $x=3$ 
\subsection{\tt LEGENDRE}\index{LEGENDRE}
{\tt LEGENDRE} a comme argument un entier $n$.\\
{\tt LEGENDRE} renvoie le polyn\^ome non nul solution de l'équation différentielle :
$$(x^2-1).y''-2.x.y'-n(n+1).y=0$$ 
On tape :
$${\tt LEGENDRE(4)}$$
On obtient :
$${\tt \frac{35.X^4-30.X^2+3}{8}}$$
\subsection{\tt HERMITE}\index{HERMITE}
{\tt HERMITE} a comme argument un entier $n$.\\
{\tt HERMITE} renvoie le polyn\^ome de HERMITE de degré $n$.\\
On tape :
$${\tt HERMITE(6)}$$
On obtient :
$${\tt 64.X^6-480.X^4+720.X^2-120}$$
\subsection{\tt TCHEBYCHEFF}\index{TCHEBYCHEFF}
{\tt TCHEBYCHEFF} a comme argument un entier $n$.\\
Si $n>0$, {\tt TCHEBYCHEFF} renvoie le polyn\^ome $T_n$ tel que :\\
$$T_n[x]= \cos(n.\arccos(x))$$\\
Si $n<0$ {\tt TCHEBYCHEFF} renvoie le polyn\^ome de Tchebycheff de seconde espèce :\\
$$T_n[x]=\frac{\sin(n.\arccos(x))}{\sin(\arccos(x))}$$\\
On tape :
$${\tt TCHEBYCHEFF(4)}$$
On obtient :
$${\tt 8.X^4-8.X^2+1}$$
en effet :\\
$\cos( 4.x)=Re((\cos(x)+i.\sin(x))^4)$\\
$\cos( 4.x)=\cos(x)^4-6.\cos(x)^2.(1-\cos(x)^2)+((1-\cos(x)^2)^2$.\\
$\cos(4.x)=T_4(\cos(x))$.\\
On tape :
$${\tt TCHEBYCHEFF(-4)}$$
On obtient :
$${\tt 8.X^3-4.X}$$
en effet :\\
$\sin(4.x)=\sin(x).(8.\cos(x)^3-4.\cos(x))$.
\subsection{\tt REORDER}\index{REORDER}
{\tt REORDER}  a deux paramètres : une expression et un vecteur contenant 
les noms des variables dans un certain ordre.\\
{\tt REORDER} développe l'expression selon l'ordre des variables donné dans
le second paramètre.\\
On tape :
$${\tt REORDER(X^2+2.X.A+A^2+Z^2-X.Z,[A,X,Z])}$$
On obtient :
$${\tt A^2+2.X.A+X^2-Z.X+Z^2}$$
\section{Les fractions rationnelles }
\subsection{\tt FXND}\index{FXND}
{\tt FXND} a comme argument une fraction rationnelle et renvoie la liste form\'ee par le 
num\'erateur et le d\'enominateur de cette fraction simplifi\'ee.\\
On tape :
$${\tt FXND(\frac{X^2-1}{X-1}) }$$
On obtient :
$${\tt \{X+1,1\}}$$
\subsection{\tt SIMP2}\index{SIMP2}
{\tt SIMP2} a comme paramètre deux polyn\^omes (ou deux listes de polyn\^omes de m\^eme longueur).
Ces deux  polyn\^omes  sont considérés comme représentant une fraction rationnelle. \\
{\tt SIMP2} renvoie la fraction rationnelle simplifiée sous la forme d'une liste de deux polyn\^omes. \\
 On tape :
$${\tt SIMP2(X^3-1,X^2-1) }$$
On obtient :
$${\tt \{X^2+X+1,X+1\}}$$ 
\subsection{\tt PROPFRAC}\index{PROPFRAC}
{\tt PROPFRAC} a comme argument une fraction  rationnelle.\\
{\tt PROPFRAC} renvoie cette fraction rationnelle \'ecrite de mani\`ere \`a mettre en \'evidence sa partie enti\`ere.\\
${\tt PROPFRAC(A(X) / B(X))}$ écrit la fraction rationnelle $\frac{A[X]}{B[X]}$ sous la 
forme :$$Q[X]+\frac{R[X]}{B[X]}$$\ \ avec \ $R[X]=0$ ou \ $0\leq deg(R[X])< deg(B[X])$.\\
On tape :
$${\tt  PROPFRAC(\frac{(5.X+3).(X-1)}{X+2})}$$
On obtient :
$${\tt 5.X-12+\frac{21}{X+2}}$$

\subsection{\tt PARTFRAC}\index{PARTFRAC}
D\'ecomposer en \'eléments simples la fraction rationnelle :
$$\frac{x^5-2 \times x^3+1}{x^4-2\times x^3+2\times x^2-2\times x+1}$$
On utilise la commande {\tt PARTFRAC}.\\
 Cette commande  se trouve 
dans le menu {\tt ARITH (shift-bleu 1)} sous menu {\tt 2.POLYNOMIAL...}  en position 14 (ou on l'\'ecrit
 en mode $\alpha$).\\
On tape :
$${\tt PARTFRAC(\frac{X^5-2*X^3+1}{X^4-2*X^3+2*X^2-2*X+1})}$$
On obtient en mode réel:
$${\tt X+2+\frac{\frac{-1}{2}}{X-1}+\frac{\frac{X-3}{2}}{X^2+1} }$$
On obtient en mode complexe :
$${\tt X+2+\frac{\frac{1-3.i}{4}}{X+i}+\frac{\frac{-1}{2}}{X-1}+\frac{\frac{1+3.i}{4}}{X-i} }$$
\section{Le calcul modulaire }
On peut faire des calculs modulo {\tt p} c'est à dire dans $Z/pZ$ ou dans  $Z/pZ[X]$.\\
Attention, pour  certaines commandes il faut choisir un nombre {\tt p} premier.\\
La représentation choisie est la représentation symétrique (-1 au lieu de 6 modulo 7).\\
Il faut mettre  dans la variable {\tt MODULO}, du répertoire {\tt HOME},
  la valeur de {\tt p}.\\
{\sc Dans la suite les exemples seront tra\^ités avec  {\tt p=13}}
\subsection{\tt MODSTO}\index{MODSTO}
Pour mettre dans {\tt MODULO} la valeur de {\tt p} (par exemple {\tt p=13})
 on peut utiliser :\\
 {\tt MODE cas MODULO ...} ou
{\tt 13 STO MODULO} (si on est dans {\tt HOME}) ou encore {\tt MODSTO(13)}.\\
{\tt MODSTO} permet de changer la valeur de la variable {\tt MODULO} du 
répertoire {\tt HOME}.\\
On taperait par exemple :
${\tt MODSTO(5)}$ ou ${\tt 5\  STO\  MODULO}$
pour faire des calculs modulo 5.\\
{\sc Dans la suite les exemples seront tra\^ités avec  {\tt p=13}}
\subsection{\tt ADDTMOD}\index{ADDTMOD}
{\tt ADDTMOD} réalise une addition  dans  $Z/pZ[X]$.\\
On tape :
$${\tt ADDTMOD(11X+5,8X+6)}$$
On obtient :
$${\tt 6X-2}$$
\subsection{\tt SUBTMOD}\index{SUBTMOD}
{\tt SUBTMOD} réalise une soustraction dans $Z/pZ[X]$.\\
On tape :
$${\tt SUBTMOD(11X+5,8X+6)}$$
On obtient :
$${\tt 3X-1}$$
\subsection{\tt MULTMOD}\index{MULTMOD}
{\tt MULTMOD} réalise une multiplication  dans $Z/pZ[X]$.\\
On tape :
$${\tt MULTMOD(11X+5,8X+6)}$$
On obtient :
$${\tt -(3X^2-2X-4)}$$
\subsection{\tt DIV2MOD }\index{DIV2MOD }
Les arguments sont deux polyn\^omes $ A[X]$ et $ B[X]$. Le résultat est la
liste du  quotient et du reste  de la division euclidienne de $ A[X]$ par 
$ B[X]$ dans  $Z/pZ[X]$.\\
On tape :
$${\tt DI2VMOD(X^3+X^2+1,2X^2+4)}$$
puisque $$X^3+X^2+1=(2X^2+4) . (\frac{X+1}{2})+\frac{5X-4}{4}$$
On obtient :
$${\tt \{ \frac{X+1}{2} \ ,\  \frac{5X-4}{4}\}} $$
puis $${\tt EXPANDMOD( \{ \frac{X+1}{2} \ , \ \frac{5X-4}{4}\})}$$
on obtient :
$${\tt \{-(6X+6)\ ,\  -(2X+1)\}}$$
\subsection{\tt DIVMOD}\index{DIVMOD}
Les arguments sont deux polyn\^omes $ A[X]$ et $ B[X]$. Le résultat est la 
fraction rationnelle $ \frac{A[X]}{B[X]}$ simplifiée dans $Z/pZ[X]$.\\
On tape :
$${\tt DIVMOD(2X^2+5,5X^2+2X-3)}$$
On obtient :
$${\tt \frac{5X+3}{6X+6}} $$
\subsection{\tt POWMOD}\index{POWMOD}
{\tt POWMOD(X,N)} calcule {\tt X} \`a la puissance {\tt N} dans $Z/pZ[X]$.\\
 Le contenu  ${\tt p}$  de {\tt MODULO} doit \^etre un nombre premier inf\'erieur \`a 100.\\
On tape :
$${\tt POWMOD(2X+1,5)}$$
On obtient :
$${\tt 6.X^5+2.X^4+2.X^3+X^2-3.X+1}$$
car :\\
 $10=-3 \ (\bmod\ 13) \ \  40=1\ (\bmod\ 13)\ \   80=2 \ (\bmod\ 13)\ \ 32=6\ (\bmod\ 13)$. 
\subsection{\tt INVMOD}\index{INVMOD}
{\tt INVMOD} a comme argument un  entier.\\
{\tt INVMOD} calcule l'inverse de cet entier dans $Z/pZ$.\\
On tape :
$${\tt INVMOD(5)}$$
On obtient (car $5\times-5=-25=1\ (\bmod\ 13)$) :
$${\tt -5}$$
\subsection{\tt GCDMOD}\index{GCDMOD}
{\tt GCDMOD} a deux polyn\^omes comme arguments.\\
{\tt GCDMOD} calcule le PGCD des deux  polyn\^omes dans $Z/pZ[X]$.\\
On tape :
$${\tt GCDMOD(2X^2+5,5X^2+2X-3)}$$
On obtient :
$${\tt -(4X-5)}$$
\subsection{\tt EXPANDMOD}\index{EXPANDMOD}
{\tt EXPANDMOD} a comme argument une expression polynomiale.\\
{\tt EXPANDMOD} développe cette expression dans $Z/pZ[X]$.\\
On tape :
 $${\tt EXPANDMOD(( 2X^2+12).( 5X-4))}$$
On obtient :
$${\tt -(3X^3-5X^2+5X-4)}$$
\subsection{\tt FACTORMOD}\index{FACTORMOD}
{\tt FACTORMOD} a comme argument un  polyn\^ome.\\
{\tt FACTORMOD} factorise ce  polyn\^ome dans  $ Z/pZ[X]$ à condition que 
l'on ait ${\tt p \leq 97}$ et $p$ premier.\\
On tape :
$${\tt FACTORMOD(-(3X^3-5X^2+5X-4))}$$
On obtient :
$${\tt -((3X-5)(X^2+6))}$$
\subsection{\tt RREFMOD}\index{RREFMOD}
{\tt RREFMOD} permet de résoudre un système d'équations linéaires de la forme
$AX=B$ dans  $Z/pZ$.\\
L'argument est une matrice formée par A bordée avec  B comme dernier vecteur 
colonne. Le résultat est une matrice formée de A1 et de B1 o\`u A1 a des zéros
 de part et d'autre de la diagonale et le système $A1X=B1$ est équivalent à  $AX=B$.\\ 
On tape :
$${\tt RREFMOD([[1, 2, 9][3,10,0]])}$$ 
pour résoudre
$$\left \{\begin{array}{lcr}\ \  x\ +\ \  2 \cdot y & = &9 \\3 \cdot x +10 \cdot y & =& 0 \end{array}\right.$$
On obtient :
$${\tt \left [ \begin{array}{rrr}2 & 0 & 6\\0 & 4 & -1 \end{array} \right]}$$ 
ce qui veut dire que ${\tt 2.X=6} $ et ${\tt 4.Y=-1}$ ou encore ${\tt X=3 \ \ Y=3}$ (puisque $-4*3=1 \ (\bmod 13)$).

\section{Développements limit\'es et asymptotiques }
\subsection{\tt DIVPC}\index{DIVPC}
{\tt DIVPC} a trois arguments : deux polyn\^omes ${\tt A(X),\ B(X)}$ ( avec ${\tt B(0) \neq 0}$) et
 un entier ${\tt n}$.\\
{\tt DIVPC} renvoie le quotient ${\tt Q(X)}$ de la division de  ${\tt A(X)}$ par ${\tt B(X)}$ 
selon les puissances croissantes avec  deg${\tt (Q )\leq n}$ ou ${\tt Q=0}$. \\
$Q[X]$ est donc le
d\'eveloppement limit\'e d'ordre $n$ de $\frac{A[X]}{B[X]}$ au 
voisinage de $X=0$. \\ 
On tape :
$${\tt DIVPC(1+X^2+X^3,1+X^2,5)}$$
On obtient :
$${\tt 1+X^3-X^5}$$
Attention : la machine demande a passer en ``puissances croissantes'', r\'epondre {\tt yes}.
\subsection{\tt  TAYLOR0}\index{TAYLOR0} 
{\tt  TAYLOR0} a un seul argument : la fonction de $x$  à développer, et renvoie 
son développement limité à l'ordre relatif 4 au voisinage de $x=0$ (si $x$ est la variable courante).\\ 
On tape :
$${\tt TAYLOR0(\frac{TAN(P.X)-SIN(P.X)}{TAN(Q.X)-SIN(Q.X)}) }$$
On obtient :
$${\tt \frac{P^5-Q^2 \cdot P^3}{4 \cdot Q^3}.X^2+\frac{P^3}{Q^3}}$$
Attention : l'ordre 4 veut dire que l'on d\'eveloppe \`a l'ordre relatif 4 
le num\'erateur et le  d\'enominateur (ici ordre absolu 5 pour le num\'erateur
 et le d\'enominateur, ce qui donne en fin de compte, un ordre 2 (5-3) puisque
 la valuation du d\'enominateur est égale à 3 ).
\subsection{\tt TAYLR }\index{TAYLR }
Donner un  developpement limit\'e d'ordre 2 au voisinage de x=0 de :
$$ \frac{3\times \tan(x)-\tan(3\times x)}{x\times (1-\cos(3\times x))}$$

Le d\'enominateur etant d'ordre 3, pour obtenir  un  developpement limit\'e 
d'ordre 2  au voisinage de $x=0$,  il faut faire un d\'eveloppement d'ordre 5 
au voisinage de  $x=0$  du num\'erateur.\\  
On utilise la commande {\tt TAYLR} que l'on trouve  dans le menu de {\tt CALC \ (shift-bleu 4)} sous menu {\tt 2. LIMITS \& SER...} en position 5 (ou on le tape en mode $\alpha$).\\
{\tt TAYLR} est compatible avec la HP48.\\
On tape :
$${\tt TAYLR( \frac{3 \cdot TAN(X)-TAN(3 \cdot X)}{X \cdot (1-COS(3 \cdot X))} , X , 5)}$$
On obtient :
$${\tt -\frac{16}{9} \cdot (1+\frac{19}{4} \cdot X^2)  }$$
\subsection{\tt SERIES}\index{SERIES} 
\begin{itemize}
\item  développement au voisinage de {\tt x=a}\\
Exemple :\\
Donner un développement limit\'e  \`a l'ordre 4 au voisinage de 
$x=\frac{\pi}{6}$ de $\cos(2\times x)^2$.

On utilise la commande {\tt SERIES} que l'on trouve  dans le menu de {\tt CALC \ (shift-bleu 4)} en position 8 (ou on le tape en mode $\alpha$) .

On tape :
$${\tt SERIES( COS(2 \cdot X)^2 , X=\frac{\pi}{6} , 4 )}$$
On obtient :
$${\tt \{ \{Limit: \frac{1}{4} \ \ Equiv: \frac{1}{4} }$$ 
$${\tt Expans: \ (- \frac {8}{3}h^4+\frac {8 \sqrt {3}}{3}h^3+2h^2- \sqrt 3 h+ \frac{1}{4}})$$
$${\tt Remain: \  \frac  {h^5}{4} \} \ h=X- \frac{ \pi}{6}\}}$$

\item  développement au voisinage de {\tt x=+$\infty$} ou  {\tt x=-$\infty$}\\
Exemple 1 :\\
Donner un développement de $\arctan(x)$ à l'ordre 5 au voisinage de
 {\tt x=+$\infty$} en prenant comme infiniment petit $h=\frac{1}{x}$.\\
On tape :
$${\tt SERIES(ATAN(X),X=+\infty,5)}$$
On obtient :
$${\tt \{ \{Limit: \frac{\pi}{2} \ Equiv: \frac{\pi}{2}}$$
$${\tt Expans:\ (\frac{\pi}{2}-h+\frac{h^3}{3}-\frac{h^5}{5})\ Remain: \frac{\pi h^6}{2}\}\ h=\frac{1}{X}\}}$$
Exemple 2 :\\
Donner un développement de $(2x-1)e^\frac{1}{x-1}$ à l'ordre 2 au voisinage de
 {\tt x=+$\infty$} en prenant comme infiniment petit $h=\frac{1}{x}$.\\
On tape :
$${\tt SERIES((2X-1) \cdot EXP(\frac{1}{X-1}),X=+\infty,3)}$$
On obtient :
$${\tt \{ \{Limit: +\infty \ Equiv: \frac{2}{h}}$$
$${\tt Expans:\ (\frac{2+h+2h^2+\frac{17h^3}{6}}{h})\ Remain: 2h^3\}\ h=\frac{1}{X}\}}$$
Exemple 3 :\\
Donner un développement de $(2x-1)e^\frac{1}{x-1})$ à l'ordre 2 au voisinage de
 {\tt x=-$\infty$} en prenant comme infiniment petit $h=-\frac{1}{x}$.\\
On tape :
$${\tt SERIES((2X-1) \cdot EXP(\frac{1}{X-1}),X=-\infty,3)}$$
On obtient :
$${\tt \{ \{Limit: -\infty \ Equiv: -\frac{2}{h}}$$
$${\tt Expans:\ (\frac{-2+h-2h^2+\frac{17h^3}{6}}{h})\ Remain: -2h^3\}\ h=-\frac{1}{X}\}}$$
\item  développement unidirectionnel\\
Il faut utiliser pour l'ordre un réel positif (par exemple 4.) pour faire un developpement 
au voisinage de $x=a$ avec $ \ x>a$ et un  réel négatif (par exemple -4.)
 pour faire un developpement au voisinage de $x=a$ avec $ \ x<a$ .\\
Exemple 1 :\\
Donner un développement de $\ \frac{(1+X)^\frac{1}{X}}{X^3}\ $ à l'ordre 2, au voisinage de
$X=0^+$.\\
On tape :
$${\tt SERIES(\frac{(1+X)^\frac{1}{X}}{X^3} ,X,2.)}$$
On obtient :
$${\tt \{ \{Limit: +\infty \ Equiv: \frac{e}{h^3}\ Expans:\ (-\frac{e.h-2.e}{2.h^3})\ Remain: \frac{e}{h}\}\  h=X\}}$$
Exemple 2 :\\
Donner un développement de $\ \frac{(1+X)^\frac{1}{X}}{X^3}\ $ à l'ordre 2, au voisinage de
$X=0^-$.\\
On tape :
$${\tt SERIES(\frac{(1+X)^\frac{1}{X}}{X^3} ,X,-2.)}$$
On obtient :
$${\tt \{ \{Limit: -\infty \ Equiv: \frac{e}{h^3}\ Expans:\ ( -\frac{e.h-2.e}{2.h^3})\ Remain: \frac{e}{h}\}\ h=X\}}$$
Exemple 3 :\\
Donner un développement de $\ \frac{(1+X)^\frac{1}{X}}{X^3}\ $ à l'ordre 2, au voisinage de $X=0$.\\
On tape :
$${\tt SERIES(\frac{(1+X)^\frac{1}{X}}{X^3} ,X,2)}$$
On obtient :
$${\tt \{ \{Limit: \infty \ Equiv: \frac{e}{h^3}\ Expans:\ ( -\frac{e.h-2.e}{2.h^3})\ Remain: \frac{e}{h}\}\ h=X\}}$$
\end{itemize}
\subsection{\tt LIMIT}\index{LIMIT}
{\tt LIMIT} a comme arguments une expression dépendant d'une variable et une 
égalité (variable =la valeur o\`u l'on veut calculer la limite).\\ 
Il est souvent préférable d'écrire l'expression avec des quotes, pour éviter 
une réécriture de cette expression sous forme normale (pour ne pas avoir une
simplification rationnelle des arguments) avant l'exécution de la commande {\tt LIMIT}.\\   
On tape par exemple :
$${\tt LIMIT('(2X-1) \cdot EXP(\frac{1}{X-1})',X=+\infty)}$$
On obtient :
$$+\infty$$
\section{Les matrices }
\subsection{\tt TRAN}\index{TRAN}
{\tt TRAN} a comme argument une matrice $A$.\\
{\tt TRAN} renvoie la matrice transposée de $A$.\\
On tape :
$${\tt TRAN(\left[\begin{array}{cc} 1& 2\\3&4\end{array}\right])}$$
On obtient :
$${\tt \left[\begin{array}{cc} 1& 3\\2&4\end{array}\right]}$$
\subsection{\tt TRN}\index{TRN}
{\tt TRN} a comme argument une matrice $A$.\\
{\tt TRN} renvoie la matrice adjointe (transposée de la conjuguée) de $A$ (c'est la commande de la HP48).\\
On tape :
$${\tt TRN(\left[\begin{array}{cc} i& 1+i\\1&1-i\end{array}\right])}$$
On obtient après simplification:
$${\tt \left[\begin{array}{cc} -i& 1\\1-i&1+i\end{array}\right]}$$
\subsection{\tt MAD}\index{MAD}
{\tt MAD } a comme argument  une matrice carrée $A$ d'ordre $n$.\\
{\tt MAD } renvoie une liste composée du déterminant de $A$, de l'inverse 
de $A$, d'une liste contenant les coefficients matriciels d'un polyn\^ome $Q$,
 et du  polyn\^ome  caractéristique $P$ de $A$.\\
On a :
$$P(x)=(-1)^n.\det(A-x.I)$$
Le polyn\^ome à coefficients matriciels $P(A)-P(x).I $ est divisible par $A-x.I$ (puisqu'il s'annule pour $x=A$). Soit  $Q(x)$  leur quotient.\\
 Puisque $P(A)=0$, on a $\ P(A)-P(x).I\ =\ -P(x).I\ =\ (A-x.I).Q(x)$.\\
$Q(x)$ est donc aussi la comatrice de $A-x.I$ et on a :\\
$Q(x)\ =\ I.x^{n-1}+...+B_0 $ o\`u $B_0=$ la comatrice de $A$
(au signe près si $n$ est pair!).\\
On tape :
$${\tt MAD(\left[\begin{array}{ccc} 4&1& -2\\1&2&-1\\2&1&0 \end{array}\right]) }$$
On obtient :
$${\tt \{8, 
\left[
\begin{array}{ccc} 
\frac{1}{8}&-\frac{1}{4} &\frac{3}{8}\\
\frac{1}{4}&\frac{1}{2}&\frac{1}{4} \\
-\frac{3}{8}&-\frac{1}{4}&\frac{7}{8}  
\end{array}
\right],}$$
$${\tt \{\left[
\begin{array}{ccc} 
1&0& 0\\0&1&0\\0&0&1 
\end{array}
\right], 
\left[\begin{array}{ccc} -2&1& -2\\1&-4&-1\\2&1&-6 \end{array}\right],
\left[\begin{array}{ccc} 1&-2& 3\\-2&4&2\\-3&-2&7 \end{array}\right]\},}
$$
$${\tt X^3-6.X^2+12.X-8\}}$$
\subsection{\tt HADAMARD}\index{HADAMARD}
{\tt HADAMARD} a comme arguments deux matrices $A$ et $B$ de m\^eme ordre.\\
{\tt HADAMARD} renvoie la matrice constituée par le produit terme à terme des éléments de  $A$ et $B$.\\ 
On tape :
$${\tt HADAMARD(\left[\begin{array}{cc} 1& 2\\3&4\end{array}\right],\left[\begin{array}{cc} 5& 6\\7&8\end{array}\right])}$$
On obtient :
$${\tt \left[\begin{array}{cc} 5& 12\\21&32\end{array}\right]}$$
\subsection{\tt AXM}\index{AXM}
Si {\tt AXM} a comme argument une matrice symbolique, {\tt AXM} renvoie une 
matrice numérique et réciproquement.\\
On tape :
$${\tt AXM([[1/2,2],[3,4]])}$$
On obtient :
$${\tt[[0.5,2],[3,4]]}$$
\subsection{\tt AXL}\index{AXL} 
{\tt AXL} a comme argument une matrice.\\
{\tt AXL} renvoie cette matrice écrite sous la forme d'une liste de listes.\\
Et réciproquement {\tt AXL} transforme une liste de listes en une matrice.\\
On tape :
$${\tt AXL([[1,2],[3,4]])}$$
On obtient :
$${\tt \{\{1,2\}\{3,4\}\}}$$
On tape :
$${\tt AXL( \{\{1,2\}\{3,4\}\})}$$
On obtient :
$${\tt[[1,2],[3,4]]}$$
\subsection{\tt EGVL}\index{EGVL}
{\tt EGVL} a comme argument une matrice $A$ d'ordre $n$.\\
{\tt EGVL} renvoie un vecteur constitué par les $n$ valeurs propres de $A$.\\
{\sc Remarque} : Si $A$ est symbolique on n'aura que les valeurs propres que le CAS sait calculer (car il faut savoir factoriser le polyn\^ome 
caractéristique formellement!)  \\
On tape :
$${\tt EGV(\left[\begin{array}{ccc} 4&1& -2\\1&2&-1\\2&1&0 \end{array}\right])}$$
On obtient :
$${\tt [2,2,2] }$$
\subsection{\tt EGV}\index{EGV}
{\tt EGV} a comme argument une matrice $A$ d'ordre $n$.\\
{\tt EGV} renvoie une liste composée d'une  matrice de passage dans une base 
caractéristique et d'un vecteur constitué par les $n$ valeurs propres de $A$ (m\^eme remarque que précédemment).\\ 
On tape :
$${\tt EGV(\left[\begin{array}{ccc} 4&1& -2\\1&2&-1\\2&1&0 \end{array}\right])}$$
On obtient :
$${\tt \{\left[\begin{array}{ccc} 1&2& 1\\0&1&0\\1&2&0 \end{array}\right],[2,2,2] \}}$$
\subsection{\tt PCAR}\index{PCAR}
{\tt PCAR} a comme argument une matrice $A$ d'ordre $n$.\\
{\tt PCAR} renvoie le polyn\^ome caractéristique $P $ de $A$ ($P[x]=(-1)^n.\det(A-x.I))$
On tape :
$${\tt PCAR (\left[\begin{array}{ccc} 4&1& -2\\1&2&-1\\2&1&0 \end{array}\right])}$$
On obtient :
$${\tt X^3-6.X^2+12.X-8}$$
\subsection{\tt JORDAN}\index{JORDAN}
{\tt JORDAN} a comme argument une matrice $A$ d'ordre $n$.\\
{\tt JORDAN} renvoie une liste composée du polyn\^ome minimal $M $ de $A$, 
du polyn\^ome 
caractéristique $P $ de $A$, de la liste des vecteurs propres (eigen) et caractéristiques (char) (chaque vecteur est précédé par sa valeur propre ou 
caractéristique) et  d'un vecteur constitué par les  $n$ valeurs propres.\\  
On tape :
$${\tt JORDAN(\left[\begin{array}{ccc} 4&1& -2\\1&2&-1\\2&1&0 \end{array}\right])}$$
On obtient :
\begin{eqnarray*} 
{\tt \{X^3-6X^2+12X-8, X^3-6X^2+12X-8,}\\
{\tt \{Char:2:[1,0,0], Char:2:[2,1,2],Eigen:2:[1,0,1]\}, [2,2,2]\} }
\end{eqnarray*}
\subsection{\tt HILBERT}\index{HILBERT}
{\tt HILBERT} a comme argument un entier $n$.\\
{\tt HILBERT} renvoie la matrice de Hilbert carrée d'ordre $n$ d'éléments :\\
 $$a_{i,j}=\frac{1}{i+j-1}$$
On tape :
$${\tt HILBERT(4)}$$
On obtient :
$${\tt \left[\begin{array}{cccc} 1&\frac{1}{2}&\frac{1}{3} &\frac{1}{4}\\\frac{1}{2}&\frac{1}{3}&\frac{1}{4} &\frac{1}{5}\\\frac{1}{3}&\frac{1}{4}&\frac{1}{5} &\frac{1}{6}\\\frac{1}{4}&\frac{1}{5}&\frac{1}{6} &\frac{1}{7}\\  \end{array}\right] }$$
\subsection{\tt VANDERMONDE}\index{VANDERMONDE}
{\tt VANDERMONDE} a comme argument un vecteur de composantes $x_i$.\\
{\tt VANDERMONDE} renvoie la matrice de Vandermonde correspondante(la kième ligne est le vecteur de composantes $x_i^{k-1}$).\\
On tape :
$${\tt VANDERMONDE([A,B,C])}$$
On obtient :
$${\tt  \left[\begin{array}{ccc} 1& 1&1\\ {\tt A}&{\tt B}&{\tt C}\\{\tt A^2}&{\tt B^2}&{\tt C^2} \end{array}\right]}$$
\subsection{\tt LCXM}\index{LCXM}
{\tt LCXM} a comme arguments deux entiers $n$ et $p$ 
et un programme  qui prend en entrée  i (un numéro de ligne), j (un numéro de colonne) et  qui renvoie la valeur de $a_{i,j}$.  \\
{\tt LCXM} renvoie la matrice de coefficients $a_{i,j}$ de dimension $n.p$\\
On tape :
$${\tt LCXM(2,3,\ll \rightarrow I\ J\ \ll I+J \gg\ \gg)}$$
On obtient :
$${\tt \left[\begin{array}{ccc} 2& 3&4\\3&4&5 \end{array}\right]}$$
\section{Les vecteurs}
Dans le menu {\tt shift-bleu SYMB (MTH)} on trouve les fonctions permettant de
calculer :\\
-la norme d'un vecteur : {\tt ABS}\index{ABS}\\
-un produit scalaire avec la commande : {\tt DOT}\index{DOT} \\
-un produit vectoriel avec la commande : {\tt CROSS}\index{CROSS} \\
\section{Les formes quadratiques}
\subsection{\tt QXA}\index{QXA} 
{\tt QXA} a deux arguments : une forme quadratique $q$ et le vecteur de 
composantes les variables utilis\'ees.\\ 
{\tt QXA} renvoie une liste de 2 termes : la matrice $A$ associ\'ee \`a $q$ et
 le vecteur indiquant les variables utilis\'ees.\\ 
On tape :
$${\tt QXA(2.X.Y\ ,\ [X,Y])}$$
On obtient :
$${\tt  \{ \left[\begin{array}{cc} 0& 1\\ 1&0 \end{array}\right]\ ,\ [X,Y]\}}$$
\subsection{\tt AXQ}\index{AXQ}
{\tt AXQ} a deux arguments : une matrice symétrique $A$ repr\'esentant une forme 
quadratique $q$ et le vecteur de composantes les variables utilis\'ees.\\ 
{\tt AXQ} renvoie une liste de 2 termes : la forme quadratique $q$ et 
le vecteur indiquant les variables utilis\'ees.\\   
On tape :
$${\tt AXQ([[0,1],[1,0]]\ ,\ [X,Y])}$$
On obtient :
$${\tt \{ 2.X.Y \  ,\ [X,Y]\}}$$
\subsection{\tt GAUSS}\index{GAUSS}
{\tt GAUSS} a deux arguments : une forme quadratique $q$ et le vecteur de 
composantes les variables utilis\'ees.\\ 
{\tt GAUSS} renvoie une liste de 4 termes :
 les termes diagonaux d'une matrice diagonale $B$ (obtenus par la 
d\'ecomposition de $q$ en somme de carr\'es), la matrice $Q$ de changement de base, l'\'ecriture de $q$ sous forme d'une somme de carr\'es et le vecteur indiquant les variables utilis\'ees.\\      
On a  (si on note $A$ la matrice assosi\'ee \`a $q$) :
$$ ^tQ.B.Q=A$$
On tape :
$${\tt GAUSS(2.X.Y\ ,\ [X,Y])}$$
On obtient :
$${\tt  \{[\frac{1}{2},-2]\ ,\ \left[\begin{array}{cc} 1& 1\\-\frac{1}{2} &\frac{1}{2} \end{array}\right]\ ,\ -2.(\frac{Y-X}{2})^2+\frac{1}{2}.(Y+X)^2\ ,\ [X,Y]\}}$$

\subsection{\tt SYLVESTER}\index{SYLVESTER}
{\tt SYLVESTER} a un seul argument : une matrice symétrique $A$ repr\'esentant une forme 
quadratique $q$.\\
{\tt  SYLVESTER} renvoie une liste de 2 termes :
 les termes diagonaux d'une matrice diagonale $B$  (obtenus par la d\'ecomposition de $q$ en somme de carr\'es) et la matrice $Q$ de changement de base.\\
On a :
 $$ ^tQ.B.Q=A$$
On tape :
$${\tt SYLVESTER([[0,1],[1,0]])}$$
On obtient :
$${\tt \{[\frac{1}{2},-2]\ ,\ \left[\begin{array}{cc} 1& 1\\-\frac{1}{2} &\frac{1}{2} \end{array}\right]\}}$$
\section{Les fonctions de plusieurs variables}
\subsection{\tt DERIV}\index{DERIV}\label{sec:deriv}
{\tt DERIV} a deux paramètres une  application $F$ de $R^n $ dans $R$ et un vecteur de $R^n$ indiquant le nom des variables.\\
{\tt DERIV} renvoie le gradient de $F$ ($[\frac{\partial F}{\partial X},\frac{\partial F}{\partial Y},\frac{\partial F}{\partial Z}]$ si $n=3$).\\
On tape :
$${\tt DERIV(2.X^2.Y-X.Z^3,[X,Y,Z])}$$
On obtient après simplification :
$${\tt [4.Y.X-Z^3,2.X^2,-(3.Z^2.X)]}$$
\subsection{\tt LAPL}\index{LAPL}
{\tt LAPL} a deux param\`etres : une  application $F$ de $R^n $ dans $R$ et un vecteur de $R^n$ indiquant le nom des variables.\\
{\tt LAPL} renvoie le laplacien de $F$ ($\frac{\partial^2 F}{\partial X^2}+\frac{\partial^2 F}{\partial Y^2}+\frac{\partial^2 F}{\partial Z^2}$ si $n=3$).\\
On tape :
$${\tt LAPL(2.X^2.Y-X.Z^3\ ,\ [X,Y,Z])}$$
On obtient :
$${\tt 4.Y-6.X.Z}$$
\subsection{\tt HESS}\index{HESS}
{\tt HESS} a deux param\`etres : une application $F$ de $R^n $ dans $R$ et un vecteur de $R^n$ indiquant le nom des variables.\\
{\tt HESS} renvoie une liste constitu\'ee de la hessienne de $F$, du gradient
de $F$ et de la liste des variables.\\
On tape :
$${\tt HESS(2.X^2.Y-X.Z\ ,\ [X,Y,Z])}$$
On obtient :
$$ \{ \left[\begin{array}{ccc} {\tt 4.Y}& {\tt4.X}& -1\\ {\tt4.X}&0&0 \\ -1&0&0 \end{array}\right]{\tt \ ,\ [4.X.Y-Z,2.X^2,-X]\ ,\ [X,Y,Z]\}
}$$
Pour avoir maintenant les points critiques, il suffit, en mode {\tt RPN} de taper :\\
$${\tt SOLVE}$$ puisque sur la pile il y a
 ${\tt [4.X.Y-Z,2.X^2,-X] \mbox{ et }  [X,Y,Z]} $\\
  alors qu'en mode {\tt ALGÉBRIQUE} il faut taper :
$${\tt SOLVE( [4.X.Y-Z,2.X^2,-X]\ ,\ [X,Y,Z])}$$ 
\subsection{\tt DIV}\index{DIV}
{\tt DIV} a deux param\`etres : une fonction vectorielle $F$ (application de $R^n $ dans $R^n$) et un vecteur de $R^n$ indiquant le nom des variables.\\
{\tt DIV} d\'esigne la divergence de $F$.
 $${\tt DIV([A,B,C],[X,Y,Z])=\frac{\partial A}{\partial X}+\frac{\partial B}{\partial Y}+\frac{\partial C}{\partial Z}} \mbox{  (si } n=3)$$\\
On tape :
$${\tt DIV([X.Z,-Y^2,2.X^Y],[X,Y,Z])}$$
On obtient :
$${\tt Z-2.Y}$$
\subsection{\tt CURL}\index{CURL}
Ici $n=3$.\\
{\tt CURL} a deux param\`etres : une fonction vectorielle $F$ (application de $R^3 $ dans $R^3$) et un vecteur de $R^3$ indiquant le nom des variables.\\
{\tt CURL} d\'esigne le rotationnel de
 $F$.
$${\tt CURL([A,B,C],[X,Y,Z])=[\frac{\partial C}{\partial Y}-\frac{\partial B}{\partial Z},\frac{\partial A}{\partial Z}-\frac{\partial C}{\partial X},\frac{\partial B}{\partial X}-\frac{\partial A}{\partial Y}]}$$
On tape :
$${\tt CURL([X.Z,-Y^2,2.X^Y],[X,Y,Z])}$$
On obtient :
$${\tt [2.X^2,X-2.Y.2X,0]}$$
\section{Équations}
\subsection{\tt EXLR}\index{EXLR}
{\tt EXLR} a comme paramètre une équation.\\
{\tt EXLR} renvoie une liste composée des deux membres de l'équation.\\
On tape :\\
$${\tt EXLR(A=B)}$$
On obtient :\\
$${\tt \{ A,B\}}$$
\subsection{\tt SOLVEVX}\index{SOLVEVX}
{\tt SOLVEVX} a comme paramètre  une équation entre deux 
expressions de la variable contenue dans {\tt VX} ou une 
expression ({\tt =0 }est alors sous-entendu). \\
{\tt SOLVEVX} résout l'équation.\\
 Exemple 1 :\\
On tape :\\
$${\tt  SOLVEVX(X^4-1=3)}$$
On obtient en mode réel:\\
$${\tt \{X=-\sqrt2 ,\ X=\sqrt2\}}$$
On obtient en mode complexe:\\
$${\tt \{X=-\sqrt2 ,\ X=\sqrt2 ,\ X=-(i.\sqrt2),\ X=i\sqrt2\}}$$
 Exemple 2 :\\
On tape :\\
$${\tt  SOLVEVX((X-2).SIN(X))}$$
On obtient en mode réel:\\
$${\tt \{X=-(2.\pi.n_1) ,\ X=2.\pi.n_1,\ X=2\}}$$
\subsection{\tt SOLVE}\index{SOLVE}
{\tt SOLVE} a comme arguments une équation entre deux 
expressions ou une expression ({\tt =0 }est alors sous-entendu), 
et le nom d'une variable. \\
{\tt SOLVE} permet aussi de résoudre un système d'équations : il suffit pour
cela de mettre les équations sous la forme d'un vecteur et le nom des
 variables dans un vecteur. \\
{\tt SOLVE} résout l'\'equation ou le système d'équations.\\
Exemple 1 :\\
 On tape :\\
$${\tt  SOLVE(X^4-1=3,X)}$$
On obtient en mode réel:\\
$${\tt \{X=-\sqrt2 ,\ X=\sqrt2\}}$$
On obtient en mode complexe:\\
$${\tt \{X=-\sqrt2 ,\ X=\sqrt2 ,\ X=-(i.\sqrt2),\ X=i\sqrt2\}}$$
Exemple 2 :\\
 On tape :\\
$${\tt  SOLVE([X+Y=1,X-Y],[X,Y])}$$
On obtient :\\
$${\tt \{[X=\frac{1}{2},\ Y=\frac{1}{2}]\} }$$
\subsection{\tt ISOL}\index{ISOL}
{\tt ISOL} isole une variable  dans une expression ou une équation (la
variable ne doit appara\^itre qu'une seule fois).\\
Cette commande est la m\^eme que pour la HP48.\\ 
{\tt ISOL} a deux paramètres  une expression ou une équation et le nom de la variable \`a isoler.\\
 On tape :\\
$${\tt  ISOL(X^4-1=3,X)}$$
On obtient en mode réel:\\
$${\tt \{X=-\sqrt2 ,\ X=\sqrt2\}}$$
On obtient en mode complexe:\\
$${\tt \{X=-\sqrt2 ,\ X=\sqrt2 ,\ X=-(i.\sqrt2),\ X=i\sqrt2\}}$$
Attention : si le flag 01 est coché ({\tt Principal value}), {\tt ISOL}
ne renvoie qu'une solution. 
\section{Les syst\`emes lin\'eaires}
Dans tout ce paragraphe, on appelle ``matrice augmentée''  du système A.X=B (ou
 matrice représentant le système A.X=B), la matrice formée par la matrice A 
bordée à droite par le vecteur colonne  B.   
\subsection{\tt REF}\index{REF}
{\tt REF} permet de r\'esoudre un syst\`eme d'\'equations lin\'eaires que l'on écrit sous forme matricielle :
 $${\tt A\cdot X=B}$$
La commande {\tt REF} se trouve dans le menu {\tt MATRICES (shift-bleu 5)}, 
 sous-menu {\tt 5 LINEAR SYST...}.\\
Le paramètre de {\tt REF} est la  matrice augmentée du système (celle formée 
par la matrice {\tt A} du système bordée à droite par le second membre {\tt B}).\\ 
Le résultat est une matrice {\tt [A1,B1]} : {\tt A1} a des zéros sous sa
 diagonale et les solutions de :  $${\tt A1\cdot X=B1}$$ sont les m\^emes que 
celles de :  $${\tt A\cdot X=B}$$
Par exemple, soit à résoudre le système :
$$\left \{\begin{array}{lcr} 3 \cdot x + y & = &-2 \\3 \cdot x +2 \cdot y & =& 2 \end{array}\right.$$ 
On tape  (on utilise  {\tt shift-bleu EQW (MTRW)} pour entrer la matrice) :
$${\tt REF([[3,  1, -2] [3, 2, 2]])}$$
On obtient :
$$\left [ \begin{array}{rrr}1 & \frac{1}{3} & \frac{-2}{3}\\0 & 1 & 4 \end{array} \right]$$

\subsection{\tt rref}\index{rref}
{\tt rref} permet de r\'esoudre un syst\`eme d'\'equations lin\'eaires que l'on écrit sous forme matricielle :
 $${\tt A\cdot X=B}$$
La commande {\tt rref} se trouve dans le menu {\tt MATRICES (shift-bleu 5)},
  sous-menu {\tt 5 LINEAR SYST...}.\\
Le paramètre de {\tt rref} est la  matrice augmentée du système (celle formée 
par la matrice {\tt A} du système et ayant comme dernier vecteur colonne le 
second membre {\tt B}).\\     
Le résultat est une matrice {\tt [A1,B1]} : {\tt A1} a des zéros de part et 
d'autre de sa diagonale et les solutions de :
  $${\tt A1\cdot X=B1}$$ 
sont les m\^emes que celles de :  $${\tt A\cdot X=B}$$
Il est intéressant d'utiliser {\tt rref} en mode  pas à pas en cochant
{\tt Step/Step (MODE cas chk)}.\\
Par exemple, soit à résoudre le système :
$$\left \{
\begin{array}{lcr} 3 \cdot x + y & = &-2 \\3 \cdot x +2 \cdot y & =& 2 \end{array}\right.$$ 
On tape (on utilise {\tt shift-bleu EQW (MTRW)} pour entrer la matrice) :
$${\tt rref([[3,  1, -2][3, 2, 2]])}$$
On obtient :
$${\tt \left\{ Pivots: \{1\  1.\}\left [ \begin{array}{rrr}3 & 0 & -6\\0 & 1 & 4 \end{array} \right]\right\}}$$
\subsection{\tt RREF}\index{RREF}
{\tt RREF} est identique à {\tt rref} sauf qu'elle ne donne pas les pivots.\\
{\tt RREF} est la commande de la HP48, voici ce que cela donne en pas à pas 
avec la HP49G pour résoudre le système :
$$\left \{
\begin{array}{lcr} 3 \cdot x + y & = &-2 \\3 \cdot x +2 \cdot y & =& 2 \end{array}\right.$$
 On tape (on utilise {\tt shift-bleu EQW (MTRW)} pour entrer la matrice) :
$${\tt RREF([[3,  1, -2][3, 2, 2]])}$$
On obtient :\\

${\tt L_2=L_2-L_1}$\\

$ \left[\begin{array}{ccc}3&1&-2\\3&2 &2 \end{array}\right] $\\

puis {\tt ok}\\

${\tt L_1=L_1-L_2}$\\

$ \left[\begin{array}{cccc}3&1&-2\\0&1&4 \end{array}\right] $\\

puis {\tt ok}\\

Reduction result\\

$ \left[\begin{array}{cccc}3&0&-6\\0&1&4 \end{array}\right] $\\

puis {\tt ok}\\
et le r\'esultat (avec des $1$ sur la diagonale) s'inscrit dans l'historique :
$$\left [ \begin{array}{rrr}1 & 0 & -2 \\0 & 1 & 4 \end{array} \right]$$

\subsection{\tt LINSOLVE}\index{LINSOLVE}
{\tt LINSOLVE} permet de r\'esoudre un syst\`eme d'\'equations lin\'eaires.\\
La commande {\tt LINSOLVE} se trouve dans le menu {\tt MATRICES (shift-bleu 5)}, sous-menu {\tt 5.LINEAR SYST...} en position 1.\\
On tape :
$${\tt LINSOLVE()}$$
Puis on entre dans {\tt MATRIXWRITER} en tapant sur {\tt shift-bleu EQW (MTRW)}(le curseur étant dans les parenthéses de {\tt LINSOLVE}) .
On coche la touche du bandeau {\tt vect}(si ce n'est pas déjà fait!), puis on 
tape la premi\`ere
  \'equation (\'eventuellement \`a l'aide de {\tt EQW}).
$${\tt 2 \cdot X+Y+Z=1\ ENTER}$$
$${\tt  X+Y+ 2 \cdot Z=1\ ENTER}$$
$${\tt   X+2 \cdot Y+Z=4\ ENTER}$$
 {\tt ENTER}\\
puis, on tape les inconnues :
$${\tt [X \ Y \ Z]}$$
et {\tt  \  ENTER}\\

On obtient si on a coché le mode pas à pas ({\tt MODE cas Step/Step}) :\\

{\tt L2=2L2-L1}\\

$ \left[\begin{array}{cccc}2&1&1&-1\\1&1&2 &-1\\1&2&1&-4 \end{array}\right] $\\

puis {\tt ok}\\

{\tt L3=2L3-L1}\\

$ \left[\begin{array}{cccc}2&1&1&-1\\0&1&3 &-1\\1&2&1&-4 \end{array}\right] $\\

etc...à la fin

{\tt Result}\\

$ \left[\begin{array}{cccc}8&0&0&4\\0&8&0 &-20\\0&0&8&-4 \end{array}\right] $\\

puis  {\tt ok}\\
$${\tt \{ X=-\frac{1}{2}\  Y=\frac{5}{2}\ Z=-\frac{1}{2}\}}$$ 
s'inscrit dans l'historique.

\section{Les \'equations diff\'erentielles }
\subsection{\tt LDEC}\index{LDEC}
{\tt LDEC} permet de r\'esoudre directement  les \'equations lin\'eaires 
({\tt LAP ILAP} (cf \ref{sec:lap}) y sont utilis\'es en interne).\\
Pour les équations linéaires du second ordre, les param\`etres sont le
 second membre et l'\'equation caract\'eristique.\\
Pour les systèmes differentiels du premier ordre les param\`etres sont le
 second membre (un vecteur) et la matrice du système.\\
Exemple 1:\\
Résoudre :\\
$$y\prime \prime -6. y\prime+9. y \ =\ x. e^{3. x}$$
On tape :
$${\tt LDEC(X \cdot EXP(3 \cdot X),X^2-6 \cdot X+9)}$$
On trouve :
$${\tt ( \frac{X^3}{6}-(3 \cdot C0-C1) \cdot X+C0) \cdot EXP(3 \cdot X)}$$
{\tt C0} et {\tt C1} sont les constantes d'intégration (${\tt y(0)=C0 \ y\prime(0)=C1}$).\\
Exemple 2:\\
Résoudre :\\
$$Z' = \left[
\begin{array}{cc}
 0&1\\-9&6 \end{array}\right].Z+
\left[
\begin{array}{c}
 0\\X.EXP(3.X) \end{array}\right] 
$$
C'est le m\^eme exemple que précédemment avec $Z=[y , y\prime]$.\\
On tape :
$${\tt LDEC([0,X \cdot EXP(3 \cdot X)],[[0,1][-9,6]])}$$
On trouve :
\begin{eqnarray*}
{\tt [( \frac{X^3}{6}-(3 \cdot V1-V2) \cdot X+V1) \cdot EXP(3 \cdot X)} ,\\
{\tt (\frac{X^3}{2}+\frac{X^2}{2}-(9.V1-3.V2).X+V2).EXP(3.X)]}
\end{eqnarray*}
{\tt V1} et {\tt V2} sont les constantes d'intégration (${\tt Z(0)=[V1 ,V2]}$).\\
\subsection{\tt DESOLVE et SUBST}\index{DESOLVE}
La commande {\tt DESOLVE} se trouve dans le menu {\tt S.SLV (shift-bleu 7)}
  en position 1 ou dans le menu {\tt CALC (shift-bleu 4)} sous-menu
1 {\tt DIFFERENTIAL EQNS...}.\\
{\tt DESOLVE} permet de  r\'esoudre d'autres  \'equations diff\'erentielles.\\
Les param\`etres sont : l'\'equation diff\'erentielle (o\`u $y \prime$ s'\'ecrit  ${\tt d1Y(X)}$) et
 l'inconnue {\tt Y(X)}. \\
Exemple 1 :\\
Résoudre :
$$y''+y=\cos (x) \; \; y(0)=c_0 \; \; y'(0)=c_1$$
On tape : 
$${\tt DESOLVE(d_1d_1Y(X)+Y(X)=COS(X),Y(X))}$$
On trouve :
$${\tt Y(X)=C0\cdot COS(X)+ \frac {X+2 \cdot C1}{2}\cdot SIN(X)}$$
On peut ensuite donner une valeur aux constantes en utilisant la commande
{\tt SUBST}\index{SUBST} qui se trouve dans le menu {\tt ALG (shift-rouge 4)} en position 6.
On écrit, si veut les solutions vérifiant $y(0)=1$ :
$${\tt SUBST ( Y(X)=C0\cdot COS(X)+ \frac {X+2 \cdot C1}{2}\cdot SIN(X), C0=1)}$$
On obtient :
$${\tt Y(X)=\frac {2\cdot COS(X)+  (X+2 \cdot C1)\cdot SIN(X)}{2}} $$
Exemple 2 :\\
Résoudre :
$$y''+y=\cos (x) \; \; y(0)=1 \; \; y'(0)=c_1$$
Pour avoir les solutions vérifiant $y(0)=1$ on peut aussi taper directement : 
$${\tt DESOLVE([d_1d_1Y(X)+Y(X)=COS(X),Y(0)=1],Y(X))}$$
On trouve alors :
$${\tt Y(X)= COS(X)+ \frac {X+2 \cdot C1}{2}\cdot SIN(X)}$$
\subsection{\tt LAP ILAP}\index{LAP}\label{sec:lap}
Ces commandes se trouvent dans le menu {\tt CALC \ (shift-bleu 4)} 
sous-menu {\tt 3.DIFFERENTIAL...} en positions 2 et 3.\\
On utilise les transform\'ees de Laplace (${\tt LAP}$) et les transform\'ees de
 Laplace inverses (${\tt ILAP}$\index{ILAP}) pour r\'esoudre des \'equations diff\'erentielles linéaires à coefficients constants, par exemple :
$$y \prime \prime +p. y \prime+q. y \ =\ f(x)\; \;  y(0)=a \; \; y\prime(0)=b$$
On a :
$${\tt LAP(Y)(T)=\int_0^{+\infty}e^{-T.X}Y(X)dX} $$
$${\tt ILAP(F)(T)=\frac{1}{2.i.\pi}\int_C e^{Z.T}dZ}$$
${\tt C}$ etant une courbe ferm\'ee contenant les p\^oles de ${\tt F}$\\
On utilise la propri\'et\'e suivante :
$${\tt LAP(Y')(T)=-Y(0)+P.LAP(Y)(T)}$$
La solution est alors :
$${\tt ILAP(\frac{LAP(F(X))+(X+P) \cdot A +B}{X^2+P \cdot X+Q})}$$
Exemple :\\
R\'esoudre :
$$y\prime \prime -6. y\prime+9. y \ =\ x. e^{3. x}$$
$$y(0)=a$$
$$ y\prime(0)=b$$
On tape :
$${\tt LAP(X \cdot EXP(3 \cdot X))\ ENTER}$$
On obtient :
$${\tt \frac {1}{X^2-6 \cdot X+9}}$$
On tape :
$${\tt ILAP(\frac {ANS(1)+(X-6) \cdot A+B}{X^2-6 \cdot X+9})}$$
On obtient la solution y :
$${\tt ( \frac{X^3}{6}-(3 \cdot A-B) \cdot X+A) \cdot EXP(3 \cdot X)}$$
\section{Autres fonctions}
\subsection{\tt EPSX0}\index{EPSX0}\label{sec:epsx0}
{\tt EPSX0} a  comme paramètre une expression  de {\tt X} et renvoie 
l'expression o\`u les valeurs plus petites que {\tt EPS} ont été remplacées par zéro.\\
On tape :
$${\tt EPSX0(0.001+X)}$$
On obtient (avec {\tt EPS=0.01}) :
$${\tt 0+X}$$
On obtient (avec {\tt EPS=0.0001}) :
$${\tt .001+X}$$
\subsection{\tt LVAR}\index{LVAR}\label{sec:lvar}
{\tt LVAR} a  comme paramètre une expression et renvoie une liste composée de 
l'expression et d'un vecteur de 
composantes le nom des variables indépendantes utilisées dans cette expression.\\
On tape :
$${\tt LVAR(X.Y.SIN(X))}$$
On obtient :
$${\tt \{X.Y.SIN(X),[SIN(X),X,Y]\}}$$
\subsection{\tt LNAME}\index{LNAME}
{\tt LNAME} a comme paramètre une expression et renvoie un vecteur de 
composantes le nom des variables symboliques utilisées dans cette expression.\\
On tape :
$${\tt LNAME(X.Y.SIN(X))}$$
On obtient :
$${\tt [X,Y]}$$
\subsection{\tt XNUM}\index{XNUM}
{\tt XNUM} a comme paramètre une expression ou un tableau.\\
{\tt XNUM} fait passer en mode approximatif et renvoie la valeur numérique de
l'expression ou du tableau.\\
 On tape :
$${\tt XNUM(\sqrt2)}$$ 
On obtient :
$${\tt 1.41421356237}$$
\subsection{\tt XQ}\index{XQ}
{\tt XQ} a comme paramètre une expression numérique réelle.\\
{\tt XQ} fait passer en mode exact et donne une approximation rationnelle ou réelle de l'expression.\\
On tape :
$${\tt XQ(1.41422)}$$
On obtient :
$${\tt \frac{66441}{46981}}$$
On tape :
$${\tt XQ(1.414213562)}$$
On obtient :
$${\tt \sqrt2}$$
\chapter{Bac 99 et HP49G}
\section{Introduction }
Commencez par taper {\tt CASCFG} (Computer Algebra System ConFiG) pour mettre 
la calculatrice en mode algébrique et pour l'initialiser.\\
Les différentes commandes utilisées se trouvent dans le menu de la touche {\tt SYMB} :\\ 
sous menus :\\
{\tt ALGEBRA (FACTOR LIN SUBST)}\\
{\tt ARITHMETIC (IEGCD ISPRIME? PROPFRAC)}\\ 
{\tt CALCULUS (DERIVX DERIV INTVX INT LIMIT)}\\
{\tt GRAPH (SIGNTAB TABVAR)}\\
{\tt TRIGONOMETR (TEXPAND)}\\
et dans le menu {\tt shift-rouge 1 (CMPLX)}\\ 
{\tt  RE IM }\\
Après chaque commande, il faut taper {\tt ENTER}, on oubliera souvent de le 
spécifier!!!\\
Dans ce qui suit, vous trouverez l'épreuve de mathématiques 1999 (série S)
  du Bac.\\
 On a essayé de faire faire le plus de choses possibles à la HP49G...
On remarquera, qu'il reste quand m\^eme à l'élève le soin de justifier les 
calculs et de faire un peu de raisonnement....  
\section{Exercice 1}
L'objet de cet exercice est de tracer la courbe $\Gamma$ décrite par $M$
 d'affixe $\frac{1}{2}\cdot z^2-z $, lorsque $m$ d'affixe $z$ décrit le cercle 
 \textit{C} de centre O et de rayon 1.
Soit $t$ un réel de $[-\pi , \pi]$ et $m$ le point de \textit{C} d'affixe 
$z=e^{i \cdot t}$.
\begin{enumerate}
\item Calcul des coordonnées de $M$ :\\
On entre tout d'abord l'expression $\frac{1}{2}\cdot z^2-z $ à l'aide de 
{\tt EQW}.\\
On tape :\\
$${\tt EQW \ alpha \ Z \ y^x \ 2 \ \rhd\ \div\  2\ \rhd\ -\ alpha \ Z\ ENTER}$$
L'expression est alors dans la ligne de commande et on la stocke dans la 
variable {\tt M} :
$${\tt STO\triangleright\ M}$$ 
Puisque $z=e^{i \cdot t}$ on tape :
$${\tt SUBST(M,Z=EXP(i\times t))}$$
la réponse est :
$${\tt \frac{EXP(i\cdot t)^2 -2 \cdot EXP(i\cdot t)}{2}} $$
On linéarise ensuite l'expression, on utilise l'historique pour recopier l'expression précédente :
$${\tt LIN(HIST\  ENTER)\ ENTER}$$
la réponse est :
$${\tt \frac{1}{2} \cdot EXP(2\cdot i\cdot t)+-1\cdot EXP(i\cdot t) }$$
A noter, qu'en recopiant l'expression, on la simplifie :
$${\tt \triangle\ ENTER\  ENTER }$$
donne :
$${\tt \frac{ EXP(2\cdot i \cdot t)-2\cdot EXP(i\cdot t)}{2}}$$
\begin{itemize}
\item
On cherche maintenant la partie réelle de cette expression :
$${\tt RE(\ HIST\ ENTER)\ ENTER} $$ 
la réponse est :
$${\tt \frac {COS ( t\cdot 2)-2\cdot COS(t)}{2}}$$
On définit alors la fonction $x(t)$, on tape :
$${\tt DEFINE\ (X(t) = \ HIST\ ENTER)\ ENTER}$$
\item
On cherche ensuite la partie imaginaire (il faut remonter dans l'historique 
pour retrouver l'expression ${\tt \frac{ EXP(2\cdot i \cdot t)-2\cdot EXP(i\cdot t)}{2}}$), on tape :
$${\tt IM( HIST\ \triangle\ \triangle\ \triangle\ \triangle\ ENTER)\ ENTER} $$ 
la réponse est :
$${\tt \frac {SIN ( t\cdot 2)-2\cdot SIN(t)}{2}}$$
On définit alors la fonction $y(t)$, on tape :
$${\tt DEFINE( Y(t) = \ HIST\ ENTER) ENTER}$$
\end{itemize}
\item On cherche un axe de symétrie de $\Gamma$, pour cela on calcule $x(-t)$ et
$y(-t)$ en tapant :
$${\tt X(-t)\ ENTER}$$
la réponse est :
$${\tt \frac {COS ( t\cdot 2)-2\cdot COS(t)}{2}}$$
On a donc : $x(-t)\ =\ x(t)$\\
puis :
$${\tt Y(-t)\ ENTER}$$
la réponse est :
$${\tt \frac {-SIN ( t\cdot 2)+2\cdot SIN(t)}{2}}$$
On a donc : $ y(-t)\ =\ -y(t)$\\
Si $M_1 (x(t), y(t))$ est sur $\Gamma, \ M_2 (x(-t),y(-t)$ est aussi sur
 $\Gamma$. \\
On vient de monter que $M_1 $ et $M_2$ sont symétriques par rapport 
à $Ox$, donc on en déduit que l'axe  $Ox$ est  un axe de symétrie de $\Gamma$.
\item Calcul de $x'(t)$ :\\
On tape :
$${\tt DERIV (X(t) ,t)}$$
la réponse est :
$${\tt \frac {2 \cdot (-2 \cdot SIN ( t\cdot 2))-2\cdot(- SIN(t))}{4}}$$
 après simplification (${\tt \triangle \ ENTER \ ENTER} $):
$${\tt -(SIN ( t\cdot 2)- SIN(t))}$$
On développe l'expression (transformation de ${\tt SIN(2 \cdot t)}$), on tape :
$${\tt TEXPAND(\ HIST \ ENTER) \ ENTER}$$
la réponse est :
$${\tt -(SIN ( t)\cdot 2 \cdot COS(t)- SIN(t))}$$
puis on factorise :
$${\tt FACTOR(\ HIST \ ENTER) \ ENTER} $$
la réponse est :
 $${\tt -SIN ( t)\cdot (2 \cdot COS(t)- 1)}$$
On peut alors définir la fonction $x'(t)$, on tape :
$${\tt DEFINE(\ X1(t)=\ HIST \ ENTER) \ ENTER}$$
\item Calcul  de $y'(t)$ :\\
On tape :
$${\tt DERIV (Y(t) ,t)}$$
la réponse est :
$${\tt \frac {2 \cdot (2 \cdot COS( t\cdot 2))-2\cdot COS(t)}{4}}$$
 après simplification (${\tt \triangle \ ENTER \ ENTER} $):
$${\tt COS ( t\cdot 2)- COS(t)}$$
On développe l'expression (transformation de ${\tt COS(2 \cdot t)}$), on tape :
$${\tt TEXPAND(\ HIST \ ENTER) \ ENTER}$$
la réponse est :
$${\tt  2 \cdot COS(t)^2-1- COS(t))}$$
puis on factorise :
$${\tt FACTOR(\ HIST \ ENTER) \ ENTER} $$
la réponse est :
 $${\tt (COS ( t)-1)\cdot (2 \cdot COS(t)+1)}$$
On peut alors définir la fonction $y'(t)$, on tape :
$${\tt DEFINE(\ Y1(t)=\ HIST \ ENTER) \ ENTER}$$
\item Variations de $x(t)$ et de $y(t)$\\
Pour cela on trace sur le m\^eme graphique $x(t)$ et $y(t)$, on tape :\\
{\tt  shift-bleu F4 (2D/3D)} :  la fen\^etre {\tt PLOT SETUP} s'ouvre.\\
On choisit comme type {\tt function} à l'aide de {\tt choos} du bandeau.\\
Puis on entre  $${\tt \{ X(t),Y(t)\} }$$ comme \'equation {\tt EQ}, puis 
{\tt t} comme paramètre indépendant, puis {\tt ENTER}.\\
 Ensuite on tape,
{\tt shift-bleu F2 (WIN)}, pour r\'egler les paramètres de la fen\^etre.\\
\item Tracé de la courbe $\Gamma$ :
\begin{itemize}
\item Valeurs de $x(t)$ et de $y(t)$\\
On trouve les valeurs de $x(t)$ et de $y(t)$ pour 
$t=0,\frac{\pi}{3},\frac{2 \cdot \pi}{3},\pi$ en tapant successivement :
$${\tt X(0) \ ENTER}$$
réponse : $\frac{-1}{2}$
$${\tt X(\pi \div 3) \ ENTER}
$$réponse : $\frac{-3}{4}$
$${\tt X(2 \times \pi \div 3) \ ENTER}$$
réponse : $\frac{1}{4}$
$${\tt X(\pi) \ ENTER}$$
réponse : $\frac{3}{2}$
$${\tt Y(0) \ ENTER}$$
réponse : $0$
$${\tt Y(\pi \div 3) \ ENTER}
$$réponse : $\frac{-\sqrt3}{4}$
$${\tt Y(2 \times \pi \div 3) \ ENTER}$$
réponse : $\frac{-3 \cdot \sqrt 3}{4}$
$${\tt Y(\pi) \ ENTER}$$
réponse : $0$
\item Pente des tangentes ( $m=\frac{y'(t)}{x'(t)}$)\\
On trouve les valeurs  de $\frac{y'(t)}{x'(t)}$ pour 
$t=0,\frac{\pi}{3},\frac{2 \cdot \pi}{3},\pi$ en tapant successivement :
$${\tt LIMIT(\ Y1(t)/ X1(t),t=0) \ ENTER}$$
réponse : $0$
$${\tt  LIMIT(\ Y1(t)/ X1(t),t=\pi \div 3) \ ENTER}
$$réponse : $\infty$
$${\tt  LIMIT(\ Y1(t)/ X1(t),t=2 \times \pi \div 3) \ ENTER}$$
réponse : $0$
$${\tt LIMIT(\ Y1(t)/ X1(t),t=\pi) \ ENTER}$$
réponse : $\infty$\\
Voici les variations de $x(t)$ et de $y(t)$
$$\begin{array}{|c|ccccccc|}\hline t & 0 & & \frac{\pi}{3} & & \frac{2\pi}{3} & &\pi \\\hline
x'(t)&0&-&0&+&?&+&0\\\hline
x(t)&\frac{-1}{2} & \downarrow & \frac{-3}{4} & \uparrow &\frac{1}{4} & \uparrow &\frac{3}{2}\\\hline
y(t)&0&\downarrow & \frac{\sqrt3}{4} &\downarrow & \frac{-3\sqrt3}{4} & \uparrow & 0\\\hline
y'(t)&0&-&?&-&0&+&?\\\hline
m &0&&\infty&&0&&\infty\\\hline
\end{array}$$
\item Courbe $\Gamma $ :\\
On fait ensuite le tracé de la courbe en paramétrique.\\
 On tape :\\
{\tt  shift-bleu F4 (2D/3D)} et  la fen\^etre {\tt PLOT SETUP} s'ouvre.\\
On choisit comme type {\tt parametric}, à l'aide de {\tt choos} du bandeau.
Puis on entre  $${\tt X(t)+i \times Y(t)}$$ comme \'equation {\tt EQ }, puis 
{\tt t} comme paramètre independant, puis {\tt ENTER}.\\
 Ensuite on tape
{\tt shift-bleu F2 (WIN)} pour r\'egler les paramètres de la fen\^etre
\end{itemize}
\end{enumerate}

\section{Exercice 2 (  de spécialité)}
On définit pour n entier naturel :
$$a_n=4 \times 10^n-1,\  b_n=2 \times 10^n-1 \mbox{ et } c_n=2 \times 10^n+1   $$
On tape donc :
$${\tt DEFINE(A(N)=4 \cdot 10^N-1)} $$
$${\tt DEFINE(B(N)=2 \cdot 10^N-1)} $$
$${\tt DEFINE(C(N)=2 \cdot 10^N+1)} $$
\begin{enumerate}
\item
\begin{itemize}
\item a) Calcul de $a_1, b_1, c_1, a_2, b_2, c_2, a_3, b_3, c_3$ :\\
Il suffit de taper :
$${\tt A(1)}$$
réponse 39
$${\tt B(1)}$$
réponse 19
$${\tt C(1)}$$
réponse 21
$${\tt A(2)}$$
réponse 399
$${\tt B(2)}$$
réponse 199
$${\tt C(2)}$$
réponse 201
$${\tt A(3)}$$
réponse 3999
$${\tt B(3)}$$
réponse 1999
$${\tt C(3)}$$
réponse 2001\\
\item b) nombre de chiffres et divisibilité\\
Ici, la calculatrice n'est l\`a que pour faire des essais pour différentes
 valeurs de $n$...\\
On sait que les entiers $n$ vérifiant :
$$10^n \leq n < 10^{n+1} $$
ont $(n+1)$ chiffres dans l'écriture décimale.\\
On a :
$$3 \cdot 10^n\ <\ a_n\ < \ 4 \cdot 10^n$$
$$ 10^n\ <\ b_n\ < \ 2 \cdot 10^n$$
$$2 \cdot 10^n\ <\ c_n\ < \ 3 \cdot 10^n$$
donc $a_n,\ b_n,\ c_n$ ont $(n+1)$ chiffres dans l'écriture décimale.\\
De plus $d_n=10^n-1$ est divisible par 9, car son écriture décimale ne
comporte que des 9.\\
 On a 
$$a_n=3 \cdot 10^n\ +\ d_n$$
et $$c_n=3 \cdot 10^n\ -\ d_n$$
donc $a_n$ et $c_n$ sont divisibles par 3. 
\item c) $b_3$ est premier\\
On tape :
$${\tt ISPRIME? (B(3))}$$
On obtient :
$${\tt 1.}$$
ce qui veut dire {\tt vrai}\\
Pour montrer que $b_3=1999$ est premier, il suffit de tester si 1999 est
 divisible par tous les nombres premiers inférieurs ou égaux à $\sqrt{1999}$.\\
Comme on a $1999<2025=45^2$, on teste la divisibilité de 1999 avec 
$n=2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41$. \\1999 n'etant divisible
 par aucun de ces nombres on en déduit que 1999 est premier.
\item d)  $a_n=b_n \times c_n$\\
On tape :
$${\tt B(N)\cdot C(N)}$$
On obtient :
$${\tt 4 \cdot {(10^N)}^2-1}$$
qui est bien la valeur de $a_n$\\
Décomposition en facteur premier de $a_6$\\
On tape :
$${\tt FACTOR(A(6))}$$
On obtient :
$${\tt 3 \cdot 23 \cdot 29 \cdot 1999}$$
\item e) $b_n \mbox{ et } c_n $ sont premiers entre eux.\\
Ici, la calculatrice n'est l\`a que pour faire des essais pour différentes
 valeurs de $n$... \\
Pour montrer que $c_n$ et $b_n$ sont premiers entre eux il suffit de remarquer
 que :
$$c_n=b_n+2$$
Ainsi, les diviseurs communs à $c_n$ et $b_n$ sont les diviseurs communs à
$b_n $ et $2$ et sont aussi, les diviseurs communs à $c_n$ et $2$.
$b_n $ et $2$ sont premiers entre eux car $b_n$ est un nombre
 premier différent de $2$. Donc 
$$PGCD(c_n,\ b_n)=PGCD(c_n,\ 2)=PGCD(b_n,\ 2)=1$$ 
\end{itemize}
\item On considère l'équation :
$$b_3 \cdot x + c_3 \cdot y =1$$
\begin{itemize}
\item a) Il y a au moins une solution car il s'agit de l'identité de Bézout.\\
En effet, le théorème de Bézout dit :\\
 Si $a$ et $b$ sont premiers entre eux, il existe $x$ et $y $ vérifiant :
$$a \cdot x + b \cdot y =1$$
 Donc, l'équation :
$$b_3 \cdot x + c_3 \cdot y =1$$ a au moins une solution.\\
\item b)On tape :
$${\tt IEGCD(B(3),C(3))}$$
On obtient :
$${\tt \{ 1,1000,-999\}}$$
ce qui veut dire que l'on a :
$$1=b_3 \times 1000 +c_3 \times (- 999)$$
on a donc une solution particulière : \\
$x=1000, \ y=-999$.\\
\`A la main, on écrit :\\
$ c_3\ =\ b_3\ +\ 2$ et $b_3\ =\ 999\ \times \ 2 \ +\ 1$\\
donc,  $b_3\ =\ 999\ \times \ (c_3 \ -\ b_3) \ +\ 1$
ainsi :
$$b_3 \times 1000 +c_3 \times (- 999)\ =\ 1$$
\item c)
Ici, la calculatrice ne peut pas trouver la solution générale.\\
On a :
$$b_3 \cdot x + c_3 \cdot y\ =\ 1$$
et 
$$b_3 \times 1000 +c_3 \times (- 999)\ =\ 1$$
donc par soustraction, on a :
$$b_3 \cdot (x-1000 )+ c_3 \cdot (y+999)\ =\ 0$$
ou encore :
$$b_3 \cdot (x-1000 )\ =\ - c_3 \cdot (y+999)\ $$
D'après le théorème de Gauss : $c_3$ est premier avec $b_3$ donc, $c_3$ divise $(x-1000)$.\\
Il existe donc $ k\ \in Z$ tel que :
$$(x-1000)=k \times c_3 $$
et
$$-(y+999)=k \times b_3$$
Réciproquement, soit
 $$x\ =\ 1000\ +\ k \times\ c_3$$
et
$$y\ =\ -999\ -\ k \times\ b_3 \ \mbox{   pour   }\ k\ \in Z$$ \\
On a :
$$b_3 \cdot x+ c_3 \cdot y =b_3 \times 1000 +c_3 \times (- 999)\ =\ 1$$
La solution générale est donc $\mbox{pour tout } k\ \in Z$ :
$$x\ =\ 1000\ +\ k \times\ c_3$$
$$y\ =\ -999\ -\ k \times\ b_3$$
\end{itemize}
\end{enumerate}
\section{Exercice 2 (pas de spécialité)}
On considère la suite $$u_n=\int _0 ^2\ \frac{2x+3}{x+2}\ e^\frac{x}{n}\ dx$$
\begin{enumerate}
\item
\begin{itemize}
\item a) Variation de $g(x)=\frac{2x+3}{x+2} \mbox{ pour } x\in [0,2]$\\
On tape :
$${\tt DEFINE(G(X)=\frac{2X+3}{X+2})}$$
puis :
$${\tt TABVAR(G(X))}$$
On obtient :
$$\begin{array}{cccccc} -\infty & + & -2 & + & +\infty & X\\
 2 & \uparrow & \infty & \uparrow & 2 & F
\end{array}$$
La première ligne donne le signe de {\tt f'(x)} selon x, et la deuxième ligne
les variations de {\tt f(x)}.

On en déduit donc que $g(x)$ est croissante sur $[0,2]$.\\
\`A noter que si on est en mode pas à pas (pour cela il faut appuyer sur
{\tt MODE} puis {\tt cas} du bandeau et cocher {\tt Step/Step} avec {\tt chk}
 du bandeau puis {\tt ok ok}), on obtient alors (quoiqu'il arrive la fonction est notée {\tt F}):
$${\tt F=: \frac{2 \cdot X+3}{X+2}}$$
puis, {\tt ok} du bandeau
$${\tt F':=\frac{2 \cdot (X+2)-(2 \cdot X+3)}{SQ(X+2)}}$$
puis, en se servant de la flèche $\bigtriangledown$ pour faire défiler l'écran 
$${\tt \rightarrow \frac{1}{(X+2)^2}}$$
puis, {\tt ok} du bandeau pour obtenir le tableau de variations.\\
Si on n'est pas en mode pas à pas, on peut aussi demander le calcul de la 
dérivée en tapant :
$${\tt DERVX(G(X))}$$ 
ce qui donne le calcul ci-dessus.\\
On calcule $g(0)$ et $g(2)$, pour cela on tape :
$${\tt G(0)}$$ 
réponse $\frac{3}{2}$
$${\tt G(2)}$$ 
réponse $\frac{7}{4}$\\
d'o\`u, l'encadrement 
$$\frac{3}{2} \leq g(x) \leq \frac{7}{4} \ \mbox{ pour } x\in [0,2]$$.
\item b) L\`a, la calculatrice ne peut rien ...il suffit de dire que 
$$e^\frac{x}{n} \geq 0 \ \mbox{   pour } x\in [0,2] $$ 
pour montrer que, pour $x\in [0,2]$, on a :
$$\frac{3}{2}e^\frac{x}{n}\leq g(x)e^\frac{x}{n} \leq \frac{7}{4}e^\frac{x}{n}$$
\item c) On intègre l'inégalité ci-dessus, on tape :
$${\tt \int _0^2\  e^\frac{X}{N}\ dX} $$
On obtient :
$${\tt N \cdot e^\frac{2}{N} -N } $$
On en déduit donc :
$$\frac{3}{2}(n e^\frac{2}{n}-n) \leq u_n \leq \frac{7}{4}(ne^\frac{2}{n}-n)$$
Pour justifier le calcul précédent, il faut dire qu'une primitive de
$ e^\frac{x}{n}$ est $n \cdot e^\frac{x}{n}$.\\
Si on ne le sait pas, on peut toujours taper :
$${\tt INTVX(EXP(X \div N))}$$
la réponse est : ${\tt N \cdot e^\frac{X}{N}}$
 
\item d)
On cherche la limite de $(n e^\frac{2}{n}-n)$ quand $n \rightarrow +\infty$ :
$${\tt LIMIT(N \cdot EXP(2 \div N) -N\ ,\ N=+\infty)}$$
On obtient :
$${\tt 2}$$
Pour justifier ce résultat, il faut dire que :
$$\lim_{x \rightarrow 0}\frac{e^x-1}{x}=1$$
et donc que :
$$\lim_{n \rightarrow +\infty}\frac{e^\frac{2}{n}-1}{\frac{2}{n}}=1$$
ou encore :$$\lim_{n \rightarrow +\infty}(e^\frac{2}{n}-1)\cdot n=2$$
Si $L$ existe, en faisant tendre $n$ vers $+\infty$ dans les
 inégalités de 1b), on obtient :
$$\frac{3}{2} \cdot 2 \leq L \leq \frac{7}{4} \cdot 2$$
\end{itemize}
\item
\begin{itemize}
\item a) $g(x)=2-\frac{1}{x+2}$ et calcul de $I= \int _0 ^2 g(x)dx$\\
On tape :
$${\tt PROPFRAC(G(X))}$$
On obtient
$${\tt 2-\frac{1}{X+2}}$$
Pour le calcul de l'intégrale $I$, on tape dans l'éditeur d'équations (touche {\tt EQW}) :
$${\tt \int _0 ^2 G(X)dX}$$
On obtient :
$${\tt -(LN(2)-4)}$$
\`A la main, on a $2x+3=2(x+2)-1$ donc $$g(x)=2-\frac{1}{x+2}$$
On intègre ensuite terme à terme entre $0 $ et $2$, on obtient :
$$\int_0^2 g(x)dx=[2x-\ln(x+2)]_{x=0}^{x=2}$$
c'est à dire, puisque $\ln4=2\ln2$:
$$\int_0^2 g(x)dx=4- \ln2$$ 
\item b) L\`a, la calculatrice ne peut rien...il suffit de dire que
 $e^\frac{x}{n}$ est croissante pour $x \in [0,2]$, pour obtenir l'inégalité :
$$1 \ \leq \ e^\frac{x}{n} \ \leq e^\frac{2}{n} $$
puis par multiplication,  $g(x)$ étant positif sur $[0,2]$, on a  :
$$g(x)\ \leq \ g(x)e^\frac{x}{n}\ \leq g(x)e^\frac{2}{n}  $$ 
puis en intégrant on a  :
$$I \ \leq u_n \ \leq \ e^\frac{2}{n}I $$

\item c) Convergence de $u_n$\\
On cherche la limite de $e^\frac{2}{n}$ quand  $n \rightarrow +\infty$ :
$${\tt LIMIT(EXP(2 \div N)\ , \ N=+\infty)}$$
On obtient :
$${\tt 1}$$
En effet, $\frac{2}{n}$ tend vers 0 lorsque $n$ tend vers $+\infty$  donc,
$e^\frac{2}{n}$  tend vers $e^0=1$ lorsque $n$ tend vers $+\infty$.\\
Lorsque $n$ tend vers $+\infty$, $u_n$ reste compris entre $I$ et une 
quantité qui tend vers $I$ (cf in\'egalit\'es 2b)).\\
 Donc $u_n$ converge et sa limite vaut $I$.\\ 
On a donc montr\'e que :$$L=I=4- \ln2$$
\end{itemize}

\end{enumerate}
\section{Problème}
\textbf{Partie A}\\
On considère la fonction $f$ définie sur $]0,\ +\infty[$ par :
$$f(x)=\left( 1-\frac{1}{x}\right)(\ln x-2)$$
On tape donc (en se servant de l'EQuationWriter) :
$${\tt DEFINE(F(X)=(1-1 \div X)\times (LN(X)-2))}$$
Voici le d\'etail de ce qu'il faut taper( $\triangleleft$ repr\'esente le curseur) :
$${\tt DEFINE( F(X)=\triangleleft ) }$$
Pour rentrer l'expression, en se servant de  l'\'editeur d'\'equations, on
 appuie sur la touche {\tt EQW}.\\
 On est ainsi dans l'\'editeur d'\'equations, on tape :
$${\tt 1 \ - \ 1 \ \div \ X \rhd \ \rhd \ \rhd \ \times\ LN(X) \ \rhd \ - \ 2 \ ENTER} $$
Ce qui donne dans la ligne de commande :
$${\tt DEFINE(F(X)=(1-\frac{1}{ X})\cdot (LN(X)-2))}$$
puis, {\tt ENTER} pour valider.\\
${\tt F}$ s'inscrit dans le bandeau des variables et {\tt NOVAL} s'affiche 
\`a l'\'ecran.\\
On v\'erifie en tapant ${\tt F(X)}$, on obtient :
$${\tt \frac{(X-1)\cdot LN(X)-(2\cdot X-2)}{X}}$$
\begin{enumerate}
\item Limite de $f$ en $+\infty$ et $0$.\\
On tape :
$${\tt LIMIT (F(X),+\infty)}$$
réponse\  $+\infty$\\
puis,
$${\tt LIMIT (F(X),0)}$$
réponse $\infty$
\item Calcul de $f'(x)$.\\
On tape :
$${\tt DERVX(F(X))}$$
On obtient :
$${\tt \frac{LN(X)+X-3}{X^2}}$$
\item $u(x)=\ln x+x-3$\\
On tape donc :
$${\tt DEFINE(U(X)= LN(X)+X-3)}$$
\begin{itemize}
\item a) Variations de $u$.\\
On tape :
$${\tt TABVAR(U(X)}$$
La calculatrice demande à passer en mode complexe : répondre {\tt YES}\\
On obtient :
$$\begin{array}{cccccccc} -\infty & + & -1 & - & 0 & + & +\infty &X\\
 -\infty  & \uparrow & i\pi-4 & \downarrow& -\infty& \uparrow &  +\infty&F
\end{array}$$
ATTENTION!!!!\\
Seule la partie du  tableau concernant les $x>0$ est à prendre en compte (pour
$x<0$ la calculatrice considère une fonction $\ln$ à valeurs complexes).

\item b) $u(x)=0$ possède une solution unique $\alpha$ dans $[2,\ 3]$ .\\
D'apr\`es a) $u$ est croissante sur $]0,\ +\infty[$.\\
 On tape :
$${\tt U(2)\ shift-rouge\ ENTER}$$
réponse $-0.306...$\\
puis,
 $${\tt U(3)\ shift-rouge \ ENTER}$$
réponse $1.098...$\\
On calcule ensuite :
$${\tt U(2.20)\ shift-rouge\ ENTER}$$
réponse $-0.306...$\\
et
$${\tt U(2.21)\  shift-rouge \ ENTER}$$
réponse $-0.306...$\\
D'apr\`es le th\'eor\`eme des valeurs interm\'ediaires (u est croissante et 
continue sur [2, 3], u s'annule une seule fois entre 2 et 3 ($u(2)<0$ et $u(3)>0$)).\\
Donc, si on appelle $\alpha$ l'unique solution de $u$ dans $[2,\ 3]$, on a :
$$2.20< \alpha <2.21$$
puisque $u(2.20)<0$ et $u(2.21)>0$.
\item c) Signe de $u(x)$ sur $]0, \ +\infty[$\\
Le signe de $u(x)$ se déduit du tableau de variation de $u$ on a :
$$\left \{ \begin{array} {rl} u(x)<0 &\mbox{ pour } x<\alpha\\
u(x)=0 & \mbox{ pour } x=\alpha\\
u(x)>0 & \mbox{ pour } x>\alpha
	  \end{array}\right.$$	
\end{itemize}
\item
\begin{itemize}
\item a)Variations de $f$.\\
On fait le tableau de variations à la main car la dérivée de $f$ n'est pas 
rationnelle...et la calculatrice ne sait pas encore faire!\\
Le signe de $f'(x)$ étant celui de $u(x)$ on a :
$$\begin{array}{|c|ccccc|} \hline f'(x) & 0 & - & \alpha & + & +\infty\\
 \hline
f(x) & +\infty & \downarrow & \frac{\alpha-1}{\alpha}(ln( \alpha)-2) & \uparrow &  +\infty\\ \hline
\end{array}$$
\item b)$f(\alpha)=-\frac{[\alpha-1)^2}{\alpha}$\\
On a :\\$u(\alpha)=0$ donc $\ln(\alpha)=3-\alpha$\\
On tape  dans l'EQuationWriter :
$${\tt (1-\frac{1}{ A})(LN(A)-2)}$$

puis\\ 
on met en inverse vidéo ${\tt LN(A)}$,\\
on ouvre le menu {\tt ALG (shift-rouge 4)},\\ 
on sélectionne le $ {\tt N°6 \  (SUBST)}$,\\
on complète la commande ${\tt\ SUBST(LN(A),LN(A)=3-A)}$\\
puis, {\tt ENTER ENTER}\\
On obtient :
$${\tt -\frac{A^2-2 \cdot A+1}{A}}$$
puis,
$${\tt FACTOR (-\frac{A^2-2 \cdot A+1}{A})}$$
donne
$${\tt -\frac{(A-1)^2}{A}}$$
On tape :
$${\tt DERIV( -\frac{(A-1)^2}{A},A)}$$
on obtient :
$${\tt -\frac{(A^2-1)}{A^2}} $$
La fonction $v(x)= -\frac{(x-1)^2}{x}$ est donc décroissante pour $x>1$.\\
 L'encadrement de $f(\alpha)$ s'obtient donc en calculant :\\
$v(2.21)$ et $v(2.20)$.\\
On tape :
$${\tt -\frac{(1.21)^2}{2.21}\ shift-rouge\ ENTER} $$
réponse $-0.662488 $\\
$${\tt -\frac{(1.2)^2}{2.2}\ shift-rouge\ ENTER}$$
réponse $-0.65454... $\\
on a donc :$$-0.663<f(\alpha)<-0.654$$
qui est un encadrement à $9\cdot 10^{-3} \mbox{ près } (0.663-0.654=9\cdot 10^{-3}$\\
ou encore :$$-0.67<f(\alpha)<-0.65$$
qui est un encadrement à $2\cdot 10^{-2} \mbox{ près } (0.67-0.65=2\cdot 10^{-2}$

\end{itemize}
\item
\begin{itemize}
\item a) Signe de $f$\\
On remarque que $f(1)=0$ et que $f(e^2)=0$\\
On tape :
$${\tt F(1)}$$
r\'eponse : 0
$${\tt F(EXP(2))}$$
r\'eponse : 0\\
Voici les variations de $f$ et le signe de $f(x)$ :
$$\begin{array}{|c|ccccccccc|} \hline f'(x) & 0 & -& 1 &- & \alpha & +&e^2&+ & +\infty\\ \hline
f(x) & +\infty & \downarrow&0&\downarrow & \frac{\alpha-1}{\alpha}(ln( \alpha)-2) & \uparrow & 0& \uparrow & +\infty\\
\hline 
f(x)& +\infty &+&0&-&\simeq-0.66&-&0&+& +\infty\\ \hline
\end{array}$$
\item b) Graphe $\textit{C}$ de $f$\\
on ouvre la fen\^etre {\tt PLOT SETUP (shift$\_$bleu \ F4) }
on choisit {\tt function } et pour {\tt EQ F(X)} puis, on règle les paramètres 
de la fen\^etre dans {\tt WIN (shift$\_$bleu \ F2) }
\end{itemize}
\end{enumerate}

\textbf{Partie B}\\
Soit $H$ la primitive de $f$ sur $]0, \ +\infty[$ et $\Gamma $ son graphe.\\
ATTENTION aux notations qui ne sont pas les m\^emes que le texte!!!\\

\begin{enumerate}
\item
\begin{itemize}
\item a)Variations de $H$\\
Puisque $H'(x)=f(x)$ on a le tableau de variations :
$$\begin{array}{c|ccccccc}
f(x) & 0 & + & 1 & - & e^2 & + &+\infty\\ \hline
H(x) & ? & \uparrow\ & 0 & \downarrow & ? & \uparrow & ?
\end{array}$$
\item b)Les tangentes en $x=1$ et $x=e^2$\\
On a $f(1)=0$ et  $f(e^2)=0$. Les tangentes à $\Gamma$ aux points d'abscisses
1 et $e^2 $ sont donc de pente nulle, les tangentes sont horizontales.
\end{itemize}
\item Calcul de $H(x)$  \\
\begin{itemize}
\item a) Calcul de $\int _1^x \ln tdt$\\
On tape  dans l'éditeur d'équations :
$${\tt \int _1^X LN (T)dT}$$
On obtient :
$${\tt X \cdot LN(X)-(X-1)}$$
On peut aussi demander la primitive de $\ln x$, on tape :
$${\tt INTVX(LN(X))}$$ 
On obtient :
$${\tt X \cdot LN(X)-X}$$
\`A la main on pose $u=\ln(t)$ et $ dv=dt$ donc $du=\frac{dt}{t} $ et $ v=t$ on a :
$$\int_1^x \ln t \ dt= [t \cdot \ln t ]_{t=1}^{t=x}-\int_1^x t \cdot\frac{dt}{t} =x \cdot \ln x - \int_1^x dt=x \cdot \ln x - (x-1)$$

%$${\tt IBP(\int _1^X LN (t)dt,t)} $$
%on obtient :
%$${\tt X \cdot LN(X)-\int_1 ^X 1dt}$$
\item b) Il suffit de d\'evelopper l'expression de $f(x)$ pour obtenir :
$$f(x)=\ln x -\frac{\ln x}{x}+ \frac{2}{x}-2$$

\item c) Expression de $H(x)$\\
On tape (en se servant de l'EQuationWriter)  :
$${\tt DEFINE(H(X)=\int_1^X F(T)dT)}$$
puis, 
$${\tt H(X) \ ENTER}$$

On obtient :
$${\tt -\frac{LN(X)^2-(2 \cdot X+4) \cdot LN(X) +6 \cdot X-6}{2}}$$
On fait le calcul \`a la main en int\'egrant terme \`a terme l'expression de $f(x)$ trouv\'ee en 2b), on a :
$$\int_1^x \ln t\ dt=x \ln x-x+1$$
$$-\int_1^x \frac{\ln t}{t}\ dt=- \frac{(\ln x)^2}{2}$$
$$\int_1^x \frac{2}{t}\ dt=2 \ln x$$
d'o\`u :
$$H(x)=x \ln x-x+1 - \frac{(\ln x)^2}{2}+2 \ln x-2x+2 $$
$$H(x)= - \frac{(\ln x)^2}{2}+(x+2) \ln x-3x+3 $$
\end{itemize}
\item
\begin{itemize}
\item a)
On tape
$${\tt LIMIT(LN(X)/X,X=0)}$$
r\'eponse 0\\
D'apr\`es le cours, on sait que ``$x$ l'emporte sur $\ln x$ `` d'o\`u le r\'esultat!\\
On tape :
$${\tt LIMIT(H(X),X=0)}$$
r\'eponse $-\infty$\\
On a :$$H(x)=x \ln x+\ln x \frac{(4-\ln x)}{2}-3x+3 $$
Quand $x$ tend vers 0, le premier terme de $H(x)$ tend vers 0, son deuxième
 terme tend vers $-\infty$ (car $\ln x $ tend vers  $-\infty$ quand $x$ tend 
vers 0) et ses derniers termes tendent vers 3.\\
Donc $$\lim_{x \rightarrow 0}H(x)=-\infty$$ 

\item b)
On tape :
$${\tt LIMIT(H(X),X= +\infty)}$$
r\'eponse $+\infty $\\
On met $x \ln x$ en facteur dans le d\'ebut de $H(x)$ on obtient :
$$H(x)=x \ln x(1-\frac{\ln x}{2x}+\frac{2}{x}-\frac{3}{\ln x})+3$$
$$\lim_{x \rightarrow +\infty }x \ln x=+\infty$$ 
et la parenth\`ese tend vers 1 quand x tend vers $+\infty $, donc
 $$\lim_{x \rightarrow+\infty }H(x)=+\infty$$
\item c)Variations de $H(x)$\\
On calcule $H(e^2)$\\
On tape :
$${\tt H(EXP(2))}$$
On trouve l'expression obtenue en remplaçant dans ${\tt H(X)}$, {\tt X} par
 ${\tt EXP(2) }$.\\
 On  recopie cette expression pour la simplifier
 (${\tt \triangle\ ENTER\ ENTER} $) et
on obtient :
$${\tt -(EXP(2)-5)}$$
puis,
$${\tt\triangle\ ENTER \ shift-rouge\ ENTER} $$
r\'eponse\ \ -2.38905...\\
On a ainsi une valeur approch\'ee de $H(e^2)$.\\
On reprend le tableau fait en 1a)
$$\begin{array}{c|ccccccc}
f(x) & 0 & + & 1 & - & e^2 & + &+\infty\\ \hline
H(x) &-\infty  & \uparrow & 0 & \downarrow & \simeq-2.39 & \uparrow & +\infty\
\end{array}$$
\item d) Graphe $\textit{C}$ de $f$ et graphe $\Gamma$ de $H$\\
on ouvre la fen\^etre {\tt PLOT SETUP (shift$\_$bleu \ F4) }
on choisit {\tt function } et pour {\tt EQ \{F(X),H(X)\}} puis, on régle les paramètres 
de la fen\^etre dans {\tt WIN (shift$\_$bleu \ F2) }
\end{itemize}


\item Calcul d'une aire\\
On a calcul\'e :
$$\int_1 ^{e^2} f(x)dx$$
On a obtenu :
$${\tt -(EXP(2)-5)} $$
la courbe \'etant sous l'axe des x entre 1 et $e^2$, cette int\'egrale est n\'egative.
Les unités étant de  2cm, l'aire en cm$^2$ est donc \'egale \`a $-4H(e^2)$
cm$^2$, soit :
$$4\cdot{\tt (EXP(2)-5)}\ \mbox{ cm}^2$$
soit$$A=( 4e^2-20)\ \mbox{ cm}^2$$
ou encore
$$9.55\ \mbox{ cm}^2\ <\ A\ <\ 9.56\ \mbox{ cm}^2 $$
\end{enumerate}
\section{Conclusion}
On voit qu'un bon maniement de la calculatrice  HP49G permet de faire une bonne
 partie des questions...\\
Il faut cependant noter, qu'en arithmétique il faut faire plus de
 raisonnements : la calculatrice permet alors de faire des vérifications....  
\chapter{Programmation}
\section{Implémentation en mode Algébrique}
\subsection{Comment éditer un programme}
Un programme s'écrit dans la ligne de commande entre les délimiteurs ${\tt \ll \; \gg}$ 
\subsection{Comment sauver un programme}
Il suffit de faire suivre le dernier $\gg$ par :
 $${\tt STO\triangleright \ NOMDUPROGRAMME}$$
\subsection{Comment corriger un programme} 
Si la syntaxe est mauvaise, la machine vous met automatiquement le curseur l\`a
o\`u le compilateur a détecté l'erreur. Il suffit donc de corriger!!!\\
Si l'erreur est détectée au cours de l'exécution du programme il faut taper :\\
{\tt VISIT('NOMDUPROGRAMME')}\index{VISIT} qui édite votre programme.\\
 On corrige, puis 
{\tt ENTER}  sauve votre programme corrigé. 
\subsection{Comment exécuter un programme}
Si le programme n'a pas de paramètres, il suffit de taper son nom dans la ligne de commande.\\
S'il y a des paramètres, on fait suivre le nom du programme de parenthèses
dans lesquelles on met  les valeurs des paramètres séparées par une virgule.\\
Exemple  :
{\tt PGCD(45,75)}
 \subsection{Comment améliorer puis  sauver sous un autre nom un programme}
On tape :\\
   {\tt RCL('NOMDUPROGRAMME')} puis {\tt edit} du bandeau.\\
On fait les améliorations et on fait suivre le dernier $\gg$ par :
 $${\tt STO\triangleright \ NOUVEAUNOM}$$
\section{Les commentaires}
Il faut prendre l'habitude de commenter ses programmes.\\ 
En algorithmique un commentaire commence par
{\tt // } et se termine par un passage à la ligne.\\
Pour la {\tt HP49G}, un commentaire commence par {\tt @} et se termine par un 
passage à la ligne ou, est entouré de deux {\tt @}.\\
Le caractère {\tt @} est obtenu en tapant {\tt shift-rouge ENTER} \\
Attention!!! le compilateur efface les commentaires... donc pour garder vos 
commentaires, il faut écrire votre programme sous la forme d'un texte qu'il 
faut ensuite compiler avec ${\tt STR\rightarrow}$ ce qui complique un peu...
\section{Les variables}
\subsection{Leurs noms}
Ce sont les endroits o\`u l'on peut stocker des valeurs, des nombres, des expressions, des objets.\\
Avec la {\tt HP49G}, on peut utiliser des noms ayant jusqu'à 8 caractères.
\subsection{Notion de variables locales}
La {\tt HP49G} peut utiliser des variables locales.\\ Les  variables
 locales sont déclarées et initialisées (initialisation obligatoire!) gr\^ace à \  ${\tt \ \rightarrow\ \ (shift-rouge \ 0)}$\\

En mode {\tt RPN}, on peut définir et initialiser plusieurs variables locales
à la fois, exemple :
$${\tt \ll 1\ 2\ \rightarrow\  A\ B \ll corps du sous programme \gg \gg }$$
En mode {\tt Algébrique},  chaque déclaration doit \^etre suivie par un sous programme (délimiteurs 
${\tt \ll \gg}$) \\
La flèche doit \^etre entourée d'espaces (ces espaces sont mis automatiquement quand on n'est pas en mode $\alpha$).\\
Exemple :
$${\tt \ll   3.14\  \rightarrow\  PI 
\ll 2*PI*R \gg \gg STO\triangleright \  PER}$$
Dans cet exemple, on a écrit le programme {\tt PER}.\\ {\tt PI} est une variable locale qui est déclarée et
 affectée par ${\tt 3.14 \ \rightarrow \ PI} $. Cette variable est locale pour le programme qui suit sa déclaration (ici ${\tt \ll 2*PI*R \gg}$). \\
Par contre, {\tt R} est une variable globale (qui doit exister avant
l'exécution du programme  {\tt PER}). Si, au cours d'un programme, on veut 
stocker une valeur dans une variable (locale ou globale) il faut bien s\^ur utiliser ${\tt STO\triangleright}$.

\subsection{Notion de paramètres}
Quand on écrit une fonction il est possible d'utiliser des paramètres.\\
Par exemple si on veut que {\tt R} soit le paramètre de la fonction {\tt PER}  on écrit:
$${\tt \ll\ \rightarrow\ R \ll  3.14\ \rightarrow\ PI \ll 2*PI*R \gg \gg \gg STO\triangleright \  PER}$$
Ce paramètre {\tt R} se comporte alors comme une variable locale, la seule différence 
est qu'il est initialisé lors de l'appel de la fonction.\\ 
L'exécution  se fait en demandant par exemple :
{\tt PER(5)}.\\
La  syntaxe en {\tt RPN} et  en {\tt Algébrique} est :
$${\tt  \ll\ \ \rightarrow\ A \ B  \ll\ ...}$$
pour écrire une fonction a deux paramètres.
\section{Les Entrées}
\subsection{Traduction en Algorithmique}
Pour que l'utilisateur puisse entrer une valeur dans la variable {\tt A}
 au cours de l'exécution d'un programme, on écrira, en algorithmique : {\tt saisir A} \\  
Pour entrer des valeurs dans {\tt A} et {\tt B}  on écrira : {\tt saisir A,B}
\subsection{Traduction HP49G mode RPN}
{\tt 'A' PROMPTSTO}\index{PROMPTSTO} \\
ou\\
{\tt "A" "" INPUT STR-> EVAL 'A' STO}
\subsection{Traduction HP49G mode Algébrique} 
Pour entrer une variable locale {\tt A},  on tape :\\
${\tt ....0\ \rightarrow \ A \ll\  PROMPTSTO('A')... \gg}$ ou\\
$ {\tt....0\ \rightarrow \ A \ll \  PROMPTSTO('A');0\ \rightarrow \ B \ll PROMPTSTO('B').....\gg \ \gg}$\\
Si on tape seulement:\\
{\tt ...PROMPTSTO('A')} alors {\tt A} est une variable globale ou\\
 {\tt ...PROMPTSTO('A'); PROMPTSTO('B')}, alors {\tt A} et {\tt B} sont des variables globales.\\
On peut aussi utiliser {\tt INPUT}\index{INPUT} pour créer une variable locale {\tt A} on utilise, si {\tt A} doit contenir une chaine de caractères : 
$${\tt INPUT(''A='',''\ '')\ \rightarrow\ A}$$
ou  si {\tt A} doit contenir un nombre :\\
${\tt .....INPUT(''A='',''\ '')\rightarrow A}$\\
         ${\tt \ll OBJ\rightarrow(A)\ \rightarrow\ A}$\\
           ${\tt \ll .....\gg }$\\
         ${\tt \gg  }$
\section{Les Sorties}
\subsection{Traduction en Algorithmique}
En algorithmique on écrit:\\
{\tt Afficher "A=",A}
\subsection{Traduction HP49G mode RPN}
En général on affiche simplement les résultats sur la pile pour une
 réutilisation éventuelle, on écrira simplement :\\
{\tt A B}\\
On peut aussi afficher le résultat tagué, on écrira alors:\\
{\tt A "A=" ->TAG}\\
{\tt HALT} arr\^ete le programme.
\subsection{Traduction HP49G mode Algébrique} 
Seul le dernier résultat s'inscrit dans l'historique.\\
Pour des résultats intermédiaires on tape :
$$ {\tt DISP("A="+A,3)}$$\index{DISP}
 3 représente le numéro de la ligne\\
ou\\
$${\tt MSGBOX( "A="+\rightarrow STR(A))}$$\index{MSGBOX}
{\tt CLEAR}  efface l'écran.\index{CLEAR}\\
{\tt FREEZE(7)} arrête le programme et permet de visualiser les 7 lignes de l'affichage.\index{FREEZE}
\section{La séquence d'instructions ou action}
Une action est une séquence d'une ou plusieurs instructions.
\subsection{Traduction en Algorithmique}
En langage algorithmique, on utilisera l'espace ou le passage à la ligne pour 
terminer une instruction.
\subsection{Traduction HP49G mode RPN}
Comme en algorithmique, il n'y a pas de séparateur: on utilise soit l'espace soit le retour à la ligne.
\subsection{Traduction HP49G mode Algébrique} 
Pour la {\tt HP49G} en mode algébrique, le {\tt\ ;\ } est un séparateur d' instructions.\\ 
Le  {\tt\ ;\ }  s'obtient
en tapant simultanément {\tt shift-rouge SPC}.
\section{L'instruction d'affectation}
L'affectation est utilisée pour stocker une valeur ou une expression dans une variable.
\subsection{Traduction en Algorithmique} 
En algorithmique on écrira par exemple:\\
{\tt 2*A->B}
pour stocker {\tt 2*A} dans {\tt B}
\subsection{Traduction HP49G mode RPN}
Avec la HP49G mode RPN, il faut utiliser la notation postfixée et la commande {\tt STO}:\\
{\tt 2 A * 'B' STO}
\subsection{Traduction HP49G mode Algébrique} 
Pour la {\tt HP49G} en mode algébrique, on utilise  la touche ${\tt STO}$ qui se traduit à l'écran 
 de la calculatrice par : 
$ \triangleright $  (on le notera ici, ${\tt STO\triangleright}$).
\section{Les instructions conditionnelles}
\subsection{Traduction en Algorithmique} 
{\tt Si \emph{condition} alors
\emph{action}
fsi}\\
{\tt Si \emph{condition} alors
\emph{action1} sinon
\emph{action2}
fsi}\\ 
Exemple :\\
{\tt Si A = 10 ou A < B alors B-A->B sinon A-B->A fsi}
\subsection{Traduction HP49G mode RPN}
{\tt IF \emph{condition} THEN 
\emph{action}  
END}

{\tt IF \emph{condition} THEN 
\emph{action1}  ELSE
\emph{action2}
END}

Attention : on utilise la notation postfixée et == pour traduire la 
condition d'égalité.

On écrit pour traduire l'exemple:

{\tt IF A 10 ==  A B < OR THEN
 B A - 'B' STO 
ELSE A B - 'A' STO END}

on peut aussi  écrire

{\tt IF 'A==10' 'A < B' OR THEN ...}
\subsection{Traduction HP49G mode Algébrique} 
{\tt IF \emph{condition} THEN 
\emph{action}  
END}\\
{\tt IF \emph{condition} THEN 
\emph{action1}  ELSE
\emph{action2}
END}\\
Exemple :
Attention au == pour traduire la condition d'égalité!\\
{\tt IF A == 10 OR A < B THEN B-A STO$\triangleright$ B  ELSE A-B STO$\triangleright$ A  END}
\section{Les instructions Pour }
\subsection{Traduction en Algorithmique} 
{\tt Pour I de A à B faire \emph{action} fpour}\\
{\tt Pour I de A à B (pas P) faire \emph{action} fpour}
\subsection{Traduction HP49G mode RPN}
{\tt A B FOR I  \emph{action} NEXT} 

{\tt A B FOR I P STEP \emph{action} NEXT}
\subsection{Traduction HP49G mode Algébrique} 
{\tt FOR (I , A , B) \emph{action} NEXT}

{\tt FOR (I , A , B ) \emph{action} STEP P}\\ 
Il n'y a pas besoin de déclarer la variable {\tt I}.\\
{\tt I} est déclaré et initialisé automatiquement par : {\tt FOR (I,.,.)...}
\section{L'instruction Tant que}
\subsection{Traduction en Algorithmique} 
{\tt Tant que \emph{condition} faire
\emph{action}
ftantque}
\subsection{Traduction HP49G mode RPN}
{\tt WHILE \emph{condition} REPEAT 
\emph{action} 
END}
\subsection{Traduction HP49G mode Algébrique} 
{\tt WHILE \emph{condition} REPEAT 
\emph{action} 
END}
\section{Les conditions ou expressions booléennes }
Une condition est une fonction qui a comme valeur un booléen, à savoir elle
est soit {\tt vraie} soit {\tt fausse}.
\subsection{Traduction en Algorithmique} 
Pour exprimer une condition simple on utilise les opérateurs:

{\tt = > > $\leq$  $\geq$  $\neq$}
\subsection{Traduction HP49G mode RPN}
Attention, on utilise la notation postfixée et == pour traduire la 
condition d'égalité.
\subsection{Traduction HP49G mode Algébrique } 
Attention, pour la calculatrice {\tt HP49G}, l'égalité se traduit par:

{\tt ==}
\section{Les opérateurs logiques}
\subsection{Traduction en Algorithmique}
Pour traduire des conditions complexes, on utilise les opérateurs logiques :

{\tt ou et non} 
\subsection{Traduction HP49G mode RPN}
Attention, on utilise la notation postfixée.\\
{\tt ou et non} se traduisent par {\tt OR AND NOT } 
\subsection{Traduction HP49G mode Algébrique} 
{\tt ou et non} se traduisent sur la {\tt HP49G} par {\tt OR AND NOT } 
\section{Les fonctions}
Dans une fonction on ne fait pas de saisie de données :\\
on utilise des paramètres qui seront initialisés lors de l'appel.\\
Dans une fonction, on veut pouvoir réutiliser le résultat :\\
on n'utilise pas la commande {\tt affichage} mais la commande {\tt résultat}.
\subsection{Traduction en Algorithmique}
On écrit par exemple, en algorithmique :
\begin{verbatim}
fonction addition(A,B)
résultat A+B
ffonction\end{verbatim}

Cela signifie que :

-Si on fait exécuter la fonction, le résultat sera affiché.

-On peut utiliser la fonction dans une expression.
\subsection{Traduction HP49G mode RPN}
Pour la HP49G mode RPN, on suppose que les arguments de la fonction sont mis sur la pile
avant l'appel de la fonction.

Dans l'écriture de la fonction les arguments sont  des variables locales
qui seront initialisées par les éléments mis sur la pile. Le résultat de la 
fonction est alors mis sur la pile.\\
 L'exemple se traduit par :\\
${\tt \ll \rightarrow\ A\ B}$\\
${\tt \ \ \ll\ A\ B\ +\ \gg}$\\
${\tt  \gg}$\\
{\tt 'ADDITION' STO}\\
puis on met les valeurs de A et B au niveau 2 et 1 de  la pile, après 
l'exécution d'{\tt ADDITION} leur somme se trouvera au niveau 1 de la pile.
\subsection{Traduction HP49G mode Algébrique} 
 L'exemple se traduit par :

${\tt \ll \rightarrow\  A\ B} $\\
${\tt \ \ \ll A +B \gg}$\\ 
${\tt  \gg}$\\
${\tt  STO\triangleright\ ADDITION}$\\
Puis, on tape : $${\tt ADDITION(4,5)}$$
\section{Les listes}
\subsection{Traduction en Algorithmique}
En algorithmique, on utilise les \{ \} pour délimiter une liste.\\
 Par exemple \{\} désigne la liste vide et \{1, 2, 3\} est une liste de 3 éléments.\\
Le + sera utilis\'e pour concaténer 2 listes ou une liste et un élément ou un 
élément et une liste :\\
{\tt \{1, 2, 3\}->TAB}\\
{\tt TAB + 4 ->TAB}  (maintenant {\tt TAB} désigne \{1, 2, 3, 4\}) \\
{\tt TAB[2]} désigne le deuxième élément de {\tt TAB} ici 2.
\subsection{Traduction HP49G mode RPN}
Ici les listes peuvent avoir des longueurs non définies à l'avance.\\
On utilise les \{\} pour délimiter une liste.\\
Par exemple \{1 2 3\} est une liste de 3 éléments et \{\} désigne la liste vide.\\
On obtient le {\tt P}ième élément de {\tt L } sur la pile  avec :\\
{\tt L P GET} ou {\tt 'L' P GET}\\
Si on veut modifier le {\tt P}ième élément de {\tt L} (par exemple le mettre à 0)  on écrira:\\
{\tt 'L' P 0 PUT} ou {\tt L P 0 PUT 'L' STO}\\
En effet {\tt L P 0 PUT} renvoie sur la pile la liste modifiée alors que :\\
{\tt 'L' P 0 PUT}
modifie la liste {\tt L} .\\
Pour concaténer deux listes ou une liste et un élément on utilisera le +
\subsection{Traduction HP49G mode Algébrique} 
Pour la {\tt HP49G} en mode algébrique, les listes peuvent avoir des longueurs non définies à l'avance.\\
On utilise les \{\} pour délimiter une liste.\\
Par exemple \{1,2,3\} est une liste de 3 éléments et \{\} désigne la liste vide.\\
On obtient le {\tt P}ième élément de {\tt L } sur la pile  avec :\\
 {\tt L[P]} ou
{\tt GET (L, P )}\index{GET}\\
Si on veut modifier le {\tt P}ième élément de {\tt L} (par exemple le mettre à 0)  on écrira :\\
{\tt PUT(L, P, 0) STO$\triangleright$ L }\index{PUT}\\
ou\\
{\tt  PUT('L', P, 0)}\\
En effet {\tt PUT(L, P, 0) } renvoie  la liste modifiée (sans modifier {\tt L})
 alors que :\\
{\tt PUT ('L', P, 0) } modifie la liste {\tt L}.\\
Pour concaténer deux listes ou une liste et un élément on utilisera le {\tt +}.\\
La commande {\tt SEQ}\index{SEQ} permet de constituer une liste, on tape :
$${\tt SEQ('X*X','X',4,10,1)}$$
on obtient :
$${\tt \{16,25,36,49,64,81,100\}}$$
\section{Un exemple : le crible d'Eratosthéne}
\subsection{Déscription}
Pour trouver les nombres premiers inférieurs ou égaux à $N$ :
\begin{enumerate}
\item On écrit les nombres de 1 à $N$ dans une liste.

\item On barre 1 et on met 2 dans la case $P$.

Si $P . P \leq N$ il faut traiter les éléments de $P$ à $N$. 

\item On barre tous les multiples de $P$ à partir de $P . P$.

\item On augmente $P$ de 1

Si $P. P$ est inférieur ou égal à $N$, il reste à traiter les éléments non barrés de $P$ à $N$. 

\item On appelle $P$ le plus petit élément non barré de la liste.

\item On refait les points 3 4 5 tant que $P . P$ reste inférieur ou égal à
 $N$.
\end{enumerate}

\subsection{Ecriture de l'algorithme}
\begin{verbatim}
Fonction crible(N)
local TAB PREM I P
// TAB et PREM sont des listes
{} ->TAB
{} ->PREM
pour I de 2 à N faire 
  TAB+I -> TAB
fpour
0 +TAB -> TAB
2 -> P
// On a fait les points 1 et 2
//barrer 1 a été réalisé en le remplaçant par 0
//TAB est la liste 0 2 3 4 ...N \end{verbatim}
{\tt tant que P*P $\leq$ N faire}\begin{verbatim}
  pour I de P à int(N/P) faire
    0 -> TAB[I*P]
  fpour
// On a barré tous les multiples de P à partir de P*P
  P+1 -> P
//On cherche le plus petit nombre <= N non barré entre P et N
\end{verbatim}
 {\tt {\  }  tant que (P*P $\leq$ N) et (TAB[P]=0) faire}
\begin{verbatim}
    P+1 -> P
  ftantque
ftantque
//on écrit le résultat dans une liste PREM
pour I de 2 à N faire\end{verbatim}
 {\tt {\  } si TAB[I]  $\neq$ 0 alors} 
\begin{verbatim}      
    PREM +I -> PREM
  fsi
fpour
résultat: PREM
\end{verbatim}
\subsection{Traduction HP49G mode RPN}
Voici le programme CRIBLE:

N est le paramètre qui doit \^etre mis sur la pile.

Les variables locales sont:

P et I qui sont des entiers ,

TA et PREM qui sont des listes.\\
%%HP: T(3)A(R)F(.);
${\tt \ll \ \{\}\ \{\}\ 2\ 1\  \rightarrow\ N \ TA\ PREM\ P\ I }$\\
\hspace*{0.5cm}${\tt \ll\ 0\ 'X'\ 'X'\ 2\ N\ 1\ SEQ\ +\ 'TA'\ STO}$\\ 
\hspace*{1cm}{\tt WHILE P P * N  $\leq$ REPEAT \\
\hspace*{1.5cm}    P N P / FLOOR FOR I \\
\hspace*{2cm}      TA I P * 0 PUT 'TA' STO\\
\hspace*{1.5cm}    NEXT\\ 
 \hspace*{1.5cm}   1 'P' STO+\\
\hspace*{1.5cm} WHILE P P *  N $\leq$  TA P GET 0 == AND REPEAT \\
 \hspace*{2cm}     1 'P' STO+\\
 \hspace*{1.5cm}   END\\
\hspace*{1cm}  END \\
 \hspace*{1cm} 2 N FOR I\\
 \hspace*{1.5cm} IF TA I GET 0 $\neq$ THEN\\
  \hspace*{2cm}     I 'PREM' STO+\\
 \hspace*{1.5cm}    END\\
 \hspace*{1cm}  NEXT \\
 \hspace*{1cm}  PREM} \\
 \hspace*{.5cm}${\tt \gg}$\\
 ${\tt \gg}$

\subsection{Traduction HP49G mode Algébrique} 
Voici le programme CRIBLE écrit pour la {\tt HP49G mode Algébrique} :

L'utilisateur doit taper par exemple :\\
{\tt CRIBLE(100)}.\\


\noindent
${\tt \ll \ \rightarrow\ N \  }$\\
\hspace*{0.5cm}${\tt \ll}${\tt\ 0+SEQ('I','I',1,N,1) $\rightarrow$ TA}\\
\hspace*{1cm}${\tt \ll \ 2\ \rightarrow\ P}$\\
\hspace*{1.5cm}${\tt \ll WHILE\ P*P \leq  N\ REPEAT}$\\
\hspace*{2cm}{\tt  FOR (I , P , FLOOR(N/P))}\\
\hspace*{2.5cm}{\tt    PUT('TA',I*P,0)}\\
\hspace*{2cm}{\tt  NEXT;}\\
\hspace*{2cm} ${\tt P+1\  STO\triangleright P;}$\\
\hspace*{2cm}{\tt  WHILE P*P $\leq $ N AND GET(TA,P) == 0 REPEAT}\\
\hspace*{2.5cm}   ${\tt  P+1\ STO \triangleright \ P}$\\
\hspace*{2cm}{\tt  END}\\
\hspace*{1.5cm}{\tt END;}\\
\hspace*{1.5cm}${\tt \{2\} \ \rightarrow\ PREM}$\\
\hspace*{2cm}${\tt \ll FOR\ (I,3 , N) }$\\
\hspace*{2.5cm}{\tt {\  }IF TA(I) $\neq$ 0 THEN}\\
\hspace*{3cm} $ {\tt PREM+I \  STO\triangleright PREM;}$\\
\hspace*{2.5cm}  {\tt END}\\
\hspace*{2cm}{\tt NEXT;}\\
\hspace*{2cm}{\tt PREM }\\
\hspace*{2cm}${\tt \gg}$\\
\hspace*{1.5cm}${\tt \gg}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ CRIBLE}$
\chapter{Programmes d'arithmétique} 
\section{Calcul du PGCD par l'algorithme d'Euclide}
Cet algorithme est basé sur la définition récursive du PGCD :
\begin{eqnarray*}
PGCD(A,0) & = & A \\
PGCD(A,B) & = & PGCD(B,A \ mod \  B) \  si \  B \neq 0
\end{eqnarray*}
Voici la description de cet algorithme :\\
on effectue des divisions euclidiennes successives :
\begin{eqnarray*}
A=& B \times Q_1+R_1  &  0 \leq R_1 < B \\
B=& R_1 \times Q_2+R_2  & 0 \leq R_2 < R_1 \\
R_1=& R_2 \times Q_3+R_3 & 0 \leq R_3 < R_2 \\
.......
\end{eqnarray*}
Après un nombre fini d'étapes, il existe un entier n tel que : 
$R_n = 0.$ \\
on a alors :\\
$PGCD(A,B)= PGCD(B,R_1) =...$\\
$PGCD(R_{n-1},R_n) = PGCD(R_{n-1},0) = R_{n-1}$
\subsection{Traduction algorithmique}
-Version itérative\\
Si B $\neq$ 0 on calcule R=A mod B, puis   avec B dans le r\^ole 
de A (en mettant  B dans A ) et R dans le r\^ole de B ( en mettant R dans B)
on recommence jusqu'à ce que B=0, le PGCD est alors A.
\begin{verbatim}
Fonction PGCD(A,B)
Local R\end{verbatim}
{\tt tant que B $\neq$ 0 faire}\begin{verbatim}
  A mod B->R
  B->A
  R->B
ftantque
résultat A
ffonction
\end{verbatim}
 -Version récursive\\
On écrit simplement la définition récursive vue plus haut.
\begin{verbatim}
Fonction PGCD(A,B)\end{verbatim}
{\tt Si B $\neq$ 0 alors}\begin{verbatim}
  résultat PGCD(B,A mod B) 
  sinon
  résultat A
fsi
ffonction\end{verbatim}
\subsection{Traduction HP49G mode RPN}
-Version itérative\\
${\tt \ll \ 0 \rightarrow\ A\  B\  R}$ \\ 
\hspace*{0.5cm}${\tt \ll WHILE\ B\ 0 \ \neq REPEAT}$\\
\hspace*{1.5cm}{\tt A B MOD 'R' STO}\\
\hspace*{1.5cm}{\tt B 'A' STO}\\
\hspace*{1.5cm}{\tt R 'B' STO}\\
\hspace*{1cm}{\tt END}\\
\hspace*{1cm}{\tt A}\\
\hspace*{0.5cm}${\tt \gg}$\\
 ${\tt \gg}$\\
-Version récursive\\
${\tt \ll \ 0 \rightarrow\ A\  B\ }$\\   
\hspace*{0.5cm}${\tt \ll IF\ B\ 0\ \neq\ THEN}$\\
\hspace*{1.5cm}{\tt B A B MOD PGCDR}\\
\hspace*{1cm}{\tt ELSE}\\
\hspace*{1.5cm}{\tt A}\\ 
\hspace*{1cm}{\tt END}\\
\hspace*{0.5cm}${\tt \gg}$\\ 
 ${\tt \gg}$\\ 
Puis on stocke ce programme dans la variable 'PGCDR'.
\subsection{Traduction HP49G mode Algébrique}
On tape  :\\
-version itérative\\
\noindent
${\tt \ll \ \rightarrow\ A,B \  }$\\
\hspace*{0.5cm}${\tt \ll 0\ \rightarrow\ R}$\\
\hspace*{1cm}${\tt \ll \  WHILE \ B\ \neq \  0 \ REPEAT}$\\
\hspace*{2cm}${\tt A\ MOD \ B \ STO \triangleright R;}$\\
\hspace*{2cm}${\tt  B \ STO \triangleright A;}$\\
\hspace*{2cm}${\tt R \ STO \triangleright B}$\\
\hspace*{1.5cm}${\tt END;}$\\
\hspace*{1.5cm}${\tt A}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ PGCD}$\\
Puis par exemple, {\tt PGCD(45,75)} pour l'exécuter.\\
-version récursive\\
\noindent
${\tt \ll \ \rightarrow\ A,B \  }$\\
\hspace*{0.5cm}${\tt \ll IF \ B \ \neq \ 0\ THEN}$\\
\hspace*{1.5cm}${\tt PGCDR(B,A\ MOD \ B)}$\\
\hspace*{1cm}${\tt ELSE }$\\
\hspace*{1.5cm}${\tt A}$\\
\hspace*{1cm}${\tt END}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ PGCDR}$\\
Puis par exemple, {\tt PGCDR(45,75)} pour l'exécuter.\\
Remarque :\\
Si on utilise la fonction du calcul symbolique {\tt IREMAINDER} à la place de
{\tt MOD} dans les programmes précédents, {\tt PGCD} (ou {\tt PGCDR}) peut alors avoir comme 
paramètres des entiers de Gauss.  
\section{Identité de Bézout par l'algorithme d'Euclide}
 Dans ce paragraphe la fonction Bezout(A,B) est égale à la liste \{U, V, PGCD(A,B)\}
o\`u U et V vérifient :
   
$ A \times U + B \times V = PGCD(A,B). $ 
\subsection{Version it\'erative sans les listes}
L'algorithme d'Euclide permet de trouver un couple U et V vérifiant :\\
$ A \times U + B \times V= PGCD(A,B) $\\
En effet, si on note $ A_0$ et$ B_0 $ les valeurs de A et de B du début on a :
\begin{eqnarray*}
 A & =A_0 \times U+B_0 \times V \ \mbox{ avec }\  U=1 \ \mbox{ et }\  V=0 \\ 
 B & =A_0 \times W+B_0 \times X  \ \mbox{ avec }\  W=0 \ \mbox{ et } \  X=1 
\end{eqnarray*}
 Puis on fait évoluer A, B, U, V, W, X de façon que les deux relations
 ci-dessus soient toujours verifiées.\\
Si :\\
$ A=B \times Q+R \ \ \  0 \leq R < B \ \ ( R = A \ mod \ B \ et \  Q = E(A / B )) $\\
On écrit alors :
\begin{eqnarray*}
R=A-B \times Q=A_0 \times (U-W \times Q)+B_0 \times (V-X \times Q)=\\
A_0 \times S+B_0 \times T \ \mbox{ avec } \ S=U-W \times Q \  \mbox{ et } \   T=V-X \times Q
\end{eqnarray*}
Il reste alors à recommencer avec B dans le r\^ole de A (B->A\  W->U \ X->V) et R dans le r\^ole de B (R->B \ S->W \ T->X ) d'o\`u l'algorithme:

\begin{verbatim}
fonction Bezout (A,B)
local U,V,W,X,S,T,Q,R
1->U 0->V 0->W 1->X\end{verbatim}
{\tt tant que B $\neq$ 0 faire}\begin{verbatim}
A mod B->R 
E(A/B)->Q
//R=A-B*Q
U-W*Q->S
V-X*Q->T
B->A W->U X->V
R->B S->W T->X
ftantque
résultat {U, V, A}
ffonction
\end{verbatim}
\subsection{Version it\'erative avec les listes}
On peut simplifier l'écriture de l'algorithme ci-dessus en utilisant moins de
 variables : pour cela on utilise des listes LA LB LR pour mémoriser les
 triplets \{U, V, A\} \{W, X, B\} et \{S, T, R\}.

\begin{verbatim}
fonction Bezout (A,B)
local LA LB LR
{1, 0, A}->LA
{0, 1, B}->LB\end{verbatim}
{\tt tant que LB[3] $\neq$ 0 faire}\begin{verbatim}
LA-LB*E(LA[3]/LB[3])->LR 
LB->LA 
LR->LB 
ftantque
résultat LA
ffonction
\end{verbatim}
\subsection{Version récursive avec les listes}
On peut définir récursivement la fonction Bezout par:

$ Bezout(A,0)=\{1,\ 0,\ A\} $  
   
Si $ B \neq 0 $ il faut définir $ Bezout(A,B)$ en fonction de $ Bezout(B,R)$ lorsque

$ R=A-B \times Q \ \mbox{ et } \  Q=E(A/B).$

On a:
\begin{eqnarray*} Bezout(B,R)=LT=\{W, X, pgcd(B,R)\} \\
\mbox{ avec }\  W \times B+X \times R=pgcd(B,R)
\end{eqnarray*}
Donc:
\begin{eqnarray*}
 W \times B+X \times (A-B \times Q) & = & pgcd(B,R) \ \mbox{ ou  encore} \\ 
X \times A+(W-X \times Q) \times B & = & pgcd(A,B).
\end{eqnarray*}
D'o\`u si $B \neq 0$ et si $ Bezout(B,R)=LT$ on a :

$ Bezout(A,B)=\{LT[2],\ LT[1]-LT[2] \times Q,\ LT[3]\}.$\\
\begin{verbatim}
fonction Bezout (A,B)
local LT Q R\end{verbatim}
{\tt Si B $\neq$ 0 faire}\begin{verbatim}
E(A/B)->Q
A-B*Q->R
Bezout(B,R)->LT
Résultat {LT[2], LT[1]-LT[2]*Q, LT[3]}
sinon Résultat {1, 0, A} 
fsi
ffonction
\end{verbatim}
\subsection{Traduction HP49G mode RPN}
-Version itérative avec les listes

Au début  A et B contiennent les deux nombres pour lesquels on cherche
l'identité de Bézout, puis A et B désignent les listes LA et LB de l'algorithme.\\
%%HP: T(3)A(R)F(.);
${\tt \ll \{\}\ \rightarrow\  A\ B\  R}$\\   
\hspace*{0.5cm}${\tt \ll   \{1\ 0\}\ 'A'\ STO+}$\\
\hspace*{1cm}${\tt \{0\ 1\}\ 'B'\ STO+}$\\
\hspace*{1cm}${\tt WHILE\  B\ 3\ GET\ 0\ \neq\ REPEAT}$\\
\hspace*{1.5cm}{\tt  A B A 3 GET B 3 GET / FLOOR * - 'R' STO}\\
\hspace*{1.5cm}{\tt B 'A' STO}\\
\hspace*{1.5cm}{\tt R 'B' STO}\\  
\hspace*{1cm}{\tt END}\\
\hspace*{1cm}{\tt A}\\
\hspace*{1.5cm}${\tt \gg}$\\ 
${\tt \gg}$\\
-Version récursive avec les listes\\
%%HP: T(3)A(R)F(.);
${\tt \ll \{\}\ \rightarrow\ A\ B\ T}$\\
\hspace*{0.5cm}${\tt \ll IF\ B\ 0\ \neq THEN}$\\
\hspace*{1.5cm}{\tt B A B MOD BEZOUR 'T' STO}\\
\hspace*{1.5cm}{\tt T 2 GET DUP A B / FLOOR *}\\  
\hspace*{1.5cm}{\tt T 1 GET SWAP -}\\
\hspace*{1.5cm}{\tt T 3 GET {} + + +}\\
\hspace*{1cm}{\tt ELSE}\\
\hspace*{1.5cm}{\tt \{1 0\} A +}\\
\hspace*{1cm}{\tt END}\\
\hspace*{0.5cm}${\tt \gg}$\\  
${\tt \gg}$\\
Puis on stocke ce programme dans la variable BEZOUR
\subsection{Traduction HP49G mode Algébrique}
-Version itérative avec les listes

Au début  A et B contiennent les deux nombres pour lesquels on cherche
l'identité de Bézout, puis A et B désignent les listes LA et LB de l'algorithme.\\
\noindent
${\tt \ll \ \rightarrow\ A,B \  }$\\
\hspace*{0.5cm}${\tt \ll \{\}\ \rightarrow\ R}$\\
\hspace*{1cm}${\tt \ll  \{1,0,A\}\ STO \triangleright \ A;}$\\
\hspace*{1.5cm}${\tt \{0,1,B\}\ STO \triangleright \ B;}$\\
\hspace*{1.5cm}${\tt WHILE \ B[3]\ \neq \  0 \ REPEAT}$\\
\hspace*{2cm}${\tt A-B*FLOOR(A[3]/B[3])\ STO \triangleright \ R;}$\\
\hspace*{2cm}${\tt B\ STO \triangleright \ A;}$\\
\hspace*{2cm}${\tt R\ STO \triangleright \ B}$\\
\hspace*{1.5cm}${\tt END}$\\
\hspace*{1.5cm}${\tt A}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ BEZOUT}$\\
Puis par exemple, {\tt BEZOUT(45,75)} pour l'exécuter.\\

-Version récursive avec les listes\\
\noindent
${\tt \ll \ \rightarrow\ A,B \  }$\\
\hspace*{0.5cm}${\tt \ll \{\}\ \rightarrow\ T}$\\
\hspace*{1cm}${\tt \ll IF \ B \ \neq \ 0 \ THEN}$\\
\hspace*{2cm}${\tt BEZOUR(B,A \ MOD \ B)\ STO \triangleright \ T;}$\\
\hspace*{2cm}${\tt \{T[2],T[1]-T[2]*FLOOR(A/B),T[3]\}}$\\
\hspace*{1.5cm}${\tt ELSE}$\\
\hspace*{2cm}${\tt \{1,0,A\}}$\\
\hspace*{1.5cm}${\tt END}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ BEZOUR}$\\
Puis par exemple, {\tt BEZOUR(45,75)} pour l'exécuter.\\
{\sc Remarque} :\\
Si on utilise la fonction de calcul symbolique {\tt IREMAINDER} à la place de
{\tt MOD} et {\tt IQUOT(A,B)} à la place de {\tt FLOOR(A/B)} dans les programmes précédents, {\tt BEZOUT} peut alors avoir comme 
paramètres des entiers de Gauss.  
\section{D\'ecomposition en facteurs premiers}

\subsection{Les algorithmes et leurs traductions}

-Premier algorithme\\
On teste, pour tous les nombres  D de 2 à N, la divisibilité de N par D.\\
Si D divise N, on cherche alors les diviseurs de N/D etc...\\
On met les diviseurs trouvés dans la liste FACT.
\begin{verbatim}
fonction facprem(N)
local D FACT 
2 -> D
{} -> FACT\end{verbatim}
{\tt tant que N $\neq$ 1 faire}
\begin{verbatim}  si N mod D = 0 alors
    FACT + D -> FACT
    N/D -> N
   sinon
    D+1 -> D
 fsi
ftantque
résultat FACT
ffonction
\end{verbatim}
- Première amélioration\\
On ne teste que les diviseurs D entre 2 et $E(\sqrt N).$
\begin{verbatim}
fonction facprem(N)
local D FACT
2 -> D
{} -> FACT\end{verbatim}
{\tt tant que D*D $\leq$ N faire}
\begin{verbatim}  si N mod D = 0 alors
    FACT + D -> FACT
    N/D-> N
   sinon
    D+1 -> D
 fsi
ftantque
FACT + N -> FACT
résultat FACT
ffonction
\end{verbatim}
 -Deuxième amélioration\\
On cherche si 2 divise N, puis on teste les diviseurs impairs D entre 3 et $E(\sqrt N).$\\
Dans la liste FACT, on fait suivre  chaque diviseur par son exposant :\\
 decomp(12)=\{2,2,3,1\}.
\begin{verbatim}
fonction  facprem(N)
local K D FACT
{}->FACT
0 -> K
tant que N mod 2 = 0 faire
    K+1 -> K
    N/2 -> N
ftantque\end{verbatim}
 {\tt  si K $\neq$0 alors}
\begin{verbatim}    FACT + {2 K} -> FACT
fsi
3 ->D \end{verbatim}
{\tt tant que D*D $\leq$ N faire}
\begin{verbatim}  0 -> K
  tant que N mod D = 0 faire
    K+1 -> K
    N/D -> N
  ftantque\end{verbatim}
 {\tt \ \  si K $\neq$0 alors}
\begin{verbatim}    FACT + {D K} -> FACT
  fsi
  D+2 -> D
ftantque\end{verbatim}
{\tt si N $ \neq 1$ alors}
\begin{verbatim}FACT + {N 1} -> FACT
fsi
résultat FACT
ffonction
\end{verbatim}
\subsection{Traduction HP49G mode RPN}
%%HP: T(1)A(R)F(.);
Voici la traduction de la deuxième amélioration :\\
${\tt \ll 0\ 3\ \{\}\ \rightarrow\ N\ K\ D\ FACT}$\\
\hspace*{0.5cm}${\tt \ll\ WHILE\ N\ 2\ MOD\ 0\ ==\ REPEAT}$\\
\hspace*{1.5cm} {\tt       1 'K' STO+ \\
\hspace*{1.5cm}        'N' 2 STO/\\
\hspace*{1cm}    END\\ 
\hspace*{1cm}  IF K 0 $\neq$ THEN\\
 \hspace*{1.5cm}     \{2 K\} 'FACT' STO\\
\hspace*{1cm}   END\\
\hspace*{1cm} WHILE N D D * $\geq$ REPEAT\\
  \hspace*{1.5cm}     0 'K' STO \\
  \hspace*{1.5cm}     WHILE N D MOD 0 == REPEAT\\
 \hspace*{2cm}       1 'K' STO+\\ 
 \hspace*{2cm}       'N' D STO/\\
 \hspace*{1.5cm}      END \\
 \hspace*{1.5cm}      IF K 0 $\neq$ THEN\\
  \hspace*{2cm}      \{D K\} 'FACT' STO+\\
  \hspace*{1.5cm}     END \\
  \hspace*{1.5cm}     2 'D' STO+\\
 \hspace*{1cm}    END\\
\hspace*{1cm} IF N 1 $\neq$ THEN\\
 \hspace*{1.5cm}      \{N 1\} 'FACT' STO+\\
  \hspace*{1cm}   END}\\  
${\tt \ \ \ \gg}$\\
${\tt \gg}$
\subsection{Traduction HP49G mode Algébrique}
\noindent
${\tt \ll \ \rightarrow\ N \  }$\\
\hspace*{0.5cm}${\tt \ll 0 \ \rightarrow\ K}$\\
\hspace*{1cm}${\tt \ll  WHILE \ N\ MOD\ 2 \ ==\  0 \ REPEAT}$\\ 
\hspace*{2cm}${\tt K+1 \ STO \triangleright \ K;}$\\
\hspace*{2cm}${\tt N/2\ STO \triangleright \ N}$\\
\hspace*{1.5cm}${\tt END;}$\\
\hspace*{1.5cm}${\tt \{\} \ \rightarrow\ FACTO}$\\
\hspace*{2cm}${\tt \ll IF \ K \neq \ 0\ THEN}$\\
\hspace*{3cm}${\tt FACTO+\{2,K\} \ STO  \triangleright \ FACTO}$\\
\hspace*{2.5cm}${\tt END;}$\\
\hspace*{2.5cm}${\tt 3 \ \rightarrow\ D}$\\
\hspace*{3cm}${\tt \ll  WHILE\ D*D \leq N  \ REPEAT}$\\ 
\hspace*{4cm}${\tt 0 \ STO \triangleright \ K;}$\\
\hspace*{4cm}${\tt  WHILE\ N \ MOD \ D\ == 0 \ REPEAT}$\\ 
\hspace*{4.5cm}${\tt K+1 \ STO \triangleright \ K;}$\\
\hspace*{4.5cm}${\tt N/D \ STO \triangleright \ N;}$\\
\hspace*{4cm}${\tt END;}$\\
\hspace*{4cm}${\tt IF \ K \neq \ 0\ THEN}$\\
\hspace*{4.5cm}${\tt FACTO+\{D,K\} \ STO \triangleright \ FACTO}$\\
\hspace*{4cm}${\tt END;}$\\
\hspace*{4cm}${\tt D+2 \ STO  \triangleright \ D}$\\
\hspace*{3.5cm}${\tt END;}$\\
\hspace*{3.5cm}${\tt IF \ N \neq \ 1\  THEN}$\\
\hspace*{4cm}${\tt FACTO+\{N,1\} \ STO  \triangleright \ FACTO}$\\
\hspace*{3.5cm}${\tt END;}$\\
\hspace*{3.5cm}${\tt FACTO;}$\\
\hspace*{3cm}${\tt \gg}$\\
\hspace*{2cm}${\tt \gg}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ FACTEUR}$\\
Puis par exemple, {\tt FACTEUR(45)} pour l'exécuter.\\
\section{Calcul de $ A^P \  mod\ N$}\label{sec:puimod}
\subsection{Traduction Algorithmique}
-Premier algorithme\\
On utilise deux variables locales PUIS et I.\\
On fait un programme itératif de façon qu'à chaque étape PUIS représente
$A^I \ (\bmod \ N)$.
\begin{verbatim}
fonction puismod (A, P, N)
local PUIS, I
1->PUIS
pour I de 1 a P faire
  A*PUIS mod N ->PUIS 
fpour
resultat PUIS
ffonction
\end{verbatim} 
-Deuxième algorithme\\
On utilise une seule variable locale PUI mais on fait varier P de façon qu'à 
chaque étape de l'itération on ait :\\
$ resultat= PUI * A^P \ (\bmod \ N) $
\begin{verbatim}
fonction puismod (A, P, N)
local PUI
1->PUI
tant que  P>0  faire
  A*PUI mod N ->PUI 
  P-1->P
ftantque
resultat PUI
ffonction
\end{verbatim} 
-Troisième algorithme\\
 On peut aisément modifier ce programme en remarquant que :\\
$A^{2*P} = (A*A)^P $.\\
Donc quand P est pair on a la relation :\\
$PUI*A^P = PUI*(A*A)^{P/2} \ (\bmod \ N)$\\
et quand P est impair on a la relation :\\
$PUI*A^P = PUI*A*A^{P-1}\ (\bmod \ N)$.\\
On obtient  alors un algorithme rapide de $ A^P \ (\bmod \ N) $.
\begin{verbatim}
fonction puismod (A, P, N)
local PUI
1->PUI
tant que  P>0  faire
  si P mod 2 =0 alors
    P/2->P
    A*A mod N->A
  sinon
    A*PUI mod N ->PUI 
    P-1->P
  fsi
ftantque
resultat PUI
ffonction
\end{verbatim} 
On peut remarquer que si P est impair P-1 est pair.\\
 On peut donc écrire :
\begin{verbatim}
fonction puismod (A, P, N)
local PUI
1->PUI
tant que  P>0  faire
  si P mod 2 =1 alors
    A*PUI mod N ->PUI 
    P-1->P
  fsi   
P/2->P
A*A mod N->A
ftantque
resultat PUI
ffonction
\end{verbatim} 
 -Programme récursif\\
On peut définir la puissance par les relations de récurrence :\\
$A^0=1\ \
A^{P+1} \ (\bmod \ N) =(A^P \ (\bmod\ N))*A \ (\bmod \ N)$ 
\begin{verbatim}
fonction puimod(A, P, N)
si P>0 alors
resultat puimod(A, P-1, N)*A mod N
sinon
resultat 1
fsi
ffonction
\end{verbatim}
-Programme récursif rapide
\begin{verbatim}
fonction puimod(A, P, N)
si P>0 alors
  si P mod 2 =0 alors
    resultat puimod(A*A, P/2, N)
  sinon
    resultat puimod(A, P-1, N)*A mod N
  fsi 
sinon
resultat 1
fsi
ffonction
\end{verbatim}
\subsection{Traduction HP49G mode RPN}
L'utilisateur doit mettre sur la pile :\\
A, P, N pour obtenir $A^P mod\ N$.\\
Voici la traduction de l'algorithme rapide itératif :\\ 
${\tt \ll\  1\ \rightarrow\  A\  P\  N\  PUI }$\\
\hspace*{0.5cm}${\tt \ll \ WHILE\ P\ 0\ >\ REPEAT}$\\
\hspace*{1.5cm} {\tt IF P 2 MOD 1 == THEN\\
 \hspace*{2cm} A PUI * N MOD 'PUI' STO\\
\hspace*{2cm} 'P' STO- \\
\hspace*{1.5cm} END\\
 \hspace*{1.5cm}   P 2 / 'P' STO\\
 \hspace*{1.5cm}   A A * N MOD 'A' STO\\
\hspace*{1cm}    END\\
\hspace*{1cm}    PUI}\\
${\tt \ \ \ \gg}$\\
${\tt \gg}$

Puis on stocke ce programme dans PUIMOD ('PUIMOD' STO)

\subsection{Traduction HP49G mode Algébrique}
Voici la traduction de l'algorithme rapide itératif :\\
${\tt \ll \ \rightarrow\ A\ P\ N \  }$\\
\hspace*{0.5cm}${\tt \ll 1 \ \rightarrow\ PUI}$\\
\hspace*{1cm}${\tt \ll  WHILE \ P  > 0 \ REPEAT}$\\
\hspace*{2cm}${\tt IF \ P\ MOD\ 2\ == 1\ THEN}$\\
\hspace*{2.5cm}${\tt A*PUI\ MOD\ N \ STO \triangleright \ PUI}$\\
\hspace*{2.5cm}${\tt P-1 \ STO \triangleright \ P;}$\\
\hspace*{2cm}${\tt END;}$\\ 
\hspace*{2cm}${\tt P/2 \ STO \triangleright \ P;}$\\
\hspace*{2cm}${\tt A*A \ MOD \ N \ STO \triangleright \ A;}$\\
\hspace*{1.5cm}${\tt END;}$\\
\hspace*{1.5cm}${\tt PUI}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ PUIMOD}$\\
Puis par exemple, {\tt PUIMOD(45,32,13)} pour l'exécuter.\\
\section{La fonction estpremier}
\subsection{Traduction Algorithmique}
- Premier algorithme

On va écrire un fonction booléenne de paramètre N, qui sera egale à  VRAI 
quand N est premier et à FAUX sinon.

Pour cela, on cherche si N posséde un diviseur $\neq$ 1 et $\leq$ à $ E(\sqrt{N})$ (partie entière de racine de N).

On traite le cas N=1 à part!

On utilise une variable booléenne PREM, qui est au départ à VRAI et qui passe 
à FAUX d\`es que l'on rencontre un diviseur de N.


\begin{verbatim}
Fonction estpremier(N)
local PREM, I, J\end{verbatim}
{\tt  E($\sqrt{N}$) ->J}
\begin{verbatim}Si N = 1 alors
  FAUX->PREM
  sinon
  VRAI->PREM
fsi
2->I\end{verbatim}
{\tt tant que PREM et I $\leq$J faire}
\begin{verbatim}  si N mod I = 0 alors
     FAUX->PREM
     sinon
     I+1->I
  fsi 
ftantque
résultat PREM
ffonction
\end{verbatim}

-Première amélioration

On peut remarquer que l'on peut tester si N est pair et sinon regarder si N 
possède un diviseur impair.

\begin{verbatim}
Fonction estpremier(N)
local PREM, I, J\end{verbatim}
{\tt  E($\sqrt{N}$) ->J \\
 Si (N = 1) ou (N mod 2 = 0) et N$\neq$2 alors}\begin{verbatim}
  FAUX->PREM
  sinon
  VRAI->PREM
fsi
3->I\end{verbatim}
{\tt tant que PREM et I $\leq$J faire}
\begin{verbatim}  si N mod I = 0 alors
     FAUX->PREM
     sinon
     I+2->I
  fsi 
ftantque
résultat PREM
ffonction
\end{verbatim}


-Deuxième amélioration

On regarde si N est divisible par 2 ou par 3, et sinon on regarde si N posséde un diviseur de la forme $6 \times k-1 $ ou  $6 \times k+1 $.


\begin{verbatim}
Fonction estpremier(N)
local PREM, I, J\end{verbatim}
{\tt  E($\sqrt{N}$) ->J}
\begin{verbatim}Si (N = 1) ou (N mod 2 = 0) ou ( N mod 3 = 0) alors
  FAUX->PREM
  sinon
  VRAI->PREM
fsi
si N=2 ou N=3 alors 
VRAI->PREM
fsi
5->I\end{verbatim}
{\tt tant que PREM et I $\leq$J faire}
\begin{verbatim}  si (N mod I = 0) ou (N mod I+2 =0) alors
     FAUX->PREM
     sinon
     I+6->I
  fsi 
ftantque
résultat PREM
ffonction
\end{verbatim}
\subsection{Traduction HP49G mode RPN}
On traduit le dernier algorithme : le résultat est 0 (FAUX) ou 1 (VRAI).\\
${\tt \ll\ DUP\ \sqrt{\ }\ FLOOR\ 0\ 5\ \rightarrow\  N\ J\ PREM\ I}$\\
${\tt \ \ \ll\ IF\ N\ 1\ ==\ N\ 2\ MOD\ 0\ ==\ OR\ N\ 3\ MOD\ 0\ ==\ OR\ THEN}$\\
\hspace*{1cm}{\tt    0 'PREM' STO\\ 
\hspace*{0.5cm}  ELSE\\
 \hspace*{1cm}   1 'PREM' STO\\
\hspace*{0.5cm}  END\\
\hspace*{0.5cm}  IF N 2 == N 3 == OR THEN\\
 \hspace*{1cm}   1 'PREM' STO\\
 \hspace*{0.5cm} END\\
 \hspace*{0.5cm}  WHILE PREM I J $\leq$ AND REPEAT\\
 \hspace*{1cm} IF N I MOD 0 == N I 2 + MOD 0 == OR THEN\\
\hspace*{1.5cm}     0 'PREM' STO\\
\hspace*{1cm}  ELSE \\
 \hspace*{1.5cm}    I 6 + 'I' STO\\
\hspace*{1cm}  END\\
\hspace*{0.5cm}END\\
\hspace*{0.5cm}PREM}\\
${\tt \ \ \gg}$\\
${\tt \gg}$

\subsection{Traduction HP49G mode Algébrique}
\noindent
${\tt \ll \ \rightarrow\  N \  }$\\
\hspace*{0.5cm}${\tt \ll 0 \ \rightarrow\ P}$\\
\hspace*{1cm}${\tt \ll  IF \ N\ MOD\ 2\ == 0\ OR \ N\ MOD\ 3\ == 0\ OR \ N==1 THEN}$\\
\hspace*{2cm}${\tt 0 \ STO \triangleright \ P}$\\
\hspace*{1.5cm}${\tt ELSE;}$\\
\hspace*{2cm}${\tt 1 \ STO \triangleright \ P;}$\\
\hspace*{1.5cm}${\tt END;}$\\ 
\hspace*{1.5cm}${\tt   IF \ N  == 2\ OR \ N == 3\ THEN}$\\
\hspace*{2cm}${\tt 1 \ STO \triangleright \ P;}$\\
\hspace*{1.5cm}${\tt END;}$\\ 
\hspace*{1.5cm}${\tt FLOOR( \sqrt N ) \ \rightarrow\ J}$\\
\hspace*{2cm}${\tt \ll 5 \ \rightarrow\ I}$\\
\hspace*{2.5cm}${\tt \ll  WHILE \ I \leq  J \ AND\ P \ REPEAT}$\\
\hspace*{3.5cm}${\tt IF \ N\ MOD\ I\ == 0 \ OR\ N\ MOD\ (I+2)\ == 0 \  \ THEN}$\\
\hspace*{4cm}${\tt 0 \ STO \triangleright \ P;}$\\
\hspace*{3.5cm}${\tt ELSE;}$\\
\hspace*{4cm}${\tt I+6 \ STO \triangleright \ I;}$\\
\hspace*{3.5cm}${\tt END;}$\\ 
\hspace*{3cm}${\tt END;}$\\ 
\hspace*{3cm}${\tt P}$\\
\hspace*{2.5cm}${\tt \gg}$\\
\hspace*{2cm}${\tt \gg}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ PREM?}$\\
Puis par exemple {\tt PREM?(45789)} pour l'exécuter.\\
\section{Méthode probabiliste de Mr Rabin}\label{sec:rabin}
Si N est premier alors tous les nombres K strictement inf\'erieurs \`a N sont
premiers avec N, donc d'apr\`es le petit th\'eor\`eme de Fermat on a :


$ K^{N-1} = 1 \  (\bmod\  N)$ 

Si N n'est pas premier, les entiers K verifiant:

$ K^{N-1} = 1 \  (\bmod\  N)$ 

sont tr\`es peu nombreux.\\
Plus pr\'ecisement on peut montrer que si $ N>4 $, la probabilit\'e de tomber sur un tel nombre K est inf\'erieure \`a 0.25.\\
Un nombre N vérifiant $ K^{N-1} = 1 \  (\bmod\  N)$ pour 20 tirages de K  est un nombre pseudo-premier.
La m\'ethode probabiliste de Rabin consiste \`a tirer au hasard un nombre K 
($1< K < N $) et à calculer :

$ K^{N-1}  \  (\bmod\  N)$  

Si $ K^{N-1} = 1 \  (\bmod\  N)$ on refait un autre tirage et si 
$ K^{N-1} \neq  1 \  (\bmod\  N)$ on est s\^ur que N n'est pas premier.

Si on obtient $ K^{N-1} = 1 \  (\bmod\  N)$  pour 20 tirages  de K on peut conclure
 que N est premier avec une probabilit\'e d'erreur tr\`es faible inf\'erieure \`a $0.25^{20}$ soit de l'ordre de $10^{-12}$.

Bien s\^ur cette m\'ethode est employée pour savoir  si de  grands nombres sont pseudo-premiers.

\subsection{Traduction Algorithmique}
  On suppose que :

Hasard(N) donne un nombre au hasard entre 0 et N-1.

 Le calcul de :

$ K^{N-1}  \  mod\  N$  

se fait gr\^ace \`a l'algorithme de la puissance rapide 
(cf page \pageref{sec:puimod}).

On notera :

puismod(K, P, N) la fonction qui calcule $ K^P  \  mod\  N$  

\begin{verbatim}
Fonction estprem(N)
local K, I, P
1->I
1->P
Tant que P = 1 et I < 20 faire
hasard(N-2)+2->K
puismod(K, N-1, N)->P
I+1->I
ftantque
Si P =1 alors
resultat VRAI
sinon
resultat FAUX
fsi
ffonction
\end{verbatim}
\subsection{Traduction HP49G mode RPN}
%%HP: T(3)A(R)F(.);
On suppose que l'on a ecrit la fonction PUIMOD qui prend sur la pile trois 
arguments A, K, N et qui renvoie $A^K mod \ N$.\\
${\tt \ll\ 1\ 0\ 1\ \rightarrow\  N\ I\ K\ P}$\\   
${\tt \ \ \ll\ 0\ RDZ}$\\
\hspace*{0.5cm}{\tt WHILE P 1 == 20 I > AND REPEAT\\
\hspace*{1cm} 1 'I' STO+\\
\hspace*{1cm}RAND N 2 - * FLOOR 2 + 'K' STO\\ 
\hspace*{1cm}K N 1 - N PUIMOD  'P' STO\\
\hspace*{0.5cm}END \\
\hspace*{0.5cm}IF P 1 ==  THEN\\
\hspace*{1cm} 1\\
\hspace*{0.5cm} ELSE\\
\hspace*{1cm} 0\\
\hspace*{0.5cm}END}\\
${\tt \ \ \gg}$\\ 
${\tt \gg}$
\subsection{Traduction HP49G mode Algébrique}
\noindent
${\tt \ll \ \rightarrow\ N \  }$\\
\hspace*{0.5cm}${\tt \ll 1 \ \rightarrow\ I}$\\
\hspace*{1cm}${\tt \ll 0 \ \rightarrow\ K}$\\
\hspace*{1.5cm}${\tt \ll 1 \ \rightarrow\ P}$\\
\hspace*{2cm}${\tt \ll  RDZ(0);}$\\
\hspace*{2.5cm}${\tt WHILE \ P  == 0 \ AND \ I<20 \ REPEAT}$\\
\hspace*{3cm}${\tt 1+I \ STO \triangleright \ I;}$\\
\hspace*{3cm}${\tt FLOOR((N-2)*RAND)+2 \ STO \triangleright \ K;}$\\
\hspace*{3cm}${\tt PUIMOD(K,N-1,N) \ STO \triangleright \ P;}$\\
\hspace*{2.5cm}${\tt END;}$\\ 
\hspace*{2.5cm}${\tt IF \ P == 1\ THEN}$\\
\hspace*{3cm}${\tt 1}$\\
\hspace*{2.5cm}${\tt ELSE}$\\ 
\hspace*{3cm}${\tt 0}$\\ 
\hspace*{2.5cm}${\tt END;}$\\
\hspace*{2.5cm}${\tt P}$\\
\hspace*{2cm}${\tt \gg}$\\
\hspace*{1.5cm}${\tt \gg}$\\
\hspace*{1cm}${\tt \gg}$\\
\hspace*{0.5cm}${\tt \gg}$\\
${\tt \gg \ STO \triangleright \ RABIN}$\\
Puis par exemple, {\tt RABIN(45313)} pour l'exécuter.\\
Remarque : \\
On peut aussi utiliser la fonction de  calcul formel {\tt POWMOD} et on écrit alors :\\
En mode {\tt RPN} :\\
{\tt N MODSTO\\
 K N 1 - POWMOD 'P' STO}\\
à la place de :\\
{\tt K N 1 - N PUIMOD 'P' STO}\\
En mode {\tt Algèbrique} :\\
{\tt MODSTO(N);\\
POWMOD(K,N-1) STO$\triangleright$ P}\\
à la place de :\\
{\tt PUIMOD(K,N-1,N) STO$\triangleright$ P}\\
  
\newpage
\printindex
\newpage
\tableofcontents

\end{document}





















