%% LyX 1.4.3 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[french]{amsart}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{amssymb}
\IfFileExists{url.sty}{\usepackage{url}}
                      {\newcommand{\url}{\texttt}}

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
\theoremstyle{plain}
\newtheorem{thm}{Theorem}[section]
\numberwithin{equation}{section} %% Comment out for sequentially-numbered
\numberwithin{figure}{section} %% Comment out for sequentially-numbered
\newenvironment{lyxcode}
{\begin{list}{}{
\setlength{\rightmargin}{\leftmargin}
\setlength{\listparindent}{0pt}% needed for AMS classes
\raggedright
\setlength{\itemsep}{0pt}
\setlength{\parsep}{0pt}
\normalfont\ttfamily}%
 \item[]}
{\end{list}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.


\usepackage[francais,american]{babel}
\addto\extrasfrench{\providecommand{\og}{\leavevmode\flqq~}\providecommand{\fg}{\ifdim\lastskip>\z@\unskip\fi~\frqq}}
\makeatother
\begin{document}

\title{Introduction aux Systèmes de Calcul Formel}


\author{Nicolas M. Thiéry}


\email{Nicolas.Thiery@math.u-psud.fr}


\urladdr{http://Nicolas.Thiery.name/}

\maketitle

\section{Objectifs}

\begin{quotation}
\og L'art des mathématiques consiste à trouver le cas particulier
qui contient tous les germes de la généralité \fg{} David Hilbert
\end{quotation}
\begin{itemize}
\item Outil d'exploration:

\begin{itemize}
\item Manipulation d'exemples de taille conséquente
\item Évacuation des détails des calculs sans intérêt pédagogique
\item Possibilité de refaire les calculs et d'explorer autour
\end{itemize}
\item Quelles mathématiques peut faire un ordinateur?
\end{itemize}

\section{Systèmes de Calcul Formel: que peut-t'on faire avec?}


\subsection{Quelques systèmes de calcul formel}

Axiom, Maple, Mathématica, Maxima, MuPAD, XCAS, \ldots{}


\subsection{Calculette / interpréteur}

\begin{lyxcode}
>\,{}>~1+1

>\,{}>~x~:=~1+1

>\,{}>~2~{*}~x

>\,{}>~for~i~from~1~to~10~do

~~~~~~~print(i);

~~~end\_for

>\,{}>~f~:=

~~~proc(n)

~~~begin

~~~~~~~if~n~=~0~then

~~~~~~~~~~~1

~~~~~~~else

~~~~~~~~~~~f(n-1)~{*}~n;

~~~~~~~end\_if;

~~~end\_proc:

>\,{}>~f(0)

>\,{}>~f(1)

>\,{}>~f(2),~f(3),~f(4)

>\,{}>~//~debug(f(4))
\end{lyxcode}

\subsection{Calcul exact / calcul numérique (multiprécision)}

\begin{lyxcode}
>\,{}>~1~+~7~/~3

>\,{}>~1.0~+~7~/~3

>\,{}>~100!

>\,{}>~float(100!)

>\,{}>~float(PI)

>\,{}>~DIGITS~:=~1000:

>\,{}>~float(PI)

>\,{}>~DIGITS~:=~10:
\end{lyxcode}

\subsection{Logique}

\begin{lyxcode}
>\,{}>~TRUE~and~FALSE

>\,{}>~1~<~2

>\,{}>~bool(\%)

>\,{}>~A~and~not~A

>\,{}>~A~and~(A~==>~B)

>\,{}>~simplify(\%,~logic)
\end{lyxcode}

\subsection{Combinatoire}

\begin{lyxcode}
>\,{}>~combinat::permutations({[}a,b,c,d])

>\,{}>~combinat::cartesianProduct(

~~~~{[}1,2,3,4,5,6,7,8,9,Valet,Roi,Dame],

~~~~{[}Coeur,Carreau,Pique,Trefle])

>\,{}>~combinat::trees(6)

>\,{}>~plot(plot::Dodecahedron())
\end{lyxcode}

\subsection{Algèbre linéaire}

\begin{lyxcode}
>\,{}>~A~:=~matrix({[}{[}1,3],{[}2,7]])

>\,{}>~B~:=~matrix({[}{[}1,5,7],{[}-1,5,1]])

>\,{}>~A~{*}~B

>\,{}>~linalg::gaussElim(A);

>\,{}>~A\textasciicircum{}-1;

>\,{}>~equations~:=~{[}~2{*}x~+~m{*}y~=~~1,

~~~~~~~~~~~~~~~~~~~~x~-~~~y~=~-1~];

>\,{}>~solve(equations,{[}x,~y]);
\end{lyxcode}

\subsection{Calcul algébrique plus avancé}

\begin{lyxcode}
>\,{}>~Q~:=~Dom::Rational:

>\,{}>~Q::allCategories()

>\,{}>~1/3

>\,{}>~Qx~:=~Dom::Fraction(Dom::UnivariatePolynomial(x,~Q)):

>\,{}>~Qx(~(1+x)~/~(1-x)~)

>\,{}>~F~:=~Dom::AlgebraicExtension(Qx,~poly(z\textasciicircum{}2~-~x,~{[}z])):

>\,{}>~F(x),~F(z),~F(z\textasciicircum{}2)

>\,{}>~F(1/(1+z)/(1-z))

>\,{}>~P~:=~Dom::UnivariatePolynomial(u,~F):

>\,{}>~P(u{*}z){*}P(z)

>\,{}>~P(u~+~x{*}z)~{*}~P(u~-~x{*}z)

>\,{}>~factor(P(u\textasciicircum{}2~-~x\textasciicircum{}3))
\end{lyxcode}

\subsection{Visualisation mathématique}

\begin{lyxcode}
>\,{}>~plot(plot::Implicit2d(x\textasciicircum{}2~-~y\textasciicircum{}2~=~(x~-~a{*}y){*}(x\textasciicircum{}2~+~y\textasciicircum{}2),~~~~~~~~~~~~~~~~~~~~~~~x~=~-2..2,~y~=~-2..2,~a~=~-2..2))
\end{lyxcode}

\subsection{Calcul symbolique}

\begin{lyxcode}
>\,{}>~A~:=~matrix({[}{[}a11,~a12],~{[}a21,~a22]])

>\,{}>~B~:=~matrix({[}{[}b11,~b12],~{[}b21,~b22]])

>\,{}>~A{*}B

>\,{}>~linalg::det(A)

>\,{}>~1/A
\end{lyxcode}

\subsection{Calcul différentiel / intégral}

\begin{lyxcode}
>\,{}>~diff(cos(x),~x)

>\,{}>~int(sin(x),~x)

>\,{}>~diff(f(x)~{*}~g(x),~x)

>\,{}>~f~:=~ln((x~-~1)/(3+x{*}cos(x\textasciicircum{}3~+~1)))

>\,{}>~diff(f,~x)

>\,{}>~simplify(\%)

>\,{}>~hold(sum)(1/i\textasciicircum{}2,~i=1..infinity)

>\,{}>~sum(1/i\textasciicircum{}2,~i=1..infinity)


\end{lyxcode}

\subsection{Utilisation typique du calcul symbolique: prétraitement avant un
calcul numérique}

On veut calculer:

\[
\int_{0}^{2\pi}\sin(10x)dx\]


\begin{lyxcode}
>\,{}>~monplot~:=~plot::Function2d(sin(10{*}x),~x~=~0..2{*}PI):

~~~plot(monplot);

>\,{}>~plot(monplot,~plot::Hatch(monplot)):

>\,{}>~numeric::int(sin(10{*}x),~x~=~0..2{*}PI)

>\,{}>~int(sin(10{*}x),~x=0..2{*}PI)
\end{lyxcode}

\subsection{Composants d'un Système de Calcul Formel (Computer Algebra System):}

\begin{itemize}
\item Arithmétique: entiers longs, corps finis, ...
\item Polynômes, fractions rationnelles, matrices, ...
\item Sommations, intégration, dérivation, limites symboliques, \ldots{}
\item Solveurs (linéaire, polynômiaux, équations différentielles, ...)
\item Lien calcul numérique
\item Bases de données (nombres premiers, groupes classiques, ...)
\item Langage de programmation et structures de données


(pourquoi programmer?)

\item Gestion de mémoire
\item Interface avec d'autres systèmes
\item Interface utilisateur
\end{itemize}

\section{Quelques références}

\begin{itemize}
\item MuPAD:

\begin{itemize}
\item \url{http://www.mupad.com/}
\item \url{http://www.mupad.de/support/doc/40/en/}
\item Tutorial MuPAD:

\begin{itemize}
\item Bouquin (traduit en français!)
\item Sur place: C:\textbackslash{}Program Files\textbackslash{}Sciface\textbackslash{}MuPAD-4.0.0/share/doc/en/tutorium.pdf
\item Poly d'introduction à la programmation scientifique avec MuPAD: \url{http://www-lih.univ-lehavre.fr/~olivier/Enseignement/l1/cours/MuPAD/support/Programmation_scientifique_polyp.pdf}
\end{itemize}
\end{itemize}
\item Axiom \url{http://wiki.axiom-developer.org/}
\item Maple \url{http://www.maplesoft.com/}
\item Mathematica \url{http://www.wolfram.com/}
\item Maxima \url{http://maxima.sourceforge.net/}
\item XCAS \url{http://www-fourier.ujf-grenoble.fr/~parisse/giac_fr.html}
\end{itemize}

\end{document}
