\documentclass[10pt,a4paper]{report}
\usepackage[height=250mm,width=183mm]{geometry}
\usepackage{preambule}
\usepackage[upright]{fourier}

%\usepackage{bbding,xlop}


\usepackage{keystroke}



\usepackage[ps2pdf,colorlinks=orange]{hyperref}

\entete{ Informatique I  }{Prise en main de XCAS }{Lycée Jean Perrin - T\textsuperscript{ale} S 5 }

\graphicspath{{/home/moi/Photos/Tehessin/}{/home/moi/Figures/FigSTI/}}



\usepackage{listings}

\lstloadlanguages{XCAS}
\lstset{numbers=none,language=XCAS,%
keywordstyle =\color{blue}\bfseries,%basicstyle=\sffamily,%\small,
    backgroundcolor=\color{0.9white}}
   






\begin{document}

\thispagestyle{empty}
\setlength{\parindent}{0mm}

\newcolumntype{A}{>{\arraybackslash}X}

%\TITRE{}{Informatique I }{Initiation à la  }{programmation}{}{notice.eps}

\TITRE{}{Informatique }{Prise en main de XCAS }{}{}{notice.eps}
\vspace{1cm}












\section{Avant de commencer}

XCAS est un logiciel libre de calcul formel. En particulier, vous allez pouvoir le télécharger gratuitement en toute légalité sur 

\begin{center}

\href{http://www-fourier.ujf-grenoble.fr/~parisse/irem.html}{\textcolor{red}{http://www-fourier.ujf-grenoble.fr/~parisse/irem.html}}

\end{center}



XCAS contient plusieurs centaines de  fonctions
pré-programmées. \'Evidemment, il est absolument impossible de les
aborder toutes cette année. Le but de ce TD est d'abord de se familiariser avec quelques fonctions simples qui nous seront utiles en mathématiques.
Plus tard, nous mettrons  en pratique quelques
notions de base sur la programmation en prenant pour sujets des
fonctions mathématiques simples : nous fabriquerons ainsi <<~à la
main~>>, de nombreuses fonctions qui sont pourtant déjà
pré-définies en langage XCAS. Il s'agira en fait de découvrir, à
travers des exercices concrets, la syntaxe XCAS et des
algorithmes de base. Ceci nous permettra ensuite
d'utiliser les formidables capacités de XCAS en calcul formel
pour travailler, sous un autre angle qu'en cours, les
merveilleuses notions mathématiques que  vous allez aborder en terminale...

\sm

Un de vos fidèles compagnons pendant ces TD sera le \texttt{?}. En
effet, en cas de doute sur une fonction XCAS, il suffira de taper
\begin{lstlisting}
?lafonction
\end{lstlisting}



pour voir apparaître une aide. On peut sinon explorer les tutoriels où l'index au format html.

\sm

\subsubsection{Quelques conseils avant de travailler.} 

Nous allons utiliser pas mal de variables que nous affecterons au hasard de nos travaux. On peut perdre le fil.
Pour savoir quelles lettres sont déjà utilisées, on tape
\begin{lstlisting}
VARS()
\end{lstlisting}


Pour désaffecter tout le monde, on tapera
\begin{lstlisting}
rm_all_vars()
\end{lstlisting}



Pour désaffecter une seule variable, par exemple "a", on tape 
\begin{lstlisting}
purge(a)
\end{lstlisting}




Pour charger un programme déjà enregistré, on clique sur \textsf{load} ou on tape \Alt + \keystroke{L}. 
\sm
Enfin, voici la règle principale pour nos futures aventures 

\ENC{Thèorème fondamental de l'algorithmique}{Pour concevoir un programme, un crayon, une feuille et une gomme tu utiliseras}





\section{Premiers calculs}

L'interface est un peu déroutante au premier abord, mais c'est le prix à payer pour avoir autant d'outils à disposition...

Vous parlerez au logiciel en vous plaçant dans une des fenêtres marquées d'un numéro.

Tapez par exemple
\begin{lstlisting}
3+2/5
\end{lstlisting}


Oups, vous vous êtes trompé et vous voulez plutôt calculer $3+2/7$ : cliquez pour placer le curseur juste avant le 5 et corrigez.

Vous pouvez également sélectionner le calcul précédent, le copier puis le coller dans une nouvelle fenêtre (sous UNIX, selectionnez puis cliquez sur la molette centrale).

Des constantes utiles sont programmées :
\begin{lstlisting}
cos(pi/3+pi/2)
\end{lstlisting}


En anglais, \textit{racine carrée} se dit \textit{square root}
\begin{lstlisting}
sqrt(2)+sqrt(8)
\end{lstlisting}


On peut demander à XCAS de faire un effort
\begin{lstlisting}
simplify(sqrt(2)+sqrt(8))
\end{lstlisting}


Et pour les curieux, on peut demander une approximation de quelques nombres célèbres
\begin{lstlisting}
evalf(sqrt(2))
\end{lstlisting}


ou, si vous voulez plus de précisions
\begin{lstlisting}
evalf(pi,1000)
\end{lstlisting}



\section{Un peu d'algèbre}

XCAS sait résoudre des équations simples
\begin{lstlisting}
solve(2x-5=3,x)   solve(cos(x)=1/2,x)
\end{lstlisting}


moins simples 


\begin{lstlisting}
solve(x^3-3x+7=0,x)
\end{lstlisting}


On peut même travailler avec un ou plusieurs paramètres 

\begin{lstlisting}
solve(x^2+a*x+1=0,x)    solve(a*x^2+b*x+c=0,x)
\end{lstlisting}


ou des systèmes

\begin{lstlisting}
solve([2x+3y=5,x-5y=-1],[x,y])
\end{lstlisting}



\c Ca fonctionne aussi pour les inéquations 

\begin{lstlisting}
solve((x+2)*(x-1)<=0,x)      solve(cos(3x)<=0,x)
\end{lstlisting}


On peut développer

\begin{lstlisting}
expand((3*x+2)*(7*x-1/2))
\end{lstlisting}

quitte à simplifier un peu, mais on peut aussi factoriser



\begin{lstlisting}
collect(21*x^2+25*1/2*x-1)
\end{lstlisting}



Certaines expression peuvent être simplifiées par XCAS. Soit F l'expression $F=\fr{1-a^2}{\sqrt{1+a}}$. Pour que cette expression ait un sens, il faut bien sûr que le réel $a$ vérifie $a>-1$. Ceci se note
\begin{lstlisting}
F:=(1-a^2)/sqrt(1+a)       assume(a>-1)
\end{lstlisting}
puis on utilise la fonction \texttt{simplify}

\begin{lstlisting}
simplify(F)
\end{lstlisting}

Il existe aussi des outils similaires mais moins puissants. Nous avons, dans l'ordre décroissant : \texttt{simplify, normal, ratnormal}.

%\lstinputlisting{/home/moi/Lycee/TDmaple/CorrTD1.txt}



% \section{Les complexes}


% Certaines fonctions sont assez faciles à comprendre...
% \begin{lstlisting}
% re(1+2i)
% im(1+2i)
% abs(1+2i)
% conj(1+2i)
% arg(1+i)

% \end{lstlisting}

% XCAS travaille tout seul  pour vous

% \begin{lstlisting}
% Z:=(1+i)/(3i-5)
% \end{lstlisting}

% et calcule vite. Retenez la fonction \texttt{evalc} qui écrit un nombre sous forme algébrique

% \begin{lstlisting}
% z:=x+i*y
% re(z+1/conj(z))
% evalc(z+1/conj(z))
% \end{lstlisting}



% Nous verrons d'autres applications après avoir avancé dans l'étude du cours de terminale.

\section{\'ETUDE DE FONCTIONS}

\subsection{Fonctions et expressions}

Comme en mathématiques, il faudra veiller à ne pas confondre \textbf{fonction} et \textbf{expression}

Par exemple, si vous entrez 

\begin{lstlisting}
f:=3*x+2
\end{lstlisting}
 et que vous demandez 

\begin{lstlisting}
f(2)
\end{lstlisting}


cela ne donne pas un résultat très intéressant. Pour que XCAS comprenne que vous voulez que f soit une fonction dépendant de la variable x, il faut utiliser la bonne syntaxe. On peut au choix écrire :

\begin{lstlisting}
f(x):=3*x+2
f:=x->3*x+2
\end{lstlisting}

ou, si on a rentré f sous forme d'une expression et qu'on veut la transformer en fonction

\begin{lstlisting}
f:=unapply(f,x)
\end{lstlisting}


Maintenant, f est bien une fonction 

\begin{lstlisting}
f(2)  f(1/2)  f(y)
\end{lstlisting}


On peut composer deux fonctions

\begin{lstlisting}
f:=x->sqrt(x)
g:=x->x^2+1
h:=f@g
k:=g@f
h(a)   k(a)
\end{lstlisting}


\subsection{Tableau de valeurs}

Pour obtenir un tableau de valeurs prises par la fonction f, il faut ouvrir une fenêtre tableur en tapant \Alt + \keystroke{T} ou en cliquant sur \texttt{Edit -> Add -> Tableur}, puis dans la ligne de commande du tableur, tapez

\begin{lstlisting}
tablefunc(sin(x),x,-2*pi,pi/12)
\end{lstlisting}

pour avoir le tableau de valeurs de la fonction sinus à partir de $-2\pi$ avec un pas de $\pi/12$.

Pour simplifier l'écriture des valeurs prises par x, cliquez sur la cellule A3 et la remplacer par 

\begin{lstlisting}
=simplify(A2+A$1)
\end{lstlisting}

puis sur \texttt{Edit->Fill->Copy down}


\subsection{Représentation graphique}

\begin{lstlisting}
plot(sin(x),x,x=-3*pi..3*pi,color=red)
plot([sin(x),cos(x)],x,x=-3*pi..3*pi,color=[red,blue])

\end{lstlisting}

On peut afficher des résultats intéressants concernant les tangentes. On demande ici de tracer la tangente à (C) au point de la courbe d'abscisse $\pi/4$.

 Notez bien comme il peut être utile d'affecter d'une lettre nos productions graphiques. Des ; permettent d'afficher tout le monde sur une seule fenêtre\footnote{sinon on va sur Session->Show->Show DispG}

\begin{lstlisting}
C:=plot(sin(x),x,x=-3*pi..3*pi,color=red);couleur(bleu+dash_line+line_width_2);
T:= LineTan(sin(x),pi/4)
\end{lstlisting}


On peut même avoir une équation de \texttt{T}

\begin{lstlisting}
equation(T)
\end{lstlisting}





\subsection{Limites}


La syntaxe est \code{limit(expresssion,variable,point considéré)}


Par exemple 

\begin{lstlisting}
limit(x^2-5*x+6,x,+infinity)
\end{lstlisting}


\begin{lstlisting}
limit((2*x-sqrt(x))/(sqrt(x)-3),x,+infinity)
\end{lstlisting}


Attention~:~si vous tapez

\begin{lstlisting}
limit((x+4)/(x^2+3*x+2),x,-2)
\end{lstlisting}


la réponse est trop imprécise. Il faut préciser si vous êtes à gauche (-1) ou à droite (1)

\begin{lstlisting}
limit((x+4)/(x^2+3*x+2),x,-2,-1)
\end{lstlisting}

Reprenez d'autres exemples des exercices 9 et 11.

\subsection{Calcul différentiel}

Un peu en avance sur le cours, voyons comment on obtient explicitement des calculs de dérivées.

L'outil principal est l'opérateur \texttt{diff} qui donne l'\textit{expression} dérivée d'une \textit{expression} donnée :

\begin{lstlisting}
f(x)=x^3+5x+1/x
diff(f(x))
\end{lstlisting}

Si on veut utiliser la \textit{fonction} dérivée, il faut utiliser \texttt{function\_diff}

\begin{lstlisting}
fp:=function_diff(f);  
fp(3)
\end{lstlisting}


ou bien sûr \texttt{unapply} comme nous l'avons vu précédemment.


\bigskip

Mais tout ceci n'est qu'un début... Il nous reste à voir encore pas mal de fonctions de XCAS que nous découvrirons tout en explorant le cours de Terminale. 

\end{document}