% cours1tex (gH)
%
\documentclass[a4paper,12pt]{article}
%
\usepackage{maple2e}
%
\parskip    0.35cm
\parindent  0.00cm
%
\renewcommand{\thesection}{\arabic{section}. }
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}}
%
\def\C{\mbox{l\hspace{-0.43em}C}}
\def\Maple{\textit{Maple}}
\def\L{\ensuremath{\mathcal{L}}}
\def\dz{\texttt{\symbol{'043}}}      % di\`{e}se
%
% pour une matrice 2x2
%
\newcommand{\mat}[4]{\ensuremath{%
\left(\begin{tabular}{cc}%
#1&#2\\#3&#4\\\end{tabular}\right)}
}% fin de definition de \mat
%
% pour simuler une entr\'{e}e (ligne) Maple
%
\newcommand{\mapleIn}[1]{\textsf{
\begin{tabular}{ll}
 $ > $ &#1
\end{tabular}
}}
%
% pour simuler une sortee (ligne) Maple
%
\newcommand{\mapleOut}[1]{\texttt{
\begin{tabular}{ll}
 \hspace{1.3cm} & #1
\end{tabular}
}}
%
% une entr\'{e}e et une sortie pour Maple longue
%
\newcommand{\mapleInt}[1]{\textsf{#1}}
\newcommand{\mapleOutLong}[1]{\texttt{#1}}
%
% des macros "locales" au sujet
%
\def\sl{$sl(2,\C)$}
\def\slm{\textit{sl}-matrix}
\def\slms{\textit{sl}-matrices}
\newcommand{\sym}[1]{$Sym^{#1}(\C^ 2)$}
%
%
\begin{document}
%
\title{1. Objets \'{e}l\'{e}mentaires}
\author{Gilles Hunault}
\date{}
\maketitle
%\tableofcontents
%
\section{Informatique et calcul formel} % ##
%
L'informatique est une discipline jeune, n\'{e}e des math\'{e}matiques
mais qui a su s'en d\'{e}marquer. Elle peut traiter des
composants \'{e}lectroniques (le "$hard$") ou des logiciels
et programmes (le "$soft$") mais elle fleurte \'{e}galement avec
la th\'{e}orie (reconnaissance de la parole, intelligence artificielle,
traitement du signal et en particulier des images...).
Le $commerce\ informatique$, lui, consiste \`{a} fair changer rapidment les
logiciels, les machines pour gagner de l'argent. Ainsi en 1996, on
essaie de faire passer les utilisateurs du couple $Dos+Windows$ \`{a} un syst\`{e}me
d'exploitation nomm\'{e} (maladroitement ?) $95$, ce qui oblige \`{a} changer de
processeur, de disque dur, de m\'{e}moire centrale, voire d'\'{e}cran...

L'informatique traditionnelle se compose, entre autres,
de la programmation, l'analyse des syst\`{e}mes,
l'utilisation des outils de bureautique. En classe pr\'{e}paratoire, ces
pr\'{e}requis sont ignor\'{e}s au profit de la manipulation de langages pour des
calculs formels. Un calcul formel, en opposition au calcul num\'{e}rique peut
mettre en oeuvre des inconnues, comme~:~combien vaut $(a+b)^n$ en fonction
des diff\'{e}rents produits de puissances $a^ib^j$. $Maple$,
$Mathematica$, mais aussi $Reduce$, $Macsyma$ savent traiter ce genre de
probl\`{e}mes. Toutefois ce ne sont que des programmes avec leur faiblesses,
leurs limitations. Nous aurons l'occasion de nous en rendre compte avec
certains calculs (peut-\^{e}tre) faux ou (apparemment) aberrants...

Nous supposons ici que le lecteur sait poss\`{e}de et sait utiliser
\`{a} peu pr\`{e}s un ordinateur, un syst\`{e}me de fichiers, la souris... Nous ne
d\'{e}crirons que le langage \Maple. Les manipulations clavier sont suppos\'{e}es
\'{e}videntes ou d\'{e}crites ailleurs.
\newpage
Signalons seulement que pour ex\'{e}cuter une instruction \Maple,
il faut mettre un ; au bout de l'instruction ou un : puis appuyer sur
la touche nomm\'{e}e "Entr\'{e}e". Avec un point-virgule, \Maple\ affiche \'{e}ventuellement
le calcul, avec les symbole deux-points, en principe il n'y a aucun affichage.

\section{Premiers contacts avec \Maple} % ##
%

\Maple\ "sait" calculer des expressions num\'{e}riques et formelles :

\begin{maplegroup}

\begin{mapleinput}
\mapleinline{active}{1d}{2^1996 ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\begin{eqnarray*}
\lefteqn{
71758168454640907764552075073605124001394856380543450029852671051
\backslash } \\
 & &
61039133702314461604121789478164186990287278993671642334044493505
\backslash  \\
 & &
39409582141207097604158240869562432158201750004304869676500280446
\backslash  \\
 & &
43079368789678902988509664778992727467073141275291471231815622848
\backslash  \\
 & &
85149925559039350351456978096010263873145792584010556811528656600
\backslash  \\
 & &
14871780049462868130842353127681266979416411440762550826476758073
\backslash  \\
 & &
50792427073254124372122761329388612411502526349908239532213055896
\backslash  \\
 & &
18880745034684861474354502447505122326039411422211276598982875970
\backslash  \\
 & &
52179915121450340680720473649266407346472055005142767317612284086
\backslash  \\
 & & 0136553196814336\mbox{\hspace{294pt}}
\end{eqnarray*}
\end{maplelatex}
\end{maplegroup}

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{expand((1+x)^3) ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
1 + 3\,x + 3\,x^{2} + x^{3}
\]
\end{maplelatex}

\end{maplegroup}

Les notations utilis\'{e}es sont semblables \`{a} celles des math\'{e}matiques quand
c'est possible, mais il faut parfois chercher le nom (inspir\'{e} de l'anglais)
des fonctions :

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{2^3 , 2**3 ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
8 \ \, \ 8
\]
\end{maplelatex}


\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{(7 mod 5) = irem(17,8) ; iquo(35, 8) ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
2\ = \ 1
\]
\end{maplelatex}

\begin{maplelatex}
\[
4
\]
\end{maplelatex}

\end{maplegroup}
\begin{maplegroup}

\Maple\ distingue les entiers des rationnels, des r\'{e}els et des nombres
complexes. On peut avoir une id\'{e}e de la notion de nombre en tapant

\begin{mapleinput}
\mapleinline{active}{1d}{help (number) ;}{%
}
\end{mapleinput}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{? number}{%
}
\end{mapleinput}

\end{maplegroup}

La pr\'{e}cision de l'affichage et des calculs internes se fait
via $printf$ et $evalf$ :

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{1.23456^1.3 ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
1.315121453
\]
\end{maplelatex}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{evalf(1.23456^1.3,20) ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
1.315121453
\]
\end{maplelatex}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{printf(`%20.15f`,1.23456^1.3) ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplettyout}
   1.315121453000000
\end{maplettyout}

\end{maplegroup}

Par d\'{e}faut, \Maple\ utilise une variable nomm\'{e}e $Digits$. On consultera
l'aide associ\'{e}e par

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{? Digits}{%
}
\end{mapleinput}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{? precision}{%
}
\end{mapleinput}

\end{maplegroup}

Voici ce qui se passe si on change la valeur de cette variable :

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{Digits := 40 ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
{\it Digits} := 40
\]
\end{maplelatex}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{evalf(1.23456^1.3,40) ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
1.315121452504295229799837254523450562238
\]
\end{maplelatex}

\end{maplegroup}
\newpage
\Maple\ essaie de travailler en multipr\'{e}cision avec les
entiers, les rationnels. Il peut donc "coincer" :

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{1996 ^1996 :}{%
}
\end{mapleinput}

\end{maplegroup}

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{1996^(1996^1996) :}{%
}
\end{mapleinput}

\mapleresult
\begin{maplettyout}
Error, integer too large in context
\end{maplettyout}

\end{maplegroup}

Les calculs classiques peuvent se faire avec des affectations
via le symbole := ; un cas particulier consiste \`{a} mettre dans une
varaible son "nom" ce qui en fait une variable formelle et non pas
une valeur num\'{e}rique.

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{x := 2 ; y := x+2 ; x := 3 ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
x := 2
\]
\end{maplelatex}

\begin{maplelatex}
\[
y := 4
\]
\end{maplelatex}

\begin{maplelatex}
\[
x := 3
\]
\end{maplelatex}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{y ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
4
\]
\end{maplelatex}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{x := 'x' ; x := `x` ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
x := x
\]
\end{maplelatex}

\begin{maplelatex}
\[
x := x
\]
\end{maplelatex}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{x ;}{%
}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
3
\]
\end{maplelatex}

Attention \`{a} la notion de "transparence r\'{e}f\'{e}rentielle" : si $x$ n'existe
pas, $y:=x$ lie $x$ et $y$ : modifier $x$ change automatiquement $y$.
Par contre si $x$ a une valeur, $y$ ne re\c{c}oit que cette valeur. Changer
$x$ ne modifie alors rien pour $y$.

On pourra consulter les autres structures utilis\'{e}es par \Maple\ via

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{? set}{%
}
\end{mapleinput}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{? list}{%
}
\end{mapleinput}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{? vector}{%
}
\end{mapleinput}

\end{maplegroup}
\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{? seq}{%
}
\end{mapleinput}
\end{maplegroup}
\newpage
Les constantes reconnues par \Maple\ sont

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{constants ;}{%
}
\end{mapleinput}

\begin{mapleinput}
\end{mapleinput}

\mapleresult
\begin{maplelatex}
\[
{\it false}, \,\gamma , \,\infty , \,{\it true}, \,{\it Catalan}
, \,{\it FAIL}, \,\pi
\]
\end{maplelatex}

\end{maplegroup}


On se m\'{e}fier des fonctions de \Maple. Ainsi, on sait r\'{e}soudre
en classe de troisi\`{e}me la factorisation de $x^4+$
\`{a} partir du d\'{e}veloppement de $(x^2+1)^2$, ce que \Maple\
semble ignorer :

\begin{maplegroup}
\begin{mapleinput}
\mapleinline{active}{1d}{factor(x^4+1) ;}{%
}
\end{mapleinput}
\mapleresult
\begin{maplelatex}
\[
x^{4} + 1
\]
\end{maplelatex}

\end{maplegroup}

\Maple\ r\'{e}pond ici l'expression de d\'{e}part. Cela signifie qu'il n'a rien trouv\'{e}.
Pour $solve$, il afffiche une ligne vide (ce qui est difficile \`{a} comprendre
au d\'{e}but).
%
\section{Quelques listes de commandes} % ##
%
\end{document}
