diff options
author | Karl Berry <karl@freefriends.org> | 2016-03-18 21:07:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-03-18 21:07:50 +0000 |
commit | 7bf31841e5f35be8fc1948a5cf83a901e89d58c9 (patch) | |
tree | 4622d06d27a793ac6f2560f2d760bc32d99421e9 /Master | |
parent | 88f96ff3da55557cfa2bf808e8fc570643b3a270 (diff) |
formation-latex-ul (18mar16)
git-svn-id: svn://tug.org/texlive/trunk@40064 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
35 files changed, 3545 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/README b/Master/texmf-dist/doc/latex/formation-latex-ul/README new file mode 100644 index 00000000000..ba22c8a67f9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/README @@ -0,0 +1,45 @@ +This package contains the supporting documentation, exercise files and +templates for a two-part introductory LaTeX course (in French) +prepared for Université Laval, Québec, Canada. + +LICENCE + +Creative Commons Attribution-ShareAlike 4.0 International. + +VERSION + +2016-03-18 + +*** The rest of this file is in French *** + +Ce paquetage contient tous les fichiers relatifs à une formation sur +la rédaction de thèses et de mémoires avec LaTeX développée pour la +Bibliothèque de l'Université Laval. + +La formation se divise en deux parties. + +La première partie de la formation se déroulant en classe, la +documentation qui l'accompagne consiste en une série de diapositives; +voir le fichier + + formation_latex_UL-partie_1.pdf + +Cette première partie couvre les concepts de base de LaTeX pour un +nouvel utilisateur: processus d'édition, compilation, visualisation; +séparation du contenu et de l'apparence du texte; mise en forme du +texte; séparation du document en parties; rudiments du mode +mathématique. + +La seconde partie a été conçue comme un ouvrage de référence pour une +étude autonome; voir le fichier + + formation_latex_UL-partie_2.pdf + +Avec cette seconde partie, une personne devrait être en mesure de +composer des documents relativement complexes comportant des tableaux, +des figures, des équations mathématiques élaborées, une bibliographie, +etc. + +Le paqeutage contient également les fichiers nécessaires pour +compléter certains exercices, ainsi qu'un gabarit pour composer les +solutions des autres exercices. diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/console-screenshot.pdf b/Master/texmf-dist/doc/latex/formation-latex-ul/console-screenshot.pdf Binary files differnew file mode 100644 index 00000000000..12af29c73ac --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/console-screenshot.pdf diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/emacs.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/emacs.tex new file mode 100644 index 00000000000..68e1c2331e1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/emacs.tex @@ -0,0 +1,49 @@ +\chapter{GNU Emacs} +\label{chap:emacs} + +Emacs est l'Éditeur de texte des éditeurs de texte. À l'origine un +éditeur pour les programmeurs (avec des modes spéciaux pour une +multitude de langages différents), Emacs est devenu au fil du temps un +environnement logiciel en soi dans lequel on peut réaliser une foule +de tâches différentes: rédiger des documents {\LaTeX}, interagir avec R, +SAS ou un logiciel de base de données, consulter son courrier +électronique, gérer son calendrier ou même jouer à Tetris! + +Cette annexe passe en revue les quelques commandes essentielles à +connaître pour commencer à travailler avec GNU Emacs et le mode ESS. + +\section{Mise en contexte} +\label{sec:emacs:contexte} + +Emacs est le logiciel étendard du projet GNU («\emph{GNU is not + Unix}»), dont le principal commanditaire est la \emph{Free Software + Foundation} (FSF) à l'origine de tout le mouvement du logiciel +libre. +\begin{itemize} +\item Richard M.\ Stallman, président de la FSF et grand apôtre du + libre, a écrit la première version de Emacs et il continue à ce jour + à contribuer au projet. +\item Les origines de Emacs remontent au début des années 1980, une + époque où les interfaces graphiques n'existaient pas, le parc + informatique était beaucoup plus hétérogène qu'aujourd'hui (les + claviers n'étaient pas les mêmes d'une marque d'ordinateur à une + autre) et les modes de communication entre les ordinateurs + demeuraient rudimentaires. +\item L'âge vénérable de Emacs transparaît à plusieurs endroits, + notamment dans la terminologie inhabituelle, les raccourcis clavier + non conformes aux standards d'aujourd'hui ou la manipulation des + fenêtres qui ne se fait pas avec une souris. +\end{itemize} + +Emacs s'adapte à différentes tâches par l'entremise de \emph{modes} +qui modifient son comportement ou lui ajoutent des fonctionnalités. +L'un de ces modes est ESS (\emph{Emacs Speaks Statistics}). +\begin{itemize} +\item ESS permet d'interagir avec des logiciels statistiques (en + particulier R, S+ et SAS) directement depuis Emacs. +\item Quelques-uns des développeurs de ESS sont aussi des développeurs + de R, d'où la grande compatibilité entre les deux logiciels. +\item Lorsque ESS est installé, le mode est activé automatiquement en + ouvrant dans Emacs un fichier dont le nom se termine par l'extension + \texttt{.R}. +\end{itemize} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_classe+paquetages-solution.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_classe+paquetages-solution.tex new file mode 100644 index 00000000000..0a914fe0377 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_classe+paquetages-solution.tex @@ -0,0 +1,33 @@ +\documentclass[12pt]{memoir} + \usepackage[francais]{babel} + \usepackage[autolanguage]{numprint} + \usepackage{icomma} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + +La longueur des lignes en {\LaTeX} est ajustée automatiquement en +fonction de la taille de la police de caractères de manière à ce que le +nombre de caractères par ligne demeure à peu près constant. Cela a +pour but d'améliorer la lisibilité: lorsqu'une ligne de texte est trop +longue, notre œil a plus de difficulté à suivre celle-ci de gauche à +droite. + +En passant à une classe de document recto-verso, vous remarquerez que +les marges gauche et droite ne sont pas identiques. C'est afin de +tenir compte de la marge de reliure. + +Le paquetage \textbf{babel} fournit les commandes \verb=\ier=, +\verb=\iere=, \verb=\ieme= pour écrire «premier», «première», +«deuxième» en chiffres: 1{\ier}, 1{\iere}, 36{\ieme}. + +En typographie française, on doit utiliser la virgule comme séparateur +décimal et l'espace fine comme séparateur des milliers. +\begin{displaymath} + y = 1,2x + 5, \quad x = 0, 1, \dots, \nombre{10 000}. +\end{displaymath} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_classe+paquetages.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_classe+paquetages.tex new file mode 100644 index 00000000000..8044f8ac33c --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_classe+paquetages.tex @@ -0,0 +1,31 @@ +\documentclass[10pt]{article} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + +La longueur des lignes en {\LaTeX} est ajustée automatiquement en +fonction de la taille de la police de caractères de manière à ce que le +nombre de caractères par ligne demeure à peu près constant. Cela a +pour but d'améliorer la lisibilité: lorsqu'une ligne de texte est trop +longue, notre œil a plus de difficulté à suivre celle-ci de gauche à +droite. + +En passant à une classe de document recto-verso, vous remarquerez que +les marges gauche et droite ne sont pas identiques. C'est afin de +tenir compte de la marge de reliure. + +Le paquetage \textbf{babel} fournit les commandes \verb=\ier=, +\verb=\iere=, \verb=\ieme= pour écrire «premier», «première», +«deuxième» en chiffres: 1{\ier}, 1{\iere}, 36{\ieme}. + +En typographie française, on doit utiliser la virgule comme séparateur +décimal et l'espace fine comme séparateur des milliers. +\begin{displaymath} + y = 1,2x + 5, \quad x = 0, 1, \dots, 10 000. +\end{displaymath} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_commandes-solution.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_commandes-solution.tex new file mode 100644 index 00000000000..5f85d21cb4e --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_commandes-solution.tex @@ -0,0 +1,31 @@ +\documentclass[12pt]{article} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + +%% La commande \LaTeX qui imprime le logo de LaTeX n'ayant pas +%% d'argument, il faut l'écrire sous la forme {\LaTeX} ou \LaTeX{} +%% pour éviter que l'espace qui suit ne soit avalé par la commande. +Les commandes {\LaTeX} débutent par le caractère \verb=\= et se +terminent par le premier caractère autre qu'une lettre, y compris +l'espace. Cela a pour conséquence qu'une espace immédiatement après +une commande sans argument sera \emph{avalée} par la commande. + +%% Il faut délimiter par { } la zone à laquelle la commande \bfseries +%% doit s'appliquer. +La portée d'une commande est {\bfseries limitée} à la zone entre accolades. + +%% Il faut utiliser l'environnement enumerate pour les listes +%% numérotées. L'environnement itemize sert pour les listes à puces. +\begin{enumerate} +\item L'environnement \texttt{enumerate} permet de créer une liste + numérotée. +\item Les environnements de listes sont parmi les plus utilisés en + \LaTeX. +\end{enumerate} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_commandes.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_commandes.tex new file mode 100644 index 00000000000..2303157b9a6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_commandes.tex @@ -0,0 +1,24 @@ +\documentclass[12pt]{article} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + +Les commandes \LaTeX débutent par le caractère \verb=\= et se +terminent par le premier caractère autre qu'une lettre, y compris +l'espace. Cela a pour conséquence qu'une espace immédiatement après +une commande sans argument sera \emph{avalée} par la commande. + +La portée d'une commande est \bfseries limitée à la zone entre accolades. + +\begin{itemize} +\item L'environnement \texttt{enumerate} permet de créer une liste + numérotée. +\item Les environnements de listes sont parmi les plus utilisés en + \LaTeX. +\end{itemize} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_complet-solution.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_complet-solution.tex new file mode 100644 index 00000000000..b354487398d --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_complet-solution.tex @@ -0,0 +1,141 @@ +\documentclass[11pt,article]{memoir} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + + \frenchbsetup{ItemLabeli=$>$} + +\begin{document} + +\chapter{Présentation du langage R} +\label{chap:presentation} + +\section{Bref historique} +\label{sec:presentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi <citation> et <citation> pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. \emph{De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre.} D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:presentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:presentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:presentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous Mac OS~X au démarrage de R} + \label{fig:presentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \autoref{fig:presentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_complet.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_complet.tex new file mode 100644 index 00000000000..132563cece0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_complet.tex @@ -0,0 +1,142 @@ +\documentclass[11pt,article]{memoir} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + + % \frenchbsetup{ItemLabeli=} + +\begin{document} + +\chapter{Présentation du langage R} +\label{chap:presentation} + +\section{Bref historique} +\label{sec:presentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi <citation> et <citation> pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:presentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:presentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:presentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous Mac OS~X au démarrage de R} + \label{fig:presentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \autoref{fig:presentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_demo.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_demo.tex new file mode 100644 index 00000000000..4d4d8cbd776 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_demo.tex @@ -0,0 +1,1318 @@ +\documentclass[letterpaper,11pt]{memoir} + \usepackage[utf8]{inputenc} + \usepackage{natbib,url} + \usepackage[english,francais]{babel} + \usepackage[autolanguage]{numprint} + \usepackage{amsmath,amsthm,amsfonts} + \usepackage{icomma} + \usepackage{fancyvrb} + \usepackage{soul} + + %% Police de caractères + \usepackage{mathpazo} % texte et mathématiques en Palatino + + %% Couleurs + \usepackage{xcolor} + \definecolor{comments}{rgb}{0.7,0,0} + \definecolor{shadecolor}{gray}{0} + \definecolor{link}{rgb}{0,0.4,0.6} % ~RoyalBlue de dvips + \definecolor{url}{rgb}{0.6,0,0} % rouge-brun + \definecolor{citation}{rgb}{0,0.5,0} % vert foncé + + %% Hyperliens + \usepackage{hyperref} + \hypersetup{colorlinks, linktocpage, + urlcolor=url, linkcolor=link, citecolor=citation, + bookmarksopen, bookmarksnumbered, bookmarksdepth=subsubsection, + pdfauthor={Vincent Goulet}} + \renewcommand{\figureautorefname}{figure} + \renewcommand{\tableautorefname}{tableau} + \newcommand{\subtableautorefname}{tableau} + \newcommand{\exempleautorefname}{exemple} + \newcommand{\algorithmeautorefname}{algorithme} + + \frenchbsetup{% + CompactItemize=false, % ne pas compacter les listes + ThinSpaceInFrenchNumbers=true % espace fine dans les nombres + } + + %% Environnements d'exemples et al. + \theoremstyle{plain} + \newtheorem{algorithme}{Algorithme}[chapter] + \newtheorem{thm}{Théorème}[chapter] + + \theoremstyle{definition} + \newtheorem{exemple}{Exemple}[chapter] + \newtheorem{definition}{Définition}[chapter] + \newtheorem*{astuce}{Astuce} + + \theoremstyle{remark} + \newtheorem*{remarque}{Remarque} + \newenvironment{rem}{\begin{remarque} \mbox{}}{\end{remarque}} + + %% Nouveaux environnements pour le code informatique R + \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl} + \DefineVerbatimEnvironment{Soutput}{Verbatim}{} + \DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl} + \newenvironment{Schunk}{}{} + + %% Nouvelles commandes + \newcommand{\code}[1]{\texttt{#1}} + \newcommand{\ieee}[3]{\fbox{$#1$}\hspace{2pt}\fbox{$#2$}\hspace{2pt}\fbox{$#3$}} + \newcommand{\fl}{\mathrm{fl}} + + %% Numéroter les sous-sections + \maxsecnumdepth{subsection} + + %% Sous-tableaux et figures + \newsubfloat{table} + + %% Style de la bibliographie. + \bibliographystyle{francais} + + \title{Exemple de document élaboré} + \author{Vincent Goulet} + +\begin{document} + +\frontmatter % pages liminaires + +\maketitle % production de la page titre + +\tableofcontents % production de la TdM +\cleardoublepage + +\mainmatter % corps du document + +\chapter{Arithmétique des ordinateurs} +\label{chap:ordinateurs} + +\section{Les ordinateurs ne savent pas compter} +\label{sec:ordinateurs:introduction} + +Le type de bogue le plus fréquemment rapporté dans les forums de +discussion de R a trait au fait que le logiciel ne retourne +pas le bon résultat lors d'opérations arithmétiques simples. + +On devine que les créateurs de R n'ont pas négligé une fonctionnalité +aussi fondamentale pour un langage mathématique que le calcul +arithmétique. Les supposées erreurs ci-dessus relèvent toutes de la +représentation interne des nombres dans un ordinateur et d'erreurs +d'arrondi inhérentes aux opérations arithmétiques avec ces nombres. En +effet, un des plus célèbres principes de programmation proposés par +\cite{Kernighan:style:1978} est: +\begin{center} + \label{programming_principle} + $10,0$ fois $0,1$ ne donne jamais vraiment $1,0$. +\end{center} +D'ailleurs, les auteurs des faux rapports de bogues dans +\texttt{r-help} sont invariablement renvoyés à l'\href{http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f}{entrée 7.31} de la +foire aux questions\footnote{% + \url{http://cran.r-project.org/doc/FAQ/R-FAQ.html}} % +de R. + +Pour quiconque travaille régulièrement avec un ordinateur pour faire +du calcul scientifique, connaître globalement le fonctionnement +interne d'un ordinateur peut s'avérer précieux pour les raisons +suivantes, entre autres: +\begin{itemize} +\item éviter les erreurs d'arrondi et de troncature; +\item éviter les dépassements et soupassements de capacité + (\emph{overflow} et \emph{underflow}); +\item optimiser le code informatique. +\end{itemize} + +Ce chapitre se penche sur les grands principes de l'arithmétique des +ordinateurs. En fait, les ordinateurs ne savent pas faire +d'arithmétique à proprement parler. Ils ne connaissent que deux états: +ouvert (1) et fermé (0). Nous en profiterons donc d'abord pour réviser +la conversion des nombres décimaux vers, et de, n'importe quelle base. +Après avoir, à la \autoref{sec:ordinateurs:unites}, introduit les +principales unités de mesure en informatique, nous expliquerons la +représentation interne des nombres dans un ordinateur en nous +concentrant sur la double précision. Nous pourrons ainsi justifier que +les ordinateurs ne peuvent représenter qu'un sous-ensemble des nombres +réels, d'où les erreurs d'arrondi et de troncature. La +\autoref{sec:ordinateurs:arithmetique} explique comment ces erreurs +surviennent. On y donne également quelques pistes pour éviter ou pour +diminuer l'impact de ces erreurs. Enfin, le chapitre se clôt par un +survol d'un sujet quelque peu périphérique: la représentation interne +des caractères. + + +\section{Conversion de base} +\label{sec:ordinateurs:conversion} + +La \emph{base}, dans un système de numération, est le nombre de +symboles (habituellement les chiffres) qui pourront servir à exprimer +des nombres. L'humain s'est habitué à compter en base $10$, le système +\emph{décimal}, où les symboles sont $0, 1, \dots, 9$. De nos jours, +la grande majorité des ordinateurs travaillent toutefois en base $2$, le +système \emph{binaire}. Les autres système d'usage courant, +principalement en informatique, sont l'\emph{octal} (base $8$) et +l'\emph{hexadécimal} (base $16$). Dans ce dernier système, les symboles +utilisés pour les nombres $10$--$15$ sont généralement les lettres A--F. +(C'est pourquoi l'on retrouve ces six lettres sur le pavé des +calculatrices scientifiques). + +Cette section étudie la conversion des nombres entre la base $10$ et une +autre base quelconque. + +\subsection{Notation et définitions} +\label{sec:ordinateurs:conversion:notation} + +De manière générale, soit $x$ un nombre (entier pour le moment) dans +la base de numération $b$ composé de $m$ chiffres ou symboles, c'est-à-dire +\begin{equation*} + x = x_{m-1}x_{m-2} \cdots x_1x_0, +\end{equation*} +où $0 \leq x_i \leq b - 1$. On a donc +\begin{equation} + \label{eq:ordinateurs:def_base} + x = \sum_{i = 0}^{m - 1} x_i b^i. +\end{equation} + +Lorsque le contexte ne permet pas de déterminer avec certitude la base +d'un nombre, celle-ci est identifiée en indice du nombre par un nombre +décimal. Par exemple, $10011_2$ est le nombre binaire $10011$. + +\begin{exemple} + Soit le nombre décimal $348$. Selon la notation ci-dessus, on a $x_0 = + 8$, $x_1 = 4$, $x_2 = 3$ et $b = 10$. En effet, + \begin{displaymath} + 348 = 3 \times 10^2 + 4 \times 10^1 + 8 \times 10^0. + \end{displaymath} + Ce nombre a les représentations suivantes dans d'autres bases. En binaire: + \begin{align*} + 101011100_{2} + &= 1 \times 2^8 + 0 \times 2^7 + 1 \times 2^6 \\ + &\phantom{=} + 0 \times 2^5 + 1 \times 2^4 + 1 \times 2^3 \\ + &\phantom{=} + 1 \times 2^2 + 0 \times 2^1 + 0 \times 2^0. + \end{align*} + En octal: + \begin{equation*} + 534_{8} = 5 \times 8^2 + 3 \times 8^1 + 4 \times 8^0. + \end{equation*} + En hexadécimal: + \begin{equation*} + 15\mathrm{C}_{16} = 1 \times 16^2 + 5 \times 16^1 + 12 \times 16^0. + \end{equation*} + Des représentations ci-dessus, l'hexadécimale est la plus compacte: + elle permet de représenter avec un seul symbole un nombre binaire + comptant jusqu'à quatre chiffres. C'est, entre autres, pourquoi + c'est une représentation populaire en informatique.% + \qed +\end{exemple} + +Dans un ordinateur réel (par opposition à théorique), l'espace +disponible pour stocker un nombre est fini, c'est-à-dire que $m < +\infty$. Le plus grand nombre que l'on peut représenter avec $m$ +chiffres ou symboles en base $b$ est +\begin{align*} + x_{\text{max}} + &= \sum_{i = 0}^{m - 1} (b - 1) b^i \\ + &= (b - 1) \sum_{i = 0}^{m - 1} b^i \\ + &= (b - 1) + \left( + \frac{b^m - 1}{b - 1} + \right) \\ + &= b^m - 1. +\end{align*} + +Par exemple, le plus grand nombre décimal représentable avec $m = 4$ +symboles est +\begin{equation*} + x_{\text{max}} = \nombre{9999} = \nombre{10000} - 1 = 10^4 - 1, +\end{equation*} +alors que le plus grand nombre binaire est seulement +\begin{equation*} + x_{\text{max}} = 1111 = 10000 - 1 = 2^4 - 1 = 15_{10}. +\end{equation*} + +Par une extension naturelle de ce qui précède, un nombre composé de $m +\geq 0$ symboles dans sa partie entière et $n \geq 0$ symboles dans sa +partie fractionnaire est représenté en base $b$ comme +\begin{align*} + x + &= x_{m-1}x_{m-2} \cdots x_1x_0,x_{-1}x_{-2} \cdots x_{-n} \\ + &= \sum_{i = -n}^{m - 1} x_i b^i. +\end{align*} +Le symbole qui sépare les parties entière et fractionnaire du nombre +est la \emph{séparation fractionnaire} (une virgule en français, un +point en anglais). + + +\subsection{Conversion vers une base quelconque} +\label{sec:ordinateurs:conversion:10_vers_b} + +Avant de discuter de la conversion de nombres décimaux vers une base +quelconque, il convient de définir les notions de \emph{quotient} et +de \emph{reste} d'une division. + +Le quotient est la partie entière de la division de deux entiers $a$ +et $d$; sa représentation mathématique habituelle est +\begin{equation} + \label{eq:ordinateurs:quotient} + q = \left\lfloor \frac{a}{d} \right\rfloor, +\end{equation} +où $\lfloor x \rfloor$ est la fonction qui retourne le plus grand +entier inférieur ou égal à $x$. Le reste de la division est simplement +la valeur +\begin{equation} + \label{eq:ordinateurs:remainder} + r = a - d \left\lfloor \frac{a}{d} \right\rfloor. +\end{equation} +Évidemment, on a $r \in \{0, 1, \dots, d - 1\}$. Le reste est le +résultat de l'opération modulo, notée $r = a \bmod d$. + +On remarquera que le premier chiffre en partant de la droite d'un +entier décimal est le reste de la division de ce nombre par $10$, que le +second chiffre est le reste de la division par $10$ du quotient de la +division précédente, et ainsi de suite. La conversion d'un nombre +décimal en une base $b$ implique simplement de diviser par $b$ plutôt +que par $10$ et de déterminer le symbole dans la base $b$ correspondant +au reste de chaque division. + +L'algorithme suivant reprend ses idées sous forme plus formelle et en +ajoutant le traitement de la partie fractionnaire. Nous démontrerons +plus loin qu'il n'est pas réellement nécessaire de savoir effectuer la +conversion de la partie fractionnaire d'un nombre réel. + +\begin{algorithme}[Conversion de la base $10$ vers la base $b$] + \label{algo:ordinateurs:10_vers_b} + Soit $x$ un nombre réel en base $10$. + \begin{enumerate} + \item Poser $i \leftarrow 0$ et $v \leftarrow \lfloor x \rfloor$. + \item Répéter les étapes suivantes jusqu'à ce que $v = 0$: + \begin{enumerate} + \item Poser $d_i \leftarrow v \bmod b$ et trouver $x_i$, le + symbole dans la base $b$ correspondant à $d_i$; + \item Poser $v \leftarrow \lfloor v/b \rfloor$; + \item Poser $i \leftarrow i + 1$. + \end{enumerate} + \item Poser $i \leftarrow 1$ et $v \leftarrow x - \lfloor x + \rfloor$. + \item Répéter les étapes suivantes jusqu'à ce que $v = 0$ ou que $i + = n$ (le nombre voulu ou maximal de chiffres après la séparation + fractionnaire): + \begin{enumerate} + \item Poser $d_{-i} \leftarrow \lfloor bv \rfloor$ et trouver $x_{-i}$, le + symbole dans la base $b$ correspondant à $d_{-i}$; + \item Poser $v \leftarrow bv - d_{-i}$; + \item Poser $i \leftarrow i + 1$. + \end{enumerate} + \item Retourner + \begin{displaymath} + x_b = x_{m-1}x_{m-2} \cdots x_1x_0,x_{-1}x_{-2} \cdots x_{-n}. + \end{displaymath} + \end{enumerate} +\end{algorithme} + +\begin{exemple} + \label{ex:ordinateurs:10_vers_b} + Soit le nombre décimal $23,31$ que l'on convertit en binaire (base + $2$) avec un maximum de cinq chiffres après la séparation + fractionnaire ($n = 5$). Le \autoref{tab:ordinateurs:10_vers_b} + montre le processus en suivant les étapes de + l'\autoref{algo:ordinateurs:10_vers_b}. On obtient le + résultat final en combinant la dernière colonne du + \autoref{tab:ordinateurs:10_vers_b:a} lue de bas en haut avec la + dernière colonne du \autoref{tab:ordinateurs:10_vers_b:b} lue de + haut en bas. Ainsi, la représentation binaire du $23,31$ limitée à + cinq chiffres après la virgule est $10111,01001$. + + \begin{table} + \caption{Conversion du nombre décimal $23,31$ en binaire.} + \label{tab:ordinateurs:10_vers_b} + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie entière} + \label{tab:ordinateurs:10_vers_b:a} + \begin{tabular*}{\linewidth}{crrcc} + \toprule + $i$ & \multicolumn{1}{c}{$v$} & $\lfloor v/2 \rfloor$ & $v \bmod 2$ & $x_i$ \\ + \midrule + $0$ & $23$ & $11$ & $1$ & $1$ \\ + $1$ & $11$ & $5$ & $1$ & $1$ \\ + $2$ & $5$ & $2$ & $1$ & $1$ \\ + $3$ & $2$ & $1$ & $0$ & $0$ \\ + $4$ & $1$ & $0$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \hfill + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie fractionnaire} + \label{tab:ordinateurs:10_vers_b:b} + \begin{tabular*}{\linewidth}{ccccc} + \toprule + $i$ & $v$ & $2v$ & $\lfloor 2v \rfloor$ & $x_{-i}$ \\ + \midrule + $1$ & $0,31$ & $0,62$ & $0$ & $0$ \\ + $2$ & $0,62$ & $1,24$ & $1$ & $1$ \\ + $3$ & $0,24$ & $0,48$ & $0$ & $0$ \\ + $4$ & $0,48$ & $0,96$ & $0$ & $0$ \\ + $5$ & $0,96$ & $1,92$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \end{table} + \qed +\end{exemple} + +\begin{exemple} + \label{ex:ordinateurs:10_vers_b:bis} + Soit de nouveau la conversion de $23,31$ en binaire avec une partie + fractionnaire d'au plus cinq chiffres. En suivant les étapes de la + remarque ci-dessus, on a: + \begin{enumerate} + \item $23,31 \times 2^5 = 23,31 \times 32 = 745,92$; + \item la représentation binaire de $745 = 2^9 + 2^7 + 2^6 + 2^5 + + 2^3 + 1$ est $1011101001$; + \item enfin, en déplaçant la virgule de cinq positions vers la + gauche, on obtient $10111,01001$, comme à + l'\autoref{ex:ordinateurs:10_vers_b}. + \end{enumerate} + \qed +\end{exemple} + +On tire une conclusion intéressante de la procédure ci-dessus. S'il +existe un entier $k \leq n$ tel que la partie fractionnaire de $x$ est +un multiple de $1/b^k$, alors la multiplication de $x$ par $b^k$ +résultera en un entier. Par conséquent, la représentation de $x$ en +base $b$ aura une partie fractionnaire de longueur finie. Ainsi, pour +obtenir une représentation binaire finie, la partie fractionnaire d'un +nombre réel doit être un multiple de $\frac{1}{2}, \frac{1}{4}, +\frac{1}{8}, \dots$ Ce n'était pas le cas à +l'\autoref{ex:ordinateurs:10_vers_b:bis} (la partie fractionnaire +étant $0,31$), d'où la nécessité de limiter le nombre de chiffres +après la virgule. + +\subsection{Conversion en décimal} +\label{sec:ordinateurs:conversion:b_vers_10} + +La conversion d'un nombre en base $b$ vers la base $10$ repose +essentiellement sur la définition \eqref{eq:ordinateurs:def_base}, +mais avec chaque symbole $x_i$ remplacé pour son équivalent décimal. +Un algorithme de conversion est le suivant. + +\begin{algorithme}[Conversion de la base $b$ vers la base $10$] + \label{algo:ordinateurs:b_vers_10} + Soit $x$ + \begin{displaymath} + x_b = x_{m-1}x_{m-2} \cdots x_1x_0,x_{-1}x_{-2} \cdots x_{-n} + \end{displaymath} + un nombre réel en base $b$. + \begin{enumerate} + \item Poser $x \leftarrow 0$ et $y \leftarrow 0$. + \item Pour $i = m - 1, m - 2, \dots, 0$, faire les étapes suivantes: + \begin{enumerate} + \item Trouver $d_i$, le nombre décimal correspondant au symbole + $x_i$; + \item Poser $x \leftarrow x b + d_i$. + \end{enumerate} + \item Pour $i = -n, -n + 1, \dots, -1$, faire les étapes suivantes: + \begin{enumerate} + \item Trouver $d_i$, le nombre décimal correspondant au symbole + $x_i$; + \item Poser $y \leftarrow (y + d_i)/b$. + \end{enumerate} + \item Retourner $x + y$. + \end{enumerate} +\end{algorithme} + +On peut, ici aussi, aisément éviter de devoir convertir la partie +fractionnaire. Il suffit de déplacer la virgule de $n$ positions vers +la droite dans le nombre $x_b$ de manière à obtenir un entier, de +convertir ce nombre en décimal avec les étapes 1 et 2 de +l'\autoref{algo:ordinateurs:b_vers_10} et, finalement, de +diviser le nombre obtenu par $b^n$. + +\begin{exemple} + \label{ex:ordinateurs:b_vers_10} + On convertit le nombre binaire $101011,011$ en décimal. Le + \autoref{tab:ordinateurs:b_vers_10} illustre le processus de + conversion selon l'\autoref{algo:ordinateurs:b_vers_10} (le chiffre + en surbrillance est celui traité lors de chaque étape de + l'algorithme). Le résultat final est $43,375$. + + De manière équivalente, mais plus simple, on peut déplacer la + virgule de trois positions vers la droite pour obtenir l'entier + binaire $101011011$. Ce nombre est $2^8 + 2^6 + 2^4 + 2^3 + 2 + 1 = + 347$ en décimal. Enfin, $347 \div 2^3 = 43,375$.% + \qed + + \begin{table} + \caption{Conversion du nombre binaire $101011,011$ en décimal} + \label{tab:ordinateurs:b_vers_10} + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie entière} + \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}ccr} + \toprule + $i$ & $d_i$ & $x$ \\ + \midrule + $5$ & \texthl{$1$}$01011,011$ & $ 1$ \\ + $4$ & $1$\texthl{$0$}$1011,011$ & $ 2$ \\ + $3$ & $10$\texthl{$1$}$011,011$ & $ 5$ \\ + $2$ & $101$\texthl{$0$}$11,011$ & $10$ \\ + $1$ & $1010$\texthl{$1$}$1,011$ & $21$ \\ + $0$ & $10101$\texthl{$1$}$,011$ & $43$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \hfill + \begin{minipage}[t]{0.45\linewidth} + \subcaption{partie fractionnaire} + \begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}ccD{.}{,}{1.3}} + \toprule + $i$ & $d_{-i}$ & y \\ + \midrule + $3$ & $101011,01$\texthl{$1$} & 0.5 \\ + $2$ & $101011,0$\texthl{$1$}$1$ & 0.75 \\ + $1$ & $101011,$\texthl{$0$}$11$ & 0.375 \\ + \bottomrule + \end{tabular*} + \end{minipage} + \end{table} +\end{exemple} + + +\begin{exemple} + Soit le nombre hexadécimal $\mathrm{AC}2,3\mathrm{D}8$. On peut le + convertir en base $10$ à partir de la définition: + \begin{align*} + \mathrm{AC}2,3\mathrm{D}8 + &= 10 \times 16^2 + 12 \times 16 + 2 + 3 \times 16^{-1} + 13 + \times 16^{-2} + 8 \times 16^{-3} \\ + &= \nombre{2754,240234375}. + \end{align*} + \qed +\end{exemple} + + +\subsection{Conversion avec des bases générales} +\label{sec:ordinateurs:conversion:bases_generales} + +Il existe de nombreuses bases de numération d'usage courant où chaque +symbole est (potentiellement) exprimé dans une base différente. On a +qu'à penser à l'heure ou à l'ensemble du système de mesure impérial. +Or, il peut s'avérer utile de savoir convertir de et vers une base +quelconque. Le matériel de cette section se retrouve dans très peu +d'ouvrages d'analyse numérique ou de statistique numérique. Pourtant, +il existe quelques applications intéressantes de la conversion de et +vers des bases générales, comme nous le verrons. + +On peut généraliser la notion de nombre présentée dans les sections +précédentes à une collection de «symboles», chacun dans une base +différente. On restreint la discussion aux entiers sans perte de +généralité. On a donc +\begin{displaymath} + x = x_{m-1}x_{m-2} \cdots x_1x_0, +\end{displaymath} +où $x_{m - 1}$ est un nombre en base $b_{m - 1}$, $x_{m - 2}$ est un +nombre en base $b_{m - 2}$, etc. Nous dirons que le nombre $x$ est +exprimé en base $[b_{m - 1}\; b_{m - 2}\; \dots\; b_0]$. On a alors +\begin{equation} + \label{eq:ordinateurs:def_base_gen} + x = \sum_{i = 0}^{m - 1} x_i \prod_{j = -1}^{i - 1} b_j, +\end{equation} +avec $b_{-1} = 1$. + +Les algorithmes de conversion \ref{algo:ordinateurs:10_vers_b} et +\ref{algo:ordinateurs:b_vers_10} demeurent essentiellement valides +ici. Il suffit de remplacer chaque mention de $b$ par $b_i$. + +\begin{exemple} + Le jour de l'année et l'heure du jour est un «nombre» exprimé en + base $[365\; 24\; 60\; 60]$. En utilisant directement + l'équation~\eqref{eq:ordinateurs:def_base_gen}, le nombre de + secondes correspondant à 1~jour, 2~heures, 33~minutes et 20~secondes + est: + \begin{align*} + 1 \text{ j } 2 \text{ h } 33 \text{ min } 20 \text{ sec} + &= 1 \times (24)(60)(60) + 2 \times (60)(60) + 33 \times 60 + 20 \\ + &= \nombre{95600} \text{ secondes}. + \end{align*} + Si l'on fait la conversion en sens inverse, le nombre de jours, + heures, minutes et secondes correspondant à \nombre{91492} secondes + est, en utilisant l'\autoref{algo:ordinateurs:10_vers_b} avec la + base $[365\; 24\; 60\; 60]$: 1~jour, 1~heure, 24~minutes et + 52~secondes (voir le \autoref{tab:ordinateurs:10_vers_generale} pour + les calculs). + \begin{table} + \caption{Conversion du nombre décimal $\nombre{91492}$ dans la + base générale $[365\; 24\; 60\; 60]$.} + \label{tab:ordinateurs:10_vers_generale} + \centering + \begin{tabular}{>{$}c<{$}>{$}r<{$}>{$}r<{$}>{$}r<{$}>{$}c<{$}>{$}c<{$}} + \toprule + i & + \multicolumn{1}{c}{$v$} & + \multicolumn{1}{c}{$b_i$} & + \lfloor v/b_i \rfloor & v \bmod b_i & x_i \\ + \midrule + 0 & \nombre{91492} & 60 & \nombre{1524} & 52 & 52 \\ + 1 & \nombre{1524} & 60 & 25 & 24 & 24 \\ + 2 & 25 & 24 & 1 & 1 & 1 \\ + 3 & 1 & 365 & 0 & 1 & 1 \\ + \bottomrule + \end{tabular} + \end{table} + \qed +\end{exemple} + +Les bases générales sont particulièrement utiles pour assigner ou +extraire les éléments d'une matrice ou d'un tableau dans un ordre non +séquentiel. Typiquement, l'index de l'élément à traiter est le +résultat d'un calcul. L'exemple suivant illustre cette idée. + +\begin{exemple} + \label{ex:ordinateurs:position_dans_matrice} + Soit $\mathbf{A}$ une matrice $4 \times 5$ que l'on suppose remplie en + ordre lexicographique (par ligne). Il est simple de déterminer, ici, + que le 14{\ieme} élément est $a_{34}$. Or, on observe que la + conversion du nombre $14 - 1 = 13$ dans la base $[4\; 5]$ donne : + \begin{align*} + 13 \div 5 &= 2 \text{ reste } 3 \quad\Rightarrow\quad x_0 = 3 \\ + 2 \div 4 &= 0 \text{ reste } 2 \quad\Rightarrow\quad x_1 = 2, + \end{align*} + soit le «nombre» $(2, 3)$. En additionnant $1$ à ce résultat, on + obtient précisément la position du 14{\ieme} élément dans la + matrice. Les opérations $-1$ et $+1$ sont rendues nécessaires par + le fait que les lignes et les colonnes sont numérotées à partir de + $1$, alors que les systèmes de numération débutent à $0$.% + \qed +\end{exemple} + + + +\section{Unités de mesure} +\label{sec:ordinateurs:unites} + +Les ordinateurs que nous utilisons couramment fonctionnent en base $2$. +La plus petite quantité d'information qu'un ordinateur peut traiter +est un \emph{bit} (compression de l'anglais \emph{binary digit}). En +informatique, un bit est égal à \fbox{$0$} ou à \fbox{$1$}. Le symbole du +bit est b. + +Un \emph{octet} (\emph{byte}) est un groupe de huit bits. Son symbole +est o ou B. L'octet est l'unité de mesure la plus fréquemment utilisée +en informatique, en grande partie parce que le codage d'un caractère +dans la plupart des langues occidentales requiert un octet; voir la +\autoref{sec:ordinateurs:codage}. Les termes pour de plus grandes +quantités de bits ou d'octets utilisent généralement les préfixes +usuels du système international d'unités. Par exemple: +\begin{itemize} +\item $1$ kilooctet (ko) est $2^{10} = \nombre{1 024}$ octets; +\item $1$ mégaoctet (Mo) est $2^{20} = \nombre{1 048 576}$ octets; +\item $1$ gigaoctet (Go) est $2^{30} = \nombre{1 073 741 824}$ octets. +\end{itemize} +On voit que cette pratique fort répandue entraîne des distorsions par +rapport aux définitions usuelles de kilo, méga, giga, etc., et que +cette distorsion s'amplifie au fur et à mesure que l'on grimpe dans +l'échelle des tailles d'objets. Pour cette raison, on a défini les +préfixes kibi, mébi, gibi, etc., mais ceux-ci demeurent peu utilisés à +ce jour. + +Dans l'industrie de l'informatique, on joue beaucoup avec les unités +pour montrer son produit sous un jour favorable. Deux exemples: +\begin{enumerate} +\item Les fournisseurs d'accès Internet expriment la vitesse de + téléchargement en Mb/sec, alors que la taille des fichiers est + généralement affichée en octets. Il faut donc diviser par 8 la + vitesse annoncée pour avoir une idée plus juste du temps requis pour + télécharger un fichier. +\item Les fabricants de disques durs divisent la capacité réelle de + leurs disques par $10^9$ pour l'exprimer en gigaoctets. Ainsi, un + disque dont la capacité annoncée est de $100$~Go ne peut contenir, en + fait, que $100 \times 10^9 \div 2^{30} = 93,132$~Go de données. + Cette confusion serait éliminée si les fabricants affichaient plutôt + une capacité de $93,132$ gibioctets. Moins vendeur\dots +\end{enumerate} + + + +\section{Représentation en virgule flottante} +\label{sec:ordinateurs:ieee} + +Cette section décrit la manière standard de représenter les nombres +réels dans les ordinateurs d'usage courant. Il est utile de +connaître les grandes lignes afin de comprendre pourquoi les nombres +réels n'ont pas tous une représentation exacte dans un ordinateur et +comment surviennent et se propagent les erreurs d'arrondi. L'étude du +sujet est également intéressante en soi pour constater comment les +ingénieurs et les informaticiens sont parvenus à stocker un maximum +d'information dans un espace limité. + +Tel que mentionné précédemment, la capacité de stockage d'un +ordinateur, bien que vaste de nos jours, n'en demeure pas moins +limitée. Par conséquent, les nombres y sont représentés par un +ensemble de $m$ bits. Habituellement, $m$ est un multiple de $2$ et sa +valeur détermine le type de nombre. Par exemple, des définitions +usuelles sont $m = 2^4 = 16$ pour un entier, $m = 2^5 = 32$ pour un +nombre réel en simple précision (\emph{float} dans plusieurs langages +de programmation) et $m = 2^6 = 64$ pour un nombre réel en double +précision (\emph{double}). + +Il existe deux grandes façons de représenter les nombres (réels) à +l'aide de $m$ bits. +\begin{description} +\item[Virgule fixe] Dans cette représentation, la position de la + virgule dans le nombre est prédéterminée et, par conséquent, n'a pas + besoin d'être conservée en mémoire. On réserve alors $m_e$ positions + pour la partie entière et $m_f$ pour la partie fractionnaire (avec + $m = m_e + m_f$). La représentation en virgule fixe est + particulièrement utile dans les applications financières. +\item[Virgule flottante] Dans la représentation des nombres en virgule + flottante, celle-ci peut être placée n'importe où dans le nombre. + L'étendue de cette représentation est beaucoup plus grande que la + virgule fixe, mais ceci au détriment de la précision puisque + quelques bits doivent être réservés pour stocker la position de la + virgule dans le nombre. +\end{description} +La représentation en virgule flottante est celle utilisée dans les +applications scientifiques et celle sur laquelle nous nous concentrons +dans la suite. + +La représentation en virgule flottante est analogue à la notation +scientifique. Le nombre réel $x$ est entièrement défini par un bit de +signe $S$, un exposant positif $E$ et une mantisse $M$ tel que +\begin{equation} + \label{eq:ordinateurs:def_floating-point} + x = (-1)^S \times B^{E - e} \times M, +\end{equation} +où $B$ est la base de la représentation et $e$ est un entier +prédéterminé appelé le décalage, ou le biais, de l'exposant. Le +recours au décalage facilite les calculs internes et évite de devoir +réserver un autre bit pour le signe de l'exposant en le stockant sous +forme non signée (c'est-à-dire sous forme d'entier positif). + +La norme IEEE~754 définit la manière standard de représenter les +nombres en virgule flottante dans les ordinateurs \citep[][pour une +excellente présentation]{IEEE:754,Wikipedia:IEEE754}. En premier lieu, +la norme stipule que la base dans la représentation est $B = 2$. Ceci +est implicite et n'est pas stocké où que ce soit dans l'ordinateur. En +second lieu, la norme suppose que, pour les nombres dits +\emph{normalisés}, la mantisse est toujours de la forme $M = 1,F$, où +$F$ est un entier binaire. Le bit à gauche de la virgule est appelé le +\emph{bit caché} puisqu'il est lui aussi implicite et non stocké dans +l'ordinateur. + +Nous décrivons plus en détail la norme pour les nombres réels en +\emph{double précision} puisque c'est le type avec lequel R travaille +toujours\footnote{% + \label{pg:arithmetique:entiers} Il est possible de créer des vrais + entiers dans R en ajoutant un suffixe \code{L} à un nombre entier. + Ainsi, \code{1L} est un nombre entier dans le sens où + \code{is.integer(1L)} est \code{TRUE}. Cela est relativement peu + utilisé en programmation normale.}. % +Tout d'abord, un nombre en double précision est stocké dans un mot de +$m = 64$~bits (8~octets) divisé ainsi de gauche à droite: $m_S = 1$ bit +pour le signe, $m_E = 11$ bits pour l'exposant et $m_F = 52$ bits pour +la partie fractionnaire de la mantisse. Le premier bit du mot utilisé +pour le signe est appelé le \emph{bit fort}. Voir la +\autoref{fig:ordinateurs:double} pour une représentation +schématique. + +\begin{figure} + \centering + \begin{equation*} + \underbrace{ + \underbrace{\fbox{\hspace{0.5pt} $S$ \hspace{0.5pt}}}_{m_S = 1} + \hspace{1pt} + \underbrace{\fbox{\hspace{17.5pt} $E$ \hspace{17.5pt}}}_{m_E = 11} + \hspace{1pt} + \underbrace{\fbox{\hspace{78pt} $F$ \hspace{78pt}}}_{m_F = 52}% + }_{m = 64} + \end{equation*} + \caption{Représentation schématique d'un nombre en double précision + dans la norme IEEE~754.} + \label{fig:ordinateurs:double} +\end{figure} + +On remarque que le bit caché confère à la mantisse une longueur de mot +effective (ou précision) de 53~bits. + +Le décalage est $e = 2^{m_e - 1} - 1 = 2^{10} - 1 = \nombre{1023}$. +Avec une longueur de mot de 11~bits, les valeurs possibles de $E$ vont +de $0$ à $2^{11} - 1 = \nombre{2047}$. Cependant, les valeurs $0$ et +$\nombre{2047}$ sont réservées pour des usages spéciaux; voir le +\autoref{tab:ordinateurs:special_values}. Par conséquent, les +valeurs possibles de l'exposant (une fois décalé) pour les nombres en +double précision vont de $-\nombre{1022}$ à $\nombre{1023}$. + +\begin{table} + \caption{Valeurs spéciales dans la norme IEEE~754} + \label{tab:ordinateurs:special_values} + \begin{tabular}{crccc} + \toprule + $S$ & + \multicolumn{1}{c}{$E$} & + $F$ & Représentation binaire & Valeur spéciale \\ + \midrule + $0$ & $0$ & $0$ & + \ieee{0}{00000000000}{00 \cdots 00} & $0$ \\ + $1$ & $0$ & $0$ & + \ieee{1}{00000000000}{00 \cdots 00} & $-0$ \\ + $0$ & $\nombre{2047}$ & $0$ & + \ieee{0}{11111111111}{00 \cdots 00} & $+\infty$ \\ + $1$ & $\nombre{2047}$ & $0$ & + \ieee{1}{11111111111}{00 \cdots 00} & $-\infty$ \\ + $0 \text{ ou } 1$ & $\nombre{2047}$ & $F \neq 0$ & + \ieee{$S$}{11111111111}{\hspace{1.2em} $F$ \hspace{1.2em}} & + \code{NaN}$^a$ \\ + \bottomrule + \end{tabular} \\ + $^a$ \emph{Not a number}, par exemple $\frac{0}{0}$ + ou $\frac{\infty}{\infty}$. +\end{table} + +\begin{exemple} + Tel qu'expliqué à la + \autoref{sec:ordinateurs:conversion:10_vers_b}, le nombre + $\frac{1}{2}$ possède une représentation binaire exacte: + \begin{align*} + \frac{1}{2} + &= 2^{-1} \\ + &= (-1)^0 \times 2^{\nombre{1022} - \nombre{1023}} \times 1,0. + \end{align*} + Puisque la représentation de l'exposant est $\nombre{1022}_{10} = + 1111111110_2$, la représentation interne de $\frac{1}{2}$ selon la + norme IEEE~754 est + \begin{center} + \ieee{0}{01111111110}{00 \cdots 00}. + \end{center} + + En revanche, le nombre $\frac{1}{10}$ n'a pas une représentation + binaire finie. En utilisant + l'\autoref{algo:ordinateurs:10_vers_b}, on trouve (le côté + droit de l'égalité étant en binaire): + \begin{align*} + \frac{1}{10} + &= 0,0001100110011001100110011001\dots \\ + &= 2^{-4} \times 1,1001100110011001\dots \\ + &= (-1)^0 \times 2^{\nombre{1019} - \nombre{1023}} \times + 1,1001100110011001\dots + \end{align*} + Or, $\nombre{1019}_{10} = 1111111011_2$, d'où la représentation + interne finie de $\frac{1}{10}$ est + \begin{center} + \ieee{0}{01111111011}{1001 \cdots 1001}. + \end{center} + Si l'on reconvertit ce nombre en décimal, on obtient + \begin{equation*} + 2^{-4} \times + \left( + 1 + \sum_{k = 0}^{12} (2^{-4k - 1} + 2^{-4k - 4}) + \right), + \end{equation*} + un nombre près de, mais pas exactement égal à, $\frac{1}{10}$ (le + programme de calcul en multiprécision \code{bc} donne + $0,09999999999999999166$). Dès lors, la multiplication de ce nombre + par $10$ ne donnera pas $1$. Voilà qui justifie le principe de + programmation énoncé à la page \pageref{programming_principle}.% + \qed +\end{exemple} + +Les principales caractéristiques des nombres en double précision sont +les suivantes. +\begin{enumerate} +\item Soit $x_{\text{max}}$ le plus grand nombre représentable. Parce + que l'exposant $E = \nombre{2047}$ est réservé, on a + \begin{align*} + x_{\text{max}} + &= \ieee{0}{11111111110}{11 \cdots 11} \\ + &= (-1)^0 \times 2^{\nombre{1023}} \times 1,11\cdots11 \\ + &= 2^{\nombre{1023}} \times (2 - 2^{-52}) \\ + &= \nombre{1,797693} \times 10^{308}. + \end{align*} +\item Soit $x_{\text{min}}$ le plus petit nombre normalisé + représentable. Parce que l'exposant $E = 0$ est réservé, on a + \begin{align*} + x_{\text{min}} + &= \ieee{0}{00000000001}{00 \cdots 00} \\ + &= (-1)^0 \times 2^{\nombre{-1022}} \times 1,00\cdots00 \\ + &= 2^{\nombre{-1022}} \\ + &= \nombre{2,225074} \times 10^{-308}. + \end{align*} + Afin de rendre la transition vers $0$ moins abrupte, la norme + IEEE~754 définit également des nombres \emph{dénormalisés}. Ceux-ci + sont identifiés par $E = 0$ et une partie fractionnaire $F$ non + nulle. Cependant, par définition, les nombres dénormalisés ont $E - + e = -\nombre{1022}$ et leur bit caché est $0$. Par conséquent, le + plus petit nombre dénormalisé est stocké sous la forme + \begin{equation*} + \ieee{0}{00000000000}{00 \cdots 01} + \end{equation*} + et sa valeur est + \begin{align*} + x_{\text{min}} + &= (-1)^0 \times 2^{\nombre{-1022}} \times 0,00\cdots01 \\ + &= 2^{\nombre{-1022}} \times 2^{-52} \\ + &= 2^{-\nombre{1074}} \\ + &= \nombre{4,940656} \times 10^{-324}. + \end{align*} +\item On a la même étendue pour les nombres négatifs, soit + \begin{gather*} + [\nombre{-1,797693} \times 10^{308},\, + \nombre{-2,225074} \times 10^{-308}] \\ + \intertext{ou} + [\nombre{-1,797693} \times 10^{308},\, + \nombre{-4,940656} \times 10^{-324}]. + \end{gather*} + en considérant les nombres dénormalisés. +\item Soit $\varepsilon$ la plus petite valeur tel que $1 + + \varepsilon \neq 1$ dans la représentation en virgule flottante. + Cette valeur est appelée l'\emph{epsilon de la machine} ou la + \emph{précision de la machine}. Or, puisque + \begin{equation*} + 1 = (-1)^0 \times 2^0 \times 1,00\cdots00, + \end{equation*} + le nombre suivant est + \begin{equation*} + (-1)^0 \times 2^0 \times 1,00\cdots01. + \end{equation*} + Par conséquent, on a $\varepsilon = 2^{-52} = \nombre{2,220446} + \times 10^{-16}$. +\item Tout nombre $x$ représente en fait un intervalle de + $\mathbb{R}$. Par exemple, tout nombre dans l'intervalle $[1, 1 + + \varepsilon)$ est représenté par le nombre $1$ dans l'ordinateur. +\item On a un ensemble fini de nombres pour représenter $\mathbb{R}$. + Or, cet ensemble est plus dense près de $0$ que pour les grandes + valeurs. En effet, le nombre suivant $x_{\text{min}}$ est + \begin{align*} + x_{\text{min}}^+ + &= (1 + \varepsilon) \times 2^{-\nombre{1022}} \\ + &= x_{\text{min}} + \varepsilon \times 2^{-\nombre{1022}} \\ + &= x_{\text{min}} + 2^{-\nombre{1074}}, \\ + \intertext{alors que le nombre précédant $x_{\text{max}}$ est} + x_{\text{max}}^- + &= (2 - 2^{-52} - \varepsilon) \times 2^{\nombre{1023}} \\ + &= x_{\text{max}} - \varepsilon \times 2^{\nombre{1023}} \\ + &= x_{\text{max}} - 2^{971}. + \end{align*} + L'écart entre les deux plus petits nombres représentables est donc de + $2^{-\nombre{1024}} \approx 10^{-324}$, alors que celui entre les deux plus + grands est de $2^{971} \approx 10^{292}$! +\end{enumerate} + +Tout calcul impliquant un nombre $x > x_{\text{max}}$ ($x < +-x_{\text{max}}$) entraîne un \emph{dépassement de capacité}. +Habituellement, cela entraîne l'arrêt immédiat des calculs et un +résultat de $+\infty$ ($-\infty$). À l'autre bout du spectre, un +calcul impliquant un nombre $x < x_{\text{min}}$ entraîne un +\emph{soupassement de capacité} et le résultat est habituellement +considéré égal à $0$. + +R conserve dans une liste nommée \code{.Machine} les +valeurs mentionnées ci-dessus --- ainsi que plusieurs autres --- pour +l'architecture de l'ordinateur courant. Par exemple, on confirme les +valeurs de $\varepsilon_m$, $x_{\text{min}}$, $x_{\text{max}}$, $B$, +$m_f$ et $m_e$, dans l'ordre, pour l'architecture x86: +\begin{Schunk} +\begin{Sinput} +> .Machine[c(1, 3:6, 11)] +\end{Sinput} +\begin{Soutput} +$double.eps +[1] 2.220446e-16 + +$double.xmin +[1] 2.225074e-308 + +$double.xmax +[1] 1.797693e+308 + +$double.base +[1] 2 + +$double.digits +[1] 53 + +$double.exponent +[1] 11 +\end{Soutput} +\end{Schunk} + + + +\section{Éléments d'arithmétique en virgule flottante} +\label{sec:ordinateurs:arithmetique} + +La section précédente expliquait pourquoi les nombres stockés dans un +ordinateur ne sont pas toujours ceux que l'on croit --- ou que l'on +voudrait. Puisque l'ordinateur ne peut représenter tous les nombres +réels, toute opération arithmétique avec des nombres en virgule +flottante implique une erreur d'arrondi ou de troncature (selon +l'architecture de l'ordinateur) dont il importe de tenir compte lors +de la mise en oeuvre de certains algorithmes. Cette section présente +quelques grands principes d'arithmétique en virgule flottante ainsi +que de bons usages pour minimiser les erreurs d'arrondi. Consulter les +ouvrages +\cite{Monahan:numstat:2001,Burden:numerical:2011,Knuth:ACP:vol2:1997}, +entre autres, pour une discussion plus complète de ce vaste sujet. + +Aux fins de cette section, on note $\fl(x)$ la représentation en +virgule flottante du nombre nombre $x$ et l'on définit la +représentation simplifiée +\begin{equation} + \label{eq:ordinateurs:fl(x)} + \fl(x) = (-1)^S \times 10^E \times 0,F, +\end{equation} +où $F$ compte cinq chiffres significatifs, dont le dernier est arrondi. +Le \autoref{tab:arithmetic:simplified} fournit quelques exemples. + +\begin{table} + \caption{Représentation en virgule flottante simplifiée} + \label{tab:arithmetic:simplified} + \centering + \begin{tabular}{r@{,}lr@{,}l} + \toprule + \multicolumn{2}{c}{$x$} & + \multicolumn{2}{c}{$\fl(x)$} \\ + \midrule + $2$&$5$ & $0$&$25000 \times 10^1$ \\ + $-42$&$182$ & $-0$&$42182 \times 10^2$ \\ + $0$&$214356$ & $0$&$21436 \times 10^0$ \\ + \bottomrule + \end{tabular} +\end{table} + +\begin{rem} + Dans la norme IEEE~754, les règles d'arrondi de base sont: + \begin{enumerate} + \item arrondir à la valeur la plus près ($0,14$ devient $0,1$ et + $\nombre{0,16}$ devient $0,2$); + \item arrondir un nombre exactement à mi-chemin au nombre avec un + dernier chiffre significatif pair ou nul ($0,05$ devient $0,0$ + alors que $\nombre{0,15}$ devient $0,2$). + \end{enumerate} +\end{rem} + + +\subsection{Erreurs d'arrondi ou de troncature} +\label{sec:ordinateurs:arithmetique:erreurs} + +Lors de l'addition et de la soustraction de nombres en virgule +flottante, on rend les exposants égaux en déplaçant les bits de la +mantisse du plus petit nombre vers la droite. Il en résulte une perte +de bits significatifs et donc une \emph{erreur d'arrondi}. Dans les +cas extrêmes où les deux opérandes sont de grandeur très différente, +le plus petit opérande devient nul suite à la perte de tous ses bits +significatifs. + +La situation pour la multiplication et la division est quelque peu +différente, mais la source d'erreur d'arrondi demeure la même. + +À toute fin pratique, tout calcul fait naître de l'erreur d'arrondi et +celle-ci augmente avec le nombre d'opérations. Les quelques principes +de programmation ci-dessous, lorsque suivis par le programmeur prudent +et consciencieux, permettent d'atténuer l'impact de l'erreur +d'arrondi. + +\begin{enumerate} +\item L'addition et la soustraction en virgule flottante ne sont pas + associatives. Additionner les nombres en ordre croissant de grandeur + afin d'accumuler des bits significatifs. +\item Éviter de soustraire un petit nombre d'un grand, ou alors le + faire le plus tard possible dans la chaîne des calculs. +\item Pour calculer une somme alternée, additionner tous les termes + positifs et tous les termes négatifs, puis faire la soustraction. +\item Multiplier et diviser des nombres d'un même ordre de grandeur. + Si $x$ et $y$ sont presque égaux, le calcul $x/y$ sera plus précis + en virgule flottante que $y^{-1} x$. +\end{enumerate} + +Les exemples ci-dessous illustrent ces principes. + +\begin{exemple} + Soit $x = 7$, $y = 4$ et $z = \nombre{100000}$. Dans la + représentation simplifiée \eqref{eq:ordinateurs:fl(x)}, on a $\fl(x) + = 0,70000 \times 10^1$, $\fl(y) = 0,40000 \times 10^1$ et $\fl(z) = + 0,10000 \times 10^6$. Or, $x + y + z = \nombre{100011}$ et + \begin{align*} + [\fl(x) + \fl(y)] + \fl(z) + &= (0,70000 \times 10^1 + 0,40000 \times 10^1) + + 0,10000 \times 10^6 \\ + &= 0,11000 \times 10^2 + 0,10000 \times 10^6 \\ + &= 0,00001 \times 10^6 + 0,10000 \times 10^6 \\ + &= 0,10001 \times 10^6, \\ + \intertext{soit un résultat raisonnablement précis. Cependant,} + \fl(x) + [\fl(y) + \fl(z)] + &= 0,70000 \times 10^1 + + (0,00000 \times 10^6 + 0,10000 \times 10^6) \\ + &= 0,00000 \times 10^6 + 0,10000 \times 10^6 \\ + &= 0,10000 \times 10^6. + \end{align*} + En effectuant les opérations dans un mauvais ordre, on obtient $x + + y + z = z$ même si $x \neq 0$ et $y \neq 0$. % + \qed +\end{exemple} + +\begin{exemple} + Soit $x = 7$, $y = \nombre{100006}$ et $z = \nombre{100002}$. On a + $z - y - x = -11$. Or, + \begin{align*} + \fl(z) - [\fl(y) + \fl(x)] + &= 0,10000 \times 10^6 + - (0,10000 \times 10^6 + 0,00000 \times 10^6) \\ + &= 0,00000 \times 10^0, + \intertext{alors que} + [\fl(z) - \fl(y)] - \fl(x) + &= (0,10000 \times 10^6 - 0,10000 \times 10^6) - + 0,70000 \times 10^1 \\ + &= 0,00000 \times 10^1 - 0,70000 \times 10^1 \\ + &= -0,70000 \times 10^1. + \end{align*} + \qed +\end{exemple} + +L'exemple suivant est adapté de \cite{Monahan:numstat:2001}. + +\begin{exemple} + L'évaluation numérique de probabilités loin dans les queues d'une + fonction de répartition peut s'avérer imprécise selon la technique + employée. Par exemple, la fonction de répartition de la distribution + logistique est + \begin{equation*} + F(x) = (1 + e^{-x})^{-1}. + \end{equation*} + La vraie valeur de $\operatorname{Pr}[X > 6]$ est $1 - F(6) = 1 - (1 + + e^{-6})^{-1} = \nombre{0,002472623}$. L'évaluation de cette + probabilité dans notre représentation en virgule flottante avec la + formule ci-dessus est + \begin{align*} + 1 - [1 \div (1 + \fl(e^{-6}))] + &= 1 - [1 \div (1 + 0,24788 \times 10^{-2})] \\ + &= 1 - [0,10000 \times 10^1 \div 0,10025 \times 10^1)] \\ + &= 1 - 0,99751 \times 10^0 \\ + &= 0,10000 \times 10^1 - 0,09975 \times 10^1 \\ + &= 0,25000 \times 10^{-2}. + \end{align*} + (Nous n'avons pas écrit les entiers en virgule flottante ci-dessus + pour alléger la notation.) Toutefois, si l'on utilise plutôt la + formule équivalente + \begin{align*} + 1 - F(6) + &= \frac{e^{-6}}{1 + e^{-6}} \\ + &= \frac{1}{1 + e^6} + \end{align*} + dans laquelle l'opération de soustraction entre deux nombres presque + égaux est déjà effectuée, on obtient le résultat bien plus précis + \begin{align*} + 1 \div (1 + \fl(e^6)) + &= 1 \div (1 + 0,40343 \times 10^3)) \\ + &= 1 \div (0,00100 \times 10^3 + 0,40343 \times 10^3) \\ + &= 1 \div 0,40443 \times 10^3 \\ + &= 0,24726 \times 10^{-2}. + \end{align*} + \qed +\end{exemple} + +Les deux principes ci-dessous permettent d'éviter des dépassements ou +des soupassements de capacité et d'améliorer la précision des calculs. + +\begin{enumerate} +\item Chercher des formules mathématiques équivalentes évitant de + devoir traiter des très grands ou des très petits nombres. +\item Travailler en échelle logarithmique. Par exemple, le produit de + deux grands nombres $x$ et $y$ dépassera la capacité plus tard et + demeurera précis plus longtemps s'il est calculé sous la forme + $e^{\log x + \log y}$. +\end{enumerate} + +\begin{exemple} + Soit $X_1, \dots, X_n$ un échantillon aléatoire tiré d'une + distribution de Pareto translatée, dont la fonction de répartition est + \begin{equation*} + F(x; \mu, \alpha) = 1 - + \left( + \frac{\mu}{x} + \right)^{\alpha}, \quad x > \mu. + \end{equation*} + On peut démontrer que l'estimateur du maximum de vraisemblance de + $\alpha$ est + \begin{equation*} + \hat{\alpha} = \frac{n}{\ln (X_1 \cdots X_n/X_{(1)}^n)}, + \end{equation*} + où $X_{(1)} = \min (X_1, \dots, X_n)$. Soit \code{x} un objet R + contenant un échantillon de $\nombre{1000}$ valeurs d'une distribution + Pareto translatée de moyenne $\nombre{5000}$ (le contenu de cet objet + n'est pas affiché ici pour des raisons évidentes). Le calcul de + l'estimateur $\hat{\alpha}$ directement par la formule entraîne + rapidement un dépassement de capacité, tant lors du produit $X_1 + \cdots X_n$ que lors de l'opération $X_{(1)}^n$: +\begin{Schunk} +\begin{Sinput} +> prod(x) +\end{Sinput} +\begin{Soutput} +[1] Inf +\end{Soutput} +\begin{Sinput} +> min(x)^length(x) +\end{Sinput} +\begin{Soutput} +[1] Inf +\end{Soutput} +\end{Schunk} + Le résultat est donc \code{NaN}: +\begin{Schunk} +\begin{Sinput} +> length(x)/log(prod(x)/min(x)^length(x)) +\end{Sinput} +\begin{Soutput} +[1] NaN +\end{Soutput} +\end{Schunk} + Selon la grandeur des données dans l'échantillon, la formule + équivalente + \begin{displaymath} + \hat{\alpha} = \frac{n}{\ln \prod_{i = 1}^n X_i/X_{(1)}} + \end{displaymath} + peut éviter le dépassement de capacité. Elle n'est toutefois d'aucun + secours dans le présent exemple: +\begin{Schunk} +\begin{Sinput} +> length(x)/log(prod(x/min(x))) +\end{Sinput} +\begin{Soutput} +[1] 0 +\end{Soutput} +\end{Schunk} + On remarquera de plus que cette approche nécessite un grand nombre + de multiplications (voir la + \autoref{sec:ordinateurs:arithmetique:cout}), en plus d'ouvrir + la porte à des erreurs d'arrondi. + + Pour obtenir une réponse on utilisera plutôt une autre formule + algébriquement équivalente: + \begin{displaymath} + \hat{\alpha} = \frac{n}{\sum_{i=1}^n \ln X_i - n \ln X_{(1)}}. + \end{displaymath} + On obtient alors +\begin{Schunk} +\begin{Sinput} +> length(x)/(sum(log(x)) - length(x) * log(min(x))) +\end{Sinput} +\begin{Soutput} +[1] 1.405529 +\end{Soutput} +\end{Schunk} + Cet exemple illustre combien des calculs \emph{algébriquement} + équivalents ne sont pas nécessairement \emph{numériquement} + équivalents. % + \qed +\end{exemple} + + +\subsection{Coût des opérations} +\label{sec:ordinateurs:arithmetique:cout} + +Les ordinateurs modernes disposent d'une unité de calcul en virgule +flottante (FPU) intégrée au processeur. Cette unité est évidemment +très optimisée et, par conséquent, elle accélère beaucoup le calcul en +virgule flottante. Néanmoins, certaines opérations sont plus coûteuses +à réaliser que d'autres en termes de temps de calcul. À titre +indicatif, on trouve au \autoref{tab:ordinateurs:cout} le coût +relatif approximatif de quelques opérations en virgule flottante. +\begin{table} + \centering + \caption{Coût relatif de quelques opérations en virgule flottante} + \label{tab:ordinateurs:cout} + \begin{tabular}{lr} + \toprule + Opération arithmétique & Coût relatif \\ + \midrule + Addition et soustraction & $1,0$ \\ + Multiplication & $1,3$ \\ + Division & $3,0$ \\ + Racine carrée & $4,0$ \\ + Logarithme & $15,4$ \\ + \bottomrule + \end{tabular} +\end{table} + +À titre d'exemple, considérons le calcul d'une simple moyenne +arithmétique +\begin{equation*} + \bar{x} = \frac{1}{n} \sum_{i = 1}^n x_i. +\end{equation*} +Si l'on effectue le calcul tel qu'écrit ci-dessus, cela requiert $n - +1$ additions et une division. En revanche, le calcul équivalent +\begin{equation*} + \bar{x} = \sum_{i = 1}^n \frac{x_i}{n}, +\end{equation*} +requiert $n - 1$ divisions et $n - 1$ additions. Pour $n$ grand +utiliser la première approche plutôt que la seconde fera une +différence. + + + +\section{Codage de caractères} +\label{sec:ordinateurs:codage} + +Pendant que l'on discute de la représentation interne des nombres dans +un ordinateur, on peut toucher un mot de la représentation interne, ou +le codage, des caractères. Ce sujet demeure une cible mouvante puisque +de nouveaux standards apparaissent encore après de nombreuses années +de systèmes incompatibles et basés sur la langue anglaise. + +Peu importe le système retenu, les caractères doivent être codés en +binaire dans l'ordinateur. La partie la plus difficile consiste à +créer un système standard permettant aux ordinateurs et autres +appareils numériques de communiquer entre eux. Le premier standard +d'usage courant fut le Code américain normalisé pour l'échange +d'information, mieux connu sous son acronyme ASCII \citep{ASCII}. La +norme ASCII définit des codes numériques pour 128 caractères, soit 95 +affichables (lettres, chiffres, symboles divers et l'espace) et 33 non +affichables (essentiellement des caractères de contrôle tels que saut +de ligne, retour de chariot ou espacement arrière). + +À titre d'exemple, les lettres majuscules A--Z occupent les cases +$65$--$90$ ($1000001$--$1011010$ en binaire) alors que les lettres +minuscules a--z occupent les cases $97$--$122$ ($1100001$--$1101010$ +en binaire). On constate que les versions majuscule et minuscule d'une +même lettre ne diffèrent, dans leur représentation binaire, que par +leur second bit le plus significatif. Le changement de casse d'une +lettre ou d'un mot est donc une opération très simple et rapide. + +La représentation ASCII ne requiert en soi que sept bits. Néanmoins, +on a rapidement codé les caractères sur un octet (huit bits) puisqu'il +s'agit du type de donnée natif des ordinateurs depuis les années 1970. +L'ajout d'un bit a créé de l'espace pour 128 caractères additionnels +(cases 128--255). Une myriade de systèmes de codage différents sont +alors apparus pour supporter les caractères des langues autres que +l'anglais (les caractères accentués, par exemple) ainsi que d'autres +symboles graphiques. La norme ISO~8859-1, ou Latin~1 +\citep{ISO:8859-1}, a fini par s'imposer comme l'un des standards les +plus répandus. Ces listes de codes fixes se révèlent toutefois +problématiques lors de l'apparition d'un nouveau symbole. Par exemple, +pour faire de la place pour le symbole de l'euro à la fin des années +1990, il a fallu retirer un symbole de ISO~8859-1. Avec quelques +autres changements, la nouvelle liste de code est devenue ISO~8859-15. +De plus, comment doit-on traiter les langues CJC (chinois, japonais, +coréen) qui comptent des milliers de symboles différents? + +Depuis le début des années 1990, la mondialisation de l'informatique a +suscité un effort concerté de création d'un système de codage standard +couvrant la presque totalité des systèmes d'écriture du monde. Le +système devait aussi permettre la composition de textes en plusieurs +langues, par exemple en français et dans une écriture de droite à +gauche comme l'hébreu ou l'arabe. Le standard ainsi créé est Unicode +\citep{Unicode:5.0}. Le plus populaire système de codage capable de +représenter l'ensemble des caractères Unicode est \emph{Unicode + Transformation Format} 8~bits, ou UTF-8 \citep[section +3.9]{Unicode:5.0}. Dans l'UTF-8, chaque caractère est codé sur une +suite d'un à quatre octets et les premiers 128 caractères sont +identiques à la norme ASCII. L'UTF-8 est le système de codage par +défaut dans MacOS~X et les plus récentes distributions GNU/Linux. + +Le système R supporte les caractères multi-octets de manière assez +exhaustive. Sans doute aidés en cela par le fait qu'il s'agit d'un +projet international, les développeurs de R ont mis beaucoup d'effort +pour assurer l'internationalisation et la localisation du logiciel; +voir \cite{Ripley:Rnews:2005a}. + +\bibliography{formation_latex} % production de la bibliographie + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_gabarit.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_gabarit.tex new file mode 100644 index 00000000000..8e346c4bad6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_gabarit.tex @@ -0,0 +1,14 @@ +\documentclass[11pt,article]{memoir} + \usepackage[francais]{babel} + \usepackage[autolanguage]{numprint} + + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + + + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_include.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_include.tex new file mode 100644 index 00000000000..d148e48b29f --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_include.tex @@ -0,0 +1,28 @@ +\documentclass[11pt]{memoir} + \usepackage[francais]{babel} + \usepackage{graphicx} % insertion de graphiques avec \includegraphics + \usepackage{url} % commande \url pour les... URL + + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + + \title{R et GNU Emacs} + \author{Vincent Goulet} + \date{Université Laval} + +\begin{document} + +\frontmatter + +\input{pagetitre} + +\tableofcontents* + +\mainmatter + +\include{presentation} +\include{emacs} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_mathematiques.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_mathematiques.tex new file mode 100644 index 00000000000..eac8b1307bc --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_mathematiques.tex @@ -0,0 +1,76 @@ +\documentclass[11pt,article]{memoir} + \usepackage{amsmath} + \usepackage[francais]{babel} + \usepackage[autolanguage]{numprint} + + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + +\begin{document} + +Soit deux variables aléatoires stochastiquement indépendantes $X_1$ et +$X_2$. La loi de la première est une exponentielle de paramètre $1$. +Celle de la seconde est une gamma de paramètres $\alpha$ et $1$. Nous +allons déterminer la loi de $Y = \theta (X_1/X_2)$. + +En premier lieu, la densité conjointe de $X_1$ et $X_2$ est +simplement le produit des densités marginales: +\begin{equation*} + f_{X_1 X_2}(x_1, x_2) = \frac{1}{\Gamma(\alpha)} + x_2^{\alpha - 1} e^{-(x_1 + x_2)}, \qquad + x_1 > 0, x_2 > 0. +\end{equation*} + +Nous allons utiliser la méthode du changement de variable (ou du +Jacobien). Pour ce faire, on pose les deux transformations +\begin{equation*} + \begin{aligned} + Y_1 &= \theta \left( \frac{X_1}{X_2} \right) \\ + Y_2 &= X_2 + \end{aligned} + \qquad \Leftrightarrow \qquad + \begin{aligned} + X_1 &= \frac{Y_1 Y_2}{\theta} \\ + X_2 &= Y_2 + \end{aligned} +\end{equation*} +et donc +\begin{align*} + \frac{\partial x_1}{\partial y_1} &= \frac{y_2}{\theta} & + \frac{\partial x_1}{\partial y_2} &= \frac{y_1}{\theta} \\ + \frac{\partial x_2}{\partial y_1} &= 0 & + \frac{\partial x_2}{\partial y_2} &= 1, +\end{align*} +d'où le Jacobien de la transformation est +\begin{equation*} + J = + \begin{vmatrix} + y_2/\theta & y_1/\theta \\ + 0 & 1 + \end{vmatrix} + = \frac{y_2}{\theta}. +\end{equation*} +Le domaine de $Y_1$ et de $Y_2$ est $R^+$. On a donc +\begin{align*} + f_{Y_1 Y_2}(y_1, y_2) + &= f_{X_1 X_2}(y_1 y_2/\theta, y_2)\, \lvert y_2/\theta \rvert \\ + &= \frac{1}{\theta \Gamma(\alpha)} y_2^\alpha + e^{-(y_1 y_2/\theta + y_2)}. +\end{align*} +Par conséquent, +\begin{align*} + f_{Y_1}(y_1) + &= \int_0^\infty f_{Y_1 Y_2}(y_1, y_2)\, dy_2 \\ + &= \frac{1}{\theta} \int_0^\infty + \frac{1}{\Gamma(\alpha)} y_2^{\alpha + 1 - 1} + e^{-[(y_1 + \theta)/\theta] y_2}\, dy_2 \\ + &= \frac{1}{\theta} + \frac{\theta^{\alpha + 1}}{(y_1 + \theta)^{\alpha + 1}} \\ + &= \frac{\theta^\alpha}{% + (y_1 + \theta)^{\alpha + 1}}, \qquad y_1 > 0, +\end{align*} +d'où la loi de $Y_1 = \theta (X_1/X_2)$ est une Pareto$(\alpha, \theta)$. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_minimal.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_minimal.tex new file mode 100644 index 00000000000..9af86cbe7f7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_minimal.tex @@ -0,0 +1,15 @@ +\documentclass{article} + +\begin{document} + +Hello World! + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec quam +nulla, bibendum vitae ipsum vel, fermentum pellentesque orci. +Phasellus vitae ultrices erat. Etiam magna est, convallis et dapibus +in, imperdiet eget magna. Donec pharetra neque ut aliquam finibus. Nam +justo nunc, eleifend non suscipit eget, consectetur eu est. Proin ut +sagittis mauris. Vestibulum ultrices, ipsum a ullamcorper consectetur, +risus risus cursus nunc, eu porta augue nisl in leo. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_parties-solution.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_parties-solution.tex new file mode 100644 index 00000000000..7a66f3d04df --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_parties-solution.tex @@ -0,0 +1,164 @@ +\documentclass[11pt]{memoir} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + + %% Numéroter jusqu'aux sous-sections + \maxsecnumdepth{subsection} + + \title{Initiation au système de mise en page \LaTeX} + \author{Vincent Goulet} + +\begin{document} + +\maketitle + +\frontmatter + +\tableofcontents + +\mainmatter + +\chapter{Présentation du langage R} +\label{chap:presentation} + +\section{Bref historique} +\label{sec:presentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi <citation> et <citation> pour plus de détails. + +\subsection{Les années S-PLUS} + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +\subsection{L'arrivée de R} + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:presentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:presentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:presentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous Mac OS~X au démarrage de R} + \label{fig:presentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \autoref{fig:presentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + +\appendix + +\chapter{Installation de packages dans R} + +Cette annexe explique comment installer et charger des extensions +(\emph{package}) dans R. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_parties.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_parties.tex new file mode 100644 index 00000000000..9b916983d0e --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_parties.tex @@ -0,0 +1,150 @@ +\documentclass[11pt]{memoir} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + + \title{} + \author{} + +\begin{document} + +\maketitle + +\frontmatter + +\tableofcontents + +\mainmatter + +\chapter{Présentation du langage R} +\label{chap:presentation} + +\section{Bref historique} +\label{sec:presentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi <citation> et <citation> pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:presentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:presentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:presentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous Mac OS~X au démarrage de R} + \label{fig:presentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \autoref{fig:presentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_renvois-solution.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_renvois-solution.tex new file mode 100644 index 00000000000..71bbee62ac4 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_renvois-solution.tex @@ -0,0 +1,49 @@ +\documentclass[11pt]{memoir} + \usepackage[francais]{babel} + \usepackage[autolanguage]{numprint} + \usepackage{icomma} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + %% Activer le paquetage hyperref ci-dessous + % \usepackage[colorlinks]{hyperref} % toujours charger en dernier + + \title{Initiation au système de mise en page \LaTeX} + \author{Vincent Goulet} + +\begin{document} + +\maketitle + +\chapter{Classes et paquetages} +\label{chap:classes} + +\section{Marges variables} +\label{sec:classes:marges} + +La longueur des lignes en {\LaTeX} est ajustée automatiquement en +fonction de la taille de la police de caractères de manière à ce que le +nombre de caractères par ligne demeure à peu près constant. Cela a +pour but d'améliorer la lisibilité: lorsqu'une ligne de texte est trop +longue, notre œil a plus de difficulté à suivre celle-ci de gauche à +droite. + +\subsection{Recto-verso} +\label{sec:classes:marges:recto-verso} + +En passant à une classe de document recto-verso, vous remarquerez que +les marges gauche et droite (voir la section \ref{sec:marges}) ne sont +pas identiques. C'est afin de tenir compte de la marge de reliure. + +Le paquetage \textbf{babel} fournit les commandes \verb=\ier=, +\verb=\iere=, \verb=\ieme= pour écrire «premier», «première», +«deuxième» en chiffres: 1{\ier}, 1{\iere}, 36{\ieme}. + +En typographie française, on doit utiliser la virgule comme séparateur +décimal et l'espace fine comme séparateur des milliers. +\begin{displaymath} + y = 1,2x + 5, \quad x = 0, 1, \dots, \nombre{10 000}. +\end{displaymath} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_renvois.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_renvois.tex new file mode 100644 index 00000000000..547296b16fa --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_renvois.tex @@ -0,0 +1,46 @@ +\documentclass[11pt]{memoir} + \usepackage[francais]{babel} + \usepackage[autolanguage]{numprint} + \usepackage{icomma} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + %% Activer le paquetage hyperref ci-dessous + % \usepackage[colorlinks]{hyperref} % toujours charger en dernier + + \title{Initiation au système de mise en page \LaTeX} + \author{Vincent Goulet} + +\begin{document} + +\maketitle + +\chapter{Classes et paquetages} + +\section{Marges variables} + +La longueur des lignes en {\LaTeX} est ajustée automatiquement en +fonction de la taille de la police de caractères de manière à ce que le +nombre de caractères par ligne demeure à peu près constant. Cela a +pour but d'améliorer la lisibilité: lorsqu'une ligne de texte est trop +longue, notre œil a plus de difficulté à suivre celle-ci de gauche à +droite. + +\subsection{Recto-verso} + +En passant à une classe de document recto-verso, vous remarquerez que +les marges gauche et droite ne sont pas identiques. C'est afin de +tenir compte de la marge de reliure. + +Le paquetage \textbf{babel} fournit les commandes \verb=\ier=, +\verb=\iere=, \verb=\ieme= pour écrire «premier», «première», +«deuxième» en chiffres: 1{\ier}, 1{\iere}, 36{\ieme}. + +En typographie française, on doit utiliser la virgule comme séparateur +décimal et l'espace fine comme séparateur des milliers. +\begin{displaymath} + y = 1,2x + 5, \quad x = 0, 1, \dots, \nombre{10 000}. +\end{displaymath} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_subcaption.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_subcaption.tex new file mode 100644 index 00000000000..0e6be9bdda0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_subcaption.tex @@ -0,0 +1,48 @@ +\documentclass[11pt,article]{memoir} + \usepackage[francais]{babel} + \usepackage[autolanguage]{numprint} + \usepackage{icomma} % virgule intelligente en mathématiques + + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + + %% Sous-légendes dans les environnements 'table' + \newsubfloat{table} + +\begin{document} + +\begin{table} + \caption{Conversion du nombre décimal $23,31$ en binaire.} + \begin{minipage}[t]{0.45\linewidth} + \begin{tabular*}{\linewidth}{crrcc} + \toprule + $i$ & \multicolumn{1}{c}{$v$} & $\lfloor v/2 \rfloor$ & $v \bmod 2$ & $x_i$ \\ + \midrule + $0$ & $23$ & $11$ & $1$ & $1$ \\ + $1$ & $11$ & $5$ & $1$ & $1$ \\ + $2$ & $5$ & $2$ & $1$ & $1$ \\ + $3$ & $2$ & $1$ & $0$ & $0$ \\ + $4$ & $1$ & $0$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} + \hfill + \begin{minipage}[t]{0.45\linewidth} + \begin{tabular*}{\linewidth}{ccccc} + \toprule + $i$ & $v$ & $2v$ & $\lfloor 2v \rfloor$ & $x_{-i}$ \\ + \midrule + $1$ & $0,31$ & $0,62$ & $0$ & $0$ \\ + $2$ & $0,62$ & $1,24$ & $1$ & $1$ \\ + $3$ & $0,24$ & $0,48$ & $0$ & $0$ \\ + $4$ & $0,48$ & $0,96$ & $0$ & $0$ \\ + $5$ & $0,96$ & $1,92$ & $1$ & $1$ \\ + \bottomrule + \end{tabular*} + \end{minipage} +\end{table} + + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_tdm+annexe-solution.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_tdm+annexe-solution.tex new file mode 100644 index 00000000000..881657eb3e6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_tdm+annexe-solution.tex @@ -0,0 +1,158 @@ +\documentclass[11pt]{memoir} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + +\begin{document} + +\frontmatter + +\tableofcontents + +\mainmatter + +\chapter{Présentation du langage R} +\label{chap:presentation} + +\section{Bref historique} +\label{sec:presentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi <citation> et <citation> pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:presentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:presentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:presentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous Mac OS~X au démarrage de R} + \label{fig:presentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \autoref{fig:presentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + +\appendix + +\chapter{Installation de packages dans R} + +Cette annexe explique comment installer et charger des extensions +(\emph{package}) dans R. + + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_tdm+annexe.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_tdm+annexe.tex new file mode 100644 index 00000000000..eaddfbc97a5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_tdm+annexe.tex @@ -0,0 +1,151 @@ +\documentclass[11pt]{memoir} + \usepackage[francais]{babel} + %% Activer les lignes appropriées selon le moteur utilisé + \usepackage[utf8]{inputenc} % LaTeX + \usepackage[T1]{fontenc} % LaTeX + % \usepackage{fontspec} % XeLaTeX + \usepackage[colorlinks]{hyperref} + +\begin{document} + +\frontmatter + +\tableofcontents + +\mainmatter + +\chapter{Présentation du langage R} +\label{chap:presentation} + +\section{Bref historique} +\label{sec:presentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi <citation> et <citation> pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Description sommaire de R} +\label{sec:presentation:description} + +R est un environnement intégré de manipulation de données, de calcul +et de préparation de graphiques. Toutefois, ce n'est pas seulement un +«autre» environnement statistique (comme SPSS ou SAS, par exemple), +mais aussi un langage de programmation complet et autonome. + +Tel que mentionné précédemment, le R est un langage principalement +inspiré du S et de Scheme. Le S était à son tour inspiré de plusieurs +langages, dont l'APL (autrefois un langage très prisé par les +actuaires) et le Lisp. Comme tous ces langages, le R est +\emph{interprété}, c'est-à-dire qu'il requiert un autre programme --- +l'\emph{interprète} --- pour que ses commandes soient exécutées. Par +opposition, les programmes de langages \emph{compilés}, comme le C ou +le C++, sont d'abord convertis en code machine par le compilateur puis +directement exécutés par l'ordinateur. + +Cela signifie donc que lorsque l'on programme en R, il n'est pas +possible de plaider l'attente de la fin de la phase de compilation +pour perdre son temps au travail. Désolé! + +Le programme que l'on lance lorsque l'on exécute R est en fait +l'interprète. Celui-ci attend que l'on lui soumette des commandes dans +le langage R, commandes qu'il exécutera immédiatement, une à une et +en séquence. + +Par analogie, Excel est certes un logiciel de manipulation de données, +de mise en forme et de préparation de graphiques, mais c'est aussi au +sens large un langage de programmation interprété. On utilise le +langage de programmation lorsque l'on entre des commandes dans une +cellule d'une feuille de calcul. L'interprète exécute les commandes et +affiche les résultats dans la cellule. + +Le R est un langage particulièrement puissant pour les applications +mathématiques et statistiques (et donc actuarielles) puisque +précisément développé dans ce but. Parmi ses caractéristiques +particulièrement intéressantes, on note: +\begin{itemize} +\item langage basé sur la notion de vecteur, ce qui simplifie les + calculs mathématiques et réduit considérablement le recours aux + structures itératives (boucles \texttt{for}, \texttt{while}, etc.); +\item pas de typage ni de déclaration obligatoire des variables; +\item programmes courts, en général quelques lignes de code seulement; +\item temps de développement très court. +\end{itemize} + + + +\section{Interfaces} +\label{sec:presentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\autoref{fig:presentation:console}. En soi, cela n'est pas si +différent d'un tableur tel que Excel: la zone d'entrée de texte dans +une cellule n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering + \fbox{image} + \caption{Fenêtre de la console sous Mac OS~X au démarrage de R} + \label{fig:presentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \autoref{fig:presentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} + + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_trucs.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_trucs.tex new file mode 100644 index 00000000000..2e8c453968c --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_trucs.tex @@ -0,0 +1,102 @@ +\documentclass[11pt,french]{article} + \usepackage[utf8]{inputenc} + \usepackage[T1]{fontenc} + \usepackage{babel} + \usepackage[autolanguage]{numprint} + \usepackage{fontawesome} % icônes de la commande \doc + \usepackage{metalogo} % logo \XeLaTeX + \usepackage{hyperref} % hyperliens; chargé en dernier! + + \newcommand{\class}[1]{\textsf{#1}} + \newcommand{\fichier}[1]{\texttt{#1}} + + \newcommand{\link}[2]{\href{#1}{#2~\raisebox{-0.2ex}{\faExternalLink}}} + \newcommand{\doc}[3][documentation]{\link{#3}{#1}% + \marginpar[\hfill\faBook~\fichier{#2}]{\faBook~\fichier{#2}}} + + \title{\class{ulthese}: la classe pour les thèses et mémoires de + l'Université Laval} + \author{Faculté des études supérieures et postdoctorales\thanks{% + Cette classe et sa documentation ont été rédigées par Vincent + Goulet~(Faculté des sciences et de génie) avec la collaboration de + Koassi D'Almeida~(Faculté des études supérieures et postdoctorales) et + Pierre Lasou~(Bibliothèque).}} + +\begin{document} + +\maketitle + +\tableofcontents + +\section{Introduction} + +La classe \class{ulthese} permet de composer avec {\LaTeX} ou +{\XeLaTeX} des thèses et mémoires immédiatement conformes aux règles +générales de présentation matérielle de la Faculté des études +supérieures et postdoctorales (FESP) de l'Université Laval. Ces +règles définissent principalement la présentation des pages de titre +des thèses et mémoires ainsi que la disposition du texte sur la +page. La classe en elle-même est donc relativement simple. + +La classe \class{ulthese} est basée sur la classe \class{memoir}, +une extension de la classe standard \class{book} facilitant à +plusieurs égards la préparation de documents d'allure +professionnelle dans {\LaTeX}. La classe \class{memoir} est très +configurable et incorpore d'office plus de 30 des paquetages +(\emph{packages}) les plus populaires\footnote{% +Consulter la section~18.24 de la documentation de \class{memoir} +pour la liste ou encore le fichier journal (\emph{log}) de la +compilation d'un document utilisant la classe \class{ulthese}.}. % +L'intégralité des fonctionnalités de \class{memoir} se retrouve donc +disponible dans \class{ulthese}. + +La classe \class{memoir} fait partie des distributions +{\LaTeX} modernes; elle devrait donc être installée et disponible +sur votre système. La classe est livrée avec une % +\doc{memman.pdf}{http://texdoc.net/pkg/memoir}\footnote{% +Première occurence d'une convention de ce document quand il s'agit +de documentation d'un paquetage: un hyperlien mène vers une version +en ligne dans le site \href{http://texdoc.net}{TeXdoc Online} et on +trouve dans la marge le nom du fichier correspondant sur un système +doté d'une installation de {\TeX}~Live.} % +exhaustive: le manuel d'instructions fait près de 600~pages! Il peut +être utile de s'y référer de temps à autre pour réaliser une mise en +page particulière. + +\section{Installation} + +La classe est livrée avec la distribution {\TeX}~Live. Si vous +utilisez cette distribution et qu'elle est à jour, vous devriez +pouvoir utiliser \class{ulthese} sans autre intervention. Dans ce +cas, passez directement à la section suivante. + +Le reste de cette section explique comment installer la classe si +elle n'est pas disponible sur votre système ou si la version n'est +pas à jour. + +La classe est distribuée sous forme d'une archive +\fichier{ulthese.zip} via le réseau de sites \emph{Comprehensive R + Archive Network} (CTAN): +\begin{quote} + \url{http://www.ctan.org/pkg/ulthese} +\end{quote} + +L'installation de la classe consiste à créer le fichier +\fichier{ulthese.cls} et plusieurs gabarits \fichier{.tex} à partir du +code source documenté se trouvant dans le fichier +\fichier{ulthese.dtx}. Il est recommandé de simplement créer ces +fichiers dans le dossier de travail de la thèse ou du mémoire. + +Pour procéder à l'installation, décompresser l'archive +\fichier{ulthese.zip} dans le dossier de travail, puis compiler avec +{\LaTeX} le fichier \fichier{ulthese.ins} en exécutant +\begin{verbatim} +latex ulthese.ins +\end{verbatim} +depuis une invite de commande. Si l'on est peu familier avec l'invite +de commande, on peut aussi procéder comme avec tout document {\LaTeX}, +soit ouvrir le fichier \fichier{ulthese.ins} dans son éditeur de texte +favori et lancer depuis celui-ci la compilation avec {\LaTeX}, +pdf{\LaTeX}, {\XeLaTeX} ou un autre moteur {\TeX}. + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_ulthese-solution.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_ulthese-solution.tex new file mode 100644 index 00000000000..83a977cc860 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_ulthese-solution.tex @@ -0,0 +1,73 @@ +\documentclass[PhD,english,francais]{ulthese} + %% Encodage utilisé pour les caractères accentués dans les fichiers + %% source du document. Les gabarits sont encodés en UTF-8. Inutile avec + %% XeLaTeX, qui gère Unicode nativement. + \ifxetex\else \usepackage[utf8]{inputenc} \fi + + %% Charger ici les autres paquetages nécessaires pour le document. + %% Quelques exemples; décommenter au besoin. + \usepackage{amsmath} % recommandé pour les mathématiques + \usepackage{icomma} % gestion de la virgule dans les nombres + + %% Utilisation d'une autre police de caractères pour le document. + %% - Sous LaTeX + \usepackage{mathpazo} % texte et mathématiques en Palatino + %\usepackage{mathptmx} % texte et mathématiques en Times + %% - Sous XeLaTeX + %\setmainfont{TeX Gyre Pagella} % texte en Pagella (Palatino) + %\setmathfont{TeX Gyre Pagella Math} % mathématiques en Pagella (Palatino) + %\setmainfont{TeX Gyre Termes} % texte en Termes (Times) + %\setmathfont{TeX Gyre Termes Math} % mathématiques en Termes (Times) + + %% Gestion des hyperliens dans le document. S'assurer que hyperref + %% est le dernier paquetage chargé. + \usepackage{hyperref} + \hypersetup{colorlinks,allcolors=ULlinkcolor} + + %% Options de mise en forme du mode français de babel. Consulter la + %% documentation du paquetage babel pour les options disponibles. + %% Désactiver (effacer ou mettre en commentaire) si l'option + %% 'nobabel' est spécifiée au chargement de la classe. + \frenchbsetup{% + CompactItemize=false, % ne pas compacter les listes + ThinSpaceInFrenchNumbers=true % espace fine dans les nombres + } + + %% Déclarations de la page titre. Remplacer les éléments entre < >. + %% Supprimer les caractères < >. Couper un long titre ou un long + %% sous-titre manuellement avec \\. + \titre{<Titre principal>} + % \titre{Ceci est un exemple de long titre \\ + % avec saut de ligne manuel} + % \soustitre{Sous-titre le cas échéant} + % \soustitre{Ceci est un exemple de long sous-titre \\ + % avec saut de ligne manuel} + \auteur{<Prénom Nom>} + \programme{Doctorat en <discipline> -- <majeure, s'il y a lieu>} + \annee{<20xx>} + +\begin{document} + +\frontmatter % pages liminaires + +\pagetitre % production de la page titre + +\tableofcontents % production de la TdM +\cleardoublepage + +\listoftables % production de la liste des tableaux +\cleardoublepage + +\listoffigures % production de la liste des figures +\cleardoublepage + +\mainmatter % corps du document + +\include{mathematiques} + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_ulthese.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_ulthese.tex new file mode 100644 index 00000000000..bb10707b5d8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/exercice_ulthese.tex @@ -0,0 +1,68 @@ +\documentclass[PhD,english,francais]{ulthese} + %% Encodage utilisé pour les caractères accentués dans les fichiers + %% source du document. Les gabarits sont encodés en UTF-8. Inutile avec + %% XeLaTeX, qui gère Unicode nativement. + \ifxetex\else \usepackage[utf8]{inputenc} \fi + + %% Charger ici les autres paquetages nécessaires pour le document. + %% Quelques exemples; décommenter au besoin. + %\usepackage{amsmath} % recommandé pour les mathématiques + %\usepackage{icomma} % gestion de la virgule dans les nombres + + %% Utilisation d'une autre police de caractères pour le document. + %% - Sous LaTeX + %\usepackage{mathpazo} % texte et mathématiques en Palatino + %\usepackage{mathptmx} % texte et mathématiques en Times + %% - Sous XeLaTeX + %\setmainfont{TeX Gyre Pagella} % texte en Pagella (Palatino) + %\setmathfont{TeX Gyre Pagella Math} % mathématiques en Pagella (Palatino) + %\setmainfont{TeX Gyre Termes} % texte en Termes (Times) + %\setmathfont{TeX Gyre Termes Math} % mathématiques en Termes (Times) + + %% Gestion des hyperliens dans le document. S'assurer que hyperref + %% est le dernier paquetage chargé. + \usepackage{hyperref} + \hypersetup{colorlinks,allcolors=ULlinkcolor} + + %% Options de mise en forme du mode français de babel. Consulter la + %% documentation du paquetage babel pour les options disponibles. + %% Désactiver (effacer ou mettre en commentaire) si l'option + %% 'nobabel' est spécifiée au chargement de la classe. + \frenchbsetup{% + CompactItemize=false, % ne pas compacter les listes + ThinSpaceInFrenchNumbers=true % espace fine dans les nombres + } + + %% Déclarations de la page titre. Remplacer les éléments entre < >. + %% Supprimer les caractères < >. Couper un long titre ou un long + %% sous-titre manuellement avec \\. + \titre{<Titre principal>} + % \titre{Ceci est un exemple de long titre \\ + % avec saut de ligne manuel} + % \soustitre{Sous-titre le cas échéant} + % \soustitre{Ceci est un exemple de long sous-titre \\ + % avec saut de ligne manuel} + \auteur{<Prénom Nom>} + \programme{Doctorat en <discipline> -- <majeure, s'il y a lieu>} + \annee{<20xx>} + +\begin{document} + +\frontmatter % pages liminaires + +\pagetitre % production de la page titre + +\tableofcontents % production de la TdM +\cleardoublepage + +\listoftables % production de la liste des tableaux +\cleardoublepage + +\listoffigures % production de la liste des figures +\cleardoublepage + +\mainmatter % corps du document + +\include{mathematiques} + +\end{document} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL-partie_1.pdf b/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL-partie_1.pdf Binary files differnew file mode 100644 index 00000000000..b31ffb0bfc0 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL-partie_1.pdf diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL-partie_2.pdf b/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL-partie_2.pdf Binary files differnew file mode 100644 index 00000000000..e4f2a348ea5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL-partie_2.pdf diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL.bib b/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL.bib new file mode 100644 index 00000000000..349fdb4bf69 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/formation_latex_UL.bib @@ -0,0 +1,438 @@ +%% Références de la partie II. + +@Manual{UL:latex:1, + title = {Rédaction de thèses et de mémoires avec {\LaTeX} --- Partie I}, + author = {Vincent Goulet}, + organization = {Université Laval}, + year = 2015, + language = {french} +} + +@Manual{UL:latex:2, + title = {Rédaction de thèses et de mémoires avec {\LaTeX} --- Partie II}, + author = {Vincent Goulet}, + organization = {Université Laval}, + year = 2015, + language = {french} +} + +@Manual{amsmath, + author = {{A}merican {M}athematical {S}ociety}, + title = {User’s Guide for the \pkg{amsmath} Package}, + year = 2002, + url = {http://www.ctan.org/pkg/amsmath/}, + language = {english}} + +@Manual{beamer, + author = {Till Tantau and Joseph Wright and Vedran Mileti\'{c}}, + title = {The \textsc{beamer} Class}, + year = 2015, + url = {http://www.ctan.org/pkg/beamer/}, + language = {english} +} + +@Article{Beccari:ISO, + author = {Claudio Beccari}, + title = {Typesetting Mathematics for Science and Technology According to {ISO} 31/{XI}}, + journal = {{TUG}boat}, + year = 1997, + volume = 18, + number = 1, + pages = {39-48}, + url = {https://tug.org/TUGboat/tb18-1/tb54becc.pdf}, + language = {english} +} + +@Manual{biber, + author = {Philip Kline and Fran\c{c}ois Charette}, + title = {biber --- A Backend Bibliography Processor for Biblatex}, + year = 2015, + url = {http://www.ctan.org/pkg/biber/}, + language = {english} +} + +@Manual{biblatex, + author = {Philipp Lehman}, + title = {The Biblatex Package --- Programmable Bibliographies and Citations}, + year = 2015, + url = {http://www.ctan.org/pkg/biblatex/}, + language = {english} +} + +@Manual{bibtex, + author = {Oren Patasnik}, + title = {{\BibTeX}ing}, + year = 1988, + url = {http://www.ctan.org/pkg/bibtex/}, + language = {english} +} + +@Manual{bm, + author = {David Carlisle}, + title = {The \pkg{bm} Package}, + year = 2014, + url = {http://www.ctan.org/pkg/bm/}, + language = {english} +} + +@Manual{booktabs, + author = {Simon Fear}, + title = {Publication quality tables in {\LaTeX}}, + year = 2005, + url = {http://www.ctan.org/pkg/booktabs/}, + language = {english} +} + +@Manual{comprehensive, + author = {Scott Pakin}, + title = {The Comprehensive {\LaTeX} Symbol List}, + year = 2009, + url = {http://www.ctan.org/pkg/comprehensive/}, + language = {english} +} + +@Manual{fontawesome, + title = {The \pkg{fontawesome} package. High quality web icons}, + author = {Xavier Danaux and Dave Gandy}, + year = 2015, + url = {http://www.ctan.org/pkg/fontawesome/}, + language = {english}} + +@Misc{francais-bst, + author = {Vincent Goulet}, + title = {Paquetage \pkg{francais-bst}}, + year = 2013, + url = {http://www.ctan.org/pkg/francais-bst/}, + language = {french} +} + +@Manual{graphicx, + author = {David Carlisle and {The \LaTeX3\ Project}}, + title = {Packages in the `graphics' Bundle}, + year = 2014, + url = {http://www.ctan.org/pkg/graphics/}, + language = {english} +} + +@Book{git, + author = {Scott Chacon and Ben Straub}, + title = {Pro {G}it}, + publisher = {Apress}, + year = 2014, + edition = 2, + note = {Version en ligne}, + url = {http://git-scm.com/book/fr/v2}, + language = {french} +} + +@Manual{hyperref, + title = {Hypertext marks in {\LaTeX}: a manual for \pkg{hyperref}}, + author = {Sebastian Rahtz and Heiko Oberdiek}, + year = 2012, + url = {http://www.ctan.org/pkg/hyperref/}, + language = {english} +} + +@Misc{knitr, + author = {Yihui Xie}, + title = {\pkg{knitr}: A General-Purpose Package for Dynamic + Report Generation in {R}}, + year = 2016, + note = {{R} package version 1.12}, + url = {http://cran.r-project.org/package=knitr}, + language = {english} +} + +@Book{Kopka:latex:4e, + author = {Kopka, Helmut and Daly, Patrick W.}, + title = {Guide to {\LaTeX}}, + publisher = {Addison-Wesley}, + year = 2003, + edition = 4, + isbn = {978-0321173850}, + language = {english} +} + +@Manual{listings, + title = {The \pkg{listings} Package}, + author = {Carsten Heinz and Brooks Moses and Jobst Hoffmann}, + year = 2015, + url = {http://www.ctan.org/pkg/listings/}, + language = {english} +} + +@Book{Malo:1996, + author = {Malo, M.}, + title = {Guide de la communication écrite au cégep, à + l'université et en entreprise}, + publisher = {Québec Amérique}, + year = 1996, + language = {french} +} + +@Book{memoir, + author = {Peter Wilson}, + title = {The Memoir Class for Configurable Typesetting}, + publisher = {The Herries Press}, + year = 2013, + edition = 8, + note = {Maintained by Lars Madsen}, + url = {http://www.ctan.org/pkg/memoir/}, + language = {english} +} + +@Article{Mittelbach:floats:2014, + author = {Frank Mittelbach}, + title = {How to Influence the Position of Float Environments Like Figure and Table In {\LaTeX}?}, + journal = {{TUG}boat}, + year = 2014, + volume = 35, + number = 3, + pages = {258-254}, + url = {https://www.tug.org/TUGboat/tb35-3/tb111mitt-float.pdf}, + language = {english} +} + +@Article{Mori:bibliographies:2009, + author = {Lapo F. Mori}, + title = {Managing bibliographies with {\LaTeX}}, + journal = {{TUG}boat}, + year = 2009, + volume = 30, + number = 1, + pages = {36-48}, + url = {https://www.tug.org/TUGboat/tb30-1/tb94mori.pdf}, + language = {english} +} + +@Manual{natbib, + author = {Patrick W. Daly}, + title = {Natural Sciences Citations and References}, + year = 2010, + url = {http://www.ctan.org/pkg/natbib/}, + language = {english} +} + +@Misc{noweb, + author = {Normand Ramsey}, + title = {Noweb --- A Simple, Extensible Tool for Literate + Programming}, + year = 2011, + url = {http://www.cs.tufts.edu/~nr/noweb/}, + language = {english} +} + +@Manual{pdfpages, + author = {Andreas Matthias}, + title = {The \pkg{pdfpages} Package}, + year = 2015, + url = {http://www.ctan.org/pkg/pdfpages/}, + language = {english} +} + +@Manual{pstricks, + author = {Timothy {V}an Zandt and Denis Girou and Herbert Vo{\ss}}, + title = {{PSTricks} --- {PostScript} Macros for Generic {\TeX}}, + year = 2014, + url = {http://www.ctan.org/pkg/pstricks-base/}, + language = {english} +} + +@Book{subversion, + author = {Collins-Sussman, Ben and Fitzpatrick, Brian W. and Pilato, C. Michael}, + title = {Gestion de versions avec {S}ubversion}, + publisher = {O'Reilly Media}, + year = 2008, + note = {Version en ligne}, + url = {http://svnbook.red-bean.com}, + language = {french} +} + +@inproceedings{Sweave, + author = {Friedrich Leisch}, + title = {Sweave: Dynamic Generation of Statistical Reports Using + Literate Data Analysis}, + booktitle = {Compstat 2002 --- Proceedings in Computational + Statistics}, + pages = {575--580}, + year = 2002, + editor = {Wolfgang H{\"a}rdle and Bernd R{\"o}nz}, + publisher = {Physica Verlag, Heidelberg}, + isbn = {3-7908-1517-9}, + url = {http://www.stat.uni-muenchen.de/~leisch/Sweave}, + language = {english} +} + +@Manual{tikz, + author = {Till Tantau}, + title = {\textsc{pgf} and {Ti\textit{k}Z} --- {G}raphic System for {\TeX}}, + year = 2014, + url = {http://www.ctan.org/pkg/pgf/}, + language = {english} +} + +@Manual{ulthese, + title = {{\class{ulthese}}: la classe pour les thèses et mémoires de l'{U}niversité {L}aval}, + author = {Vincent Goulet}, + organization = {Faculté des études supérieures et doctorales, Université Laval}, + year = 2015, + url = {http://www.ctan.org/pkg/ulthese/}, + language = {french} +} + +@Manual{unicode-math, + title = {Experimental {U}nicode Mathematical Typesetting: The \pkg{unicode-math} Package}, + author = {Will Robertson and Philipp Stephani and Khaled Hosny}, + year = 2014, + url = {http://www.ctan.org/pkg/unicode-math/}, + language = {english} +} + +@Misc{wikilivres:latex, + author = {Wikilivres}, + title = {{LaTeX}}, + year = 2015, + url = {http://fr.wikibooks.org/wiki/LaTeX}, + language = {french} +} + +@Misc{wikibooks:latex, + author = {Wikibooks}, + title = {{LaTeX}}, + year = 2015, + url = {http://en.wikibooks.org/wiki/LaTeX}, + language = {english} +} + +@misc{wikipedia:bibtex, + author = {Wikipédia}, + title = {{BibTeX}}, + year = 2015, + url = {https://fr.wikipedia.org/wiki/BibTeX}, + language = {french} +} + +@misc{wikipedia:unicode-math, + author = {Wikipedia}, + title = {Mathematical Operators and Symbols in {U}nicode}, + year = 2015, + url = {https://en.wikipedia.org/wiki/Mathematical_operators_and_symbols_in_Unicode}, + language = {english} +} + +@Manual{xcolor, + title = {Extending {\LaTeX}’s color facilities: the \pkg{xcolor} package}, + author = {Kern, Dr.\ Uwe}, + year = 2007, + url = {http://www.ctan.org/pkg/xcolor/}, + language = {english} +} + + +%%% Les références ci-dessous servent pour les exercices et les démos. + +@Manual{ASCII, + title = {ANSI X3.4-1986: Coded Character Set. 7-Bit + {A}merican {S}tandard {C}ode for {I}nformation + {I}nterchange}, + organization = {{A}merican {N}ational {S}tandards {I}nstitute}, + key = {{ANSI}}, + address = {New York}, + year = 1986, + language = {english} +} + +@Book{Burden:numerical:2011, + author = {Burden, R. L. and Faires, J. D.}, + title = {Numerical Analysis}, + publisher = {Brooks/Cole}, + year = {2011}, + edition = 9, + isbn = {978-0-5387335-1-9}, + language = {english} +} + +@Manual{IEEE:754, + title = {754-1985 {IEEE} Standard for Binary Floating-Point + Arithmetic}, + key = {{IEEE}}, + organization = {{IEEE}}, + address = {Piscataway, NJ}, + year = 2003, + isbn = {978-1-55937653-2}, + language = {english} +} + +@Manual{ISO:8859-1, + title = {{ISO/IEC} 8859-1:1998. Information Technology -- 8-bit + Single-Byte Coded Graphic Character Sets -- {P}art 1: + Latin Alphabet No. 1}, + organization = {{I}nternational {O}rganization for {S}tandardization}, + key = {{ISO}}, + address = {Geneva}, + year = 1998, + language = {english} +} + +@Book{Kernighan:style:1978, + author = {Kernighan, B. W. and Plauger, P. J.}, + title = {The Elements of Programming Style}, + publisher = {McGraw-Hill}, + year = 1978, + edition = 2, + isbn = {ISBN 0-07034207-5}, + language = {english} +} + +@Book{Knuth:ACP:vol2:1997, + author = {Knuth, D. E.}, + title = {The Art of Computer Programming}, + publisher = {Addison-Wesley}, + year = 1997, + volume = {2, Seminumerical Algorithms}, + address = {Reading, MA}, + language = {english} +} + +@Book{Monahan:numstat:2001, + author = {Monahan, J. F.}, + title = {Numerical Methods of Statistics}, + publisher = {Cambridge {U}niversity {P}ress}, + year = 2001, + address = {Cambridge, UK}, + isbn = {0-52179168-5}, + language = {english} +} + +@Article{Ripley:Rnews:2005a, + author = {Brian D. Ripley}, + title = {Internationalization Features of {R} 2.1.0}, + journal = {R News}, + year = 2005, + volume = 5, + number = 1, + pages = {2--7}, + month = {May}, + url = {http://cran.r-project.org/doc/Rnews/}, + pdf = {http://cran.r-project.org/doc/Rnews/Rnews_2005-1.pdf}, + language = {english} +} + +@Book{Unicode:5.0, + author = {The {U}nicode {C}onsortium}, + title = {The Unicode Standard, Version 5.0.0}, + publisher = {Addison-Wesley}, + year = 2007, + address = {Boston}, + isbn = {0-32148091-0} +} + +@Misc{Wikipedia:IEEE754, + author = {Wikipedia}, + title = {{IEEE} 754-2008 --- {W}ikipedia{,} + The Free Encyclopedia}, + year = 2012, + url = {http://en.wikipedia.org/wiki/IEEE_floating-point_standard}, + language = {english} +} + diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/mathematiques.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/mathematiques.tex new file mode 100644 index 00000000000..25e0f930ce1 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/mathematiques.tex @@ -0,0 +1,57 @@ +\chapter{B.a.-ba du mode mathématique} + +De manière générale, soit $x$ un nombre (entier pour le moment) dans +la base de numération $b$ composé de $m$ chiffres ou symboles, c'est-à-dire +\begin{equation*} + x = x_{m-1}x_{m-2} \cdots x_1x_0, +\end{equation*} +où $0 \leq x_i \leq b - 1$. On a donc +\begin{equation} + \label{eq:ordinateurs:def_base} + x = \sum_{i = 0}^{m - 1} x_i b^i. +\end{equation} + +Lorsque le contexte ne permet pas de déterminer avec certitude la base +d'un nombre, celle-ci est identifiée en indice du nombre par un nombre +décimal. Par exemple, $10011_2$ est le nombre binaire $10011$. + +Soit le nombre décimal $348$. Selon la notation ci-dessus, on a $x_0 = +8$, $x_1 = 4$, $x_2 = 3$ et $b = 10$. En effet, et en conformité avec +\eqref{eq:ordinateurs:def_base}, +\begin{displaymath} + 348 = 3 \times 10^2 + 4 \times 10^1 + 8 \times 10^0. +\end{displaymath} +Ce nombre a les représentations suivantes dans d'autres bases. En binaire: +\begin{align*} + 101011100_{2} + &= 1 \times 2^8 + 0 \times 2^7 + 1 \times 2^6 \\ + &\phantom{=} + 0 \times 2^5 + 1 \times 2^4 + 1 \times 2^3 \\ + &\phantom{=} + 1 \times 2^2 + 0 \times 2^1 + 0 \times 2^0. +\end{align*} +En octal: +\begin{equation*} + 534_{8} = 5 \times 8^2 + 3 \times 8^1 + 4 \times 8^0. +\end{equation*} +En hexadécimal: +\begin{equation*} + 15\mathrm{C}_{16} = 1 \times 16^2 + 5 \times 16^1 + 12 \times 16^0. +\end{equation*} +Des représentations ci-dessus, l'hexadécimale est la plus compacte: +elle permet de représenter avec un seul symbole un nombre binaire +comptant jusqu'à quatre chiffres. C'est, entre autres, pourquoi +c'est une représentation populaire en informatique.% + +Dans un ordinateur réel (par opposition à théorique), l'espace +disponible pour stocker un nombre est fini, c'est-à-dire que $m < +\infty$. Le plus grand nombre que l'on peut représenter avec $m$ +chiffres ou symboles en base $b$ est +\begin{align*} + x_{\text{max}} + &= \sum_{i = 0}^{m - 1} (b - 1) b^i \\ + &= (b - 1) \sum_{i = 0}^{m - 1} b^i \\ + &= (b - 1) + \left( + \frac{b^m - 1}{b - 1} + \right) \\ + &= b^m - 1. +\end{align*} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/pagetitre.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/pagetitre.tex new file mode 100644 index 00000000000..5b68191278e --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/pagetitre.tex @@ -0,0 +1,13 @@ +\begin{titlingpage} + \centering + \LARGE\bfseries% + \thetitle \\ + \vfill + \Large + par \\ + \vspace{1cm} + \theauthor + \vfill + \normalsize + \thedate +\end{titlingpage}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/presentation.tex b/Master/texmf-dist/doc/latex/formation-latex-ul/presentation.tex new file mode 100644 index 00000000000..697df91f578 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/presentation.tex @@ -0,0 +1,78 @@ +\chapter{Présentation du langage R} +\label{chap:presentation} + +\section{Bref historique} +\label{sec:presentation:historique} + +À l'origine fut le S, un langage pour «programmer avec des données» +développé chez Bell Laboratories à partir du milieu des années 1970 +par une équipe de chercheurs menée par John~M.\ Chambers. Au fil du +temps, le S a connu quatre principales versions communément +identifiées par la couleur du livre dans lequel elles étaient +présentées: % +version «originale», % +version 2, % +version 3 et % +version 4; % +voir aussi <citation> et <citation> pour plus de détails. + +Dès la fin des années 1980 et pendant près de vingt ans, le S a +principalement été popularisé par une mise en {\oe}uvre commerciale +nommée S-PLUS. En 2008, Lucent Technologies a vendu le langage S à +Insightful Corporation, ce qui a effectivement stoppé le développement +du langage par ses auteurs originaux. Aujourd'hui, le S est +commercialisé de manière relativement confidentielle sous le nom +Spotfire S$+$ par TIBCO Software. + +Ce qui a fortement contribué à la perte d'influence de S-PLUS, c'est +une nouvelle mise en {\oe}uvre du langage développée au milieu des +années 1990. Inspirés à la fois par le S et par Scheme (un dérivé du +Lisp), Ross Ihaka et Robert Gentleman proposent un langage pour +l'analyse de données et les graphiques qu'ils nomment R. À la +suggestion de Martin Maechler de l'ETH de Zurich, les auteurs décident +d'intégrer leur nouveau langage au projet GNU\footnote{% + \url{http://www.gnu.org}}, % +faisant de R un logiciel libre. + +Ainsi disponible gratuitement et ouvert aux contributions de tous, +R gagne rapidement en popularité là même où S-PLUS avait acquis ses +lettres de noblesse, soit dans les milieux académiques. De simple +dérivé «\emph{not unlike S}», R devient un concurrent sérieux à +S-PLUS, puis le surpasse lorsque les efforts de développement se +rangent massivement derrière le projet libre. D'ailleurs John Chambers +place aujourd'hui ses efforts de réflexion et de développement dans le +projet R. + + +\section{Interfaces} +\label{sec:presentation:interfaces} + +R est d'abord et avant tout une application n'offrant qu'une invite de +commande du type de celle présentée à la +\ref{fig:presentation:console}. En soi, cela n'est pas si différent +d'un tableur tel que Excel: la zone d'entrée de texte dans une cellule +n'est rien d'autre qu'une invite de commande\footnote{% + Merci à Markus Gesmann pour cette observation.}, par ailleurs aux +capacités d'édition plutôt réduites. + +\begin{figure} + \centering +% \includegraphics[width=\textwidth]{console-screenshot} + \caption{Fenêtre de la console sous Mac OS~X au démarrage de R} + \label{fig:presentation:console} +\end{figure} + +\begin{itemize} +\item Sous Unix et Linux, R n'est accessible que depuis la ligne de + commande du système d'exploitation (terminal). Aucune interface + graphique n'est offerte avec la distribution de base de R. +\item Sous Windows, une interface graphique plutôt rudimentaire est + disponible. Elle facilite certaines opérations tel que + l'installation de packages externes, mais elle offre autrement peu + de fonctionnalités additionnelles pour l'édition de code R. +\item L'interface graphique de R sous Mac OS~X est la plus élaborée. + Outre la console présentée à la + \ref{fig:presentation:console}, l'application \texttt{R.app} + comporte de nombreuses fonctionnalités, dont un éditeur de code + assez complet. +\end{itemize} diff --git a/Master/texmf-dist/doc/latex/formation-latex-ul/ul_p.pdf b/Master/texmf-dist/doc/latex/formation-latex-ul/ul_p.pdf Binary files differnew file mode 100644 index 00000000000..6535aad11f5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/formation-latex-ul/ul_p.pdf diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 98b69cd3dcf..7193df3d593 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -253,7 +253,7 @@ my @TLP_working = qw( fontmfizz fontools fonts-tlwg fontspec fonttable fontwrap footbib footmisc footnotebackref footnoterange footnpag - forarray foreign forest forloop formlett formular + forarray foreign forest forloop formlett formation-latex-ul formular fouridx fourier fouriernc fp fpl fragmaster fragments frame framed francais-bst frankenstein frcursive diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 98e0a57dcfe..cf6822a840d 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -2346,7 +2346,7 @@ my $core_latex = "$Master/texmf-dist/tex/latex"; 'mversion' => 'latex', # requires interaction 'minitoc' => 'latex', # requires interaction and 1000q instead of 10q 'mylatexformat'=> 'tex', - 'nameauth' => 'latex', # requires interaction + 'nameauth' => 'pdflatex', # requires interaction 'nomentbl' => 'latex -translate-file=empty.tcx', # no 8-bit 'pbsheet' => 'latex', # requires interaction 'thumb' => 'latex -translate-file=empty.tcx', # no 8-bit diff --git a/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc b/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc index 389574de971..31cda30689f 100644 --- a/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-langfrench.tlpsrc @@ -17,6 +17,7 @@ depend droit-fr depend e-french depend epslatex-fr depend facture +depend formation-latex-ul depend frletter depend hyphen-basque depend hyphen-french diff --git a/Master/tlpkg/tlpsrc/formation-latex-ul.tlpsrc b/Master/tlpkg/tlpsrc/formation-latex-ul.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/formation-latex-ul.tlpsrc |