\documentclass[12pt,a4paper]{article}
\usepackage{amsfonts,amssymb}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
% ------------------- Pour elargir au maximum
\setlength{\textheight}{24cm}
%------- demi-hauteur :
%\setlength{\textheight}{12cm}
%--------
%\setlength{\oddsidemargin}{0.5cm}
%\setlength{\evensidemargin}{0.5cm}
%\setlength{\columnseprule}{1pt}
%\setlength{\marginparsep}{0cm}
\setlength{\textwidth}{18cm}
\setlength{\hoffset}{-2cm}
\setlength{\voffset}{-4cm}

%----------------Les ensembles
\newcommand{\bb}[1]{\ensuremath{\mathbb{#1}}}
\newcommand{\R}[0]{\bb{R}}
\newcommand{\N}[0]{\bb{N}}
\newcommand{\Q}[0]{\bb{Q}}
\newcommand{\C}[0]{\bb{C}}
\newcommand{\Z}[0]{\bb{Z}}

% double crochet, d\'eriv\'ees partielles, int\'egrale double et triple
\newcommand{\LL}[0]{\mathchoice{\rlap{$\displaystyle [$}}{\rlap{$\textstyle [$}}
{\rlap{$\scriptstyle [$}}{\rlap{$\scriptscriptstyle [$}}\,[}
\newcommand{\JJ}[0]{\mathchoice{\rlap{$\displaystyle ]$}}{\rlap{$\textstyle ]$}}
{\rlap{$\scriptstyle ]$}}{\rlap{$\scriptscriptstyle ]$}}\,]}
\newcommand{\drond}[2]{\frac{\partial #1}{\partial #2}}
\newcommand{\intd}[0]{\int\!\!\!\!\int}
\newcommand{\intt}[0]{\int\!\!\!\!\int\!\!\!\!\int}

% Macros de Partiels
\newcounter{noexo}
\setcounter{noexo}{1}
\newcommand{\exercice}[0]{\\\noindent{\textbf{Exercice \thenoexo :}}
 \addtocounter{noexo}{1}}
 
\begin{document}
\pagestyle{empty}

%En t\^ete
\noindent SOA\hfill Ann\'ee 2004-2005\\
\begin{center}
TD de MAPLE N$^o$~2
\end{center}
\hrule\vskip 0.2cm
\section{Algorithmique} Un algorithme est un enchaînement fini d'instructions simples~: des calculs, des affectations de variables et des tests suivis de branchements (c'est à dire que suivant le résultat du test, on va poursuivre l'algorithme à un endroit plutôt qu'un autre).
\subsection{Suites d'instructions}
Dans Maple, pour faire une suite d'instructions, il suffit les mettre les unes derrière les autres et terminer chaque instruction par "`:"' ou ";". Néanmoins Maple autorise parfois que l'on ne ponctue pas la dernière instruction (entre {\bf do} et {\bf od} par exemple). Si on veut appliquer une suite d'instructions à une variable $x$, on peut définir une fonction dans les cas simples \\{\bf f:= x-> inst1;}\\ ou une procédure pour des algorithmes plus complexes, et notamment si ceux-ci utilisent des variables locales \\{\bf f:= proc (x) local y,z; inst1;inst2;... end}\\
Attention, lors de l'appel d'une procédure Maple commence par remplacer les arguments dans toute la suite d'instructions. Par exemple\\
{\bf f:= proc(x) x:=x+1 end;}\\
renvoie une erreur lorsque l'on demande {\bf f(2)}, mais pas lorsque l'on demande {\bf f(y)}.
\subsection{If}
{\bf If <condition> then inst1 else inst2 fi;}
\subsection{Boucle for}
La syntaxe est la suivante :\\
{\bf for i from 1 to 30 do inst1;inst2;... od}
\exercice (suite de Syracuse) Écrire une fonction $f$ qui à un entier $p$ renvoie $3p+1$ si il est impair, et $p/2$ si p est pair ({\bf odd, even}). Étant donné $a\in\N$, on peut alors définir une suite telle que $u_1=a$ et pour tout $n\in\N^*$ $u_{n+1}=f(u_n)$. Écrire une procédure qui, étant donné $a$ et $n$, donne la valeur de $u_n$. Vérifier la conjecture : pour tout $a$ (essayer $a=1234$), il existe $n\in\N$ tel que $u_n$ vaut $1$, $2$ ou $4$.
\subsection{Boucle While}
{\bf while <condition> do inst1;... od}\\
Tant que la condition est réalisée, on répète en boucle les instructions. Cette écriture est très pratique pour beaucoup de problèmes d'approximation sur les suites.
\exercice Déterminer le premier entier $N$ tel que $\displaystyle \sum_{n=1}^N \frac 1n\ge10$.
\section{Fourier}
Rappel~: si $\vec x$ est un vecteur de l'espace, et si $(\vec y_1,\vec y_2,\vec y_3)$ est une base orthogonale de l'espace, alors on peut facilement trouver les coordonnées $(x_1,x_2,x_3)$ de $\vec x$ dans cette base, en remarquant que 
$$\vec x.\vec y_2=(x_1\vec y_1+x_2\vec y_2+x_3\vec y_3).\vec y_2=x_2\|\vec y_2\|^2$$
donc $\displaystyle x_2=\frac {\vec x.\vec y_2}{\|\vec y_2\|^2}$. Et de même pour $x_1$ et $x_3$ bien sûr.\\
On applique la technique précédente pour un espace vectoriel de fonctions $2\pi$ périodique et continue par morceaux. Cet espace est muni du produit scalaire suivant~:
$$f.g=\frac 1{2\pi}\int_0^{2\pi} f(t)g(t)\,dt$$
\exercice Définir ce produit scalaire dans Maple ({\bf int}). Définir la fonction norme à l'aide de ce produit scalaire ({\bf sqrt}). Vérifier que les fonctions cosinus et sinus sont orthogonales, et trouver leur normes.

On considère la famille de vecteurs $(x\mapsto \cos nx)_{n\in\N}$ réunie avec la famille $(x\mapsto \sin nx)_{n\in\N^*}$
\exercice Montrer, à l'aide de Maple que cette famille est orthogonale ({\bf assume}). Donner également la norme de ces fonctions.
\exercice Construire une fonction $\displaystyle f: x\mapsto a_0+\sum_{n=1}^{10} (a_n\cos(nx)+b_n\sin(nx))$. En utilisant une boucle {\bf for}, calculer le produit scalaire de $f$ avec chacune des 15 premières fonctions $x\mapsto\cos(nx)$ et
$x\mapsto\sin(nx)$. Calculer également la norme de $f$. En déduire la formule suivante~:
$$\frac 1{2\pi}\int_0^{2\pi}f(t)^2\,dt=a_0^2+\frac 12\sum_{n=1}^{10} (a_n^2+b_n^2)$$
\exercice On généralise le problème précédent. On écrit alors une procédure qui, à partir d'une fonction $g$, va :
\begin{itemize}
\item calculer ses coefficients de Fourier $a(n)$ et $b(n)$ qu'on écrira comme des fonctions
\item calculer sa norme
\item dessiner sur un même dessin la courbe de g et le début de la série de Fourier (par exemple la fonction $f$ précédente)
\item renvoyer l'égalité de Parseval, c'est à dire la généralisation de l'égalité précédente. 
\end{itemize}
Tester votre procédure pour des fonctions simples, en particulier $g(x)=x$
\section{Autre exercice} {\tiny Mais aura-t-on vraiment le temps~?}\\
Montrer que pour tout polynôme de degré inférieur ou égal à $3$ on a~:
$$\int_0^1 P(t)\,dt=\alpha P\left(\frac{\sqrt 3-1}{2\sqrt 3}\right)+\beta P\left( \frac{\sqrt 3+1}{2\sqrt3}\right)$$
où $\alpha$ et $\beta$ sont à déterminer.
\end{document}

 