TP No 1 - Université de Montpellier

Transcription

TP No 1 - Université de Montpellier
Université de Montpellier II
Année Universitaire 2012-2013
Faculté des Sciences
Mathématiques
L3 : module GLMA506 Analyse numérique des ODE
TP No 1 : PRESENTATION DU CALCUL SUR ORDINATEUR
1 Initialisation des TP.
1.1 Connectez-vous sous Linux.
Vous avez tous un compte informatique dans les salles de l’UFR.
Vous possédez donc un nom d’utilisateur (login) et un mot de passe (password) : connectez-vous.
Un Terminal apparaît : c’est votre fenêtre de travail sous Linux. Sur une ligne se trouve votre nom d’utilisateur
suivi du numéro de la machine : c’est la ligne de commandes sur laquelle vous entrerez les instructions. Exemple :
[arimbaud@p12 ~]$.
Vous vous trouvez à présent dans votre répertoire principal.
Si le Terminal n’apparaît pas automatiquement, cliquez sur l’icône bleue forme d’écran vidéo.
Par exemple, tapez successivement les instructions suivantes (toujours suivies de la touche ’ Entrée’) :
ls ls -l pwd whoami whoareyou ( le message ’command not found’ indique que votre commande
est invalide !)
Familiarisez-vous, si ce n’est pas déjà fait, avec la manipulation du clavier, de la souris, (insertion/suppression,
copier-coller, ...), des fenêtres (déplacement, agrandissement/réduction, mise en premier plan/arrière plan, mise en
icône, fermeture,...), des bureaux virtuels, des différents menus, ...
1.2 Création des 8 répertoires de TP.
Entrez successivement les instructions suivantes (donc dans la fenêtre de travail correspondant à votre répertoire
principal) :
mkdir TP_CS
(vous créez le répertoire, ou dossier, ’ TP_CS’ qui sera utilisé pour vos TP)
cd TP_CS
(vous vous déplacez dans ce répertoire) (le fichier TP_CS.tar.gz est aussi sur l’ENT)
tar -zxvf /commun/math/cuer/L3/2011-2012/glma506/TP_CS.tar.gz
Cette dernière commande (un peu technique) a pour effet de créer vos 8 répertoires de TP à l’intérieur du répertoire
TP_CS. Ils contiennent les fichiers des programmes que vous ferez fonctionner.
Entrez la commande : ls TP* : vous listez ce que contiennent chacun des répertoires TP1,TP2, ..., TP8.
Vous pourrez vous déplacer dans ces répertoires grace aux commandes mises en annexe de cette feuille de TP. Vous
pourrez également utiliser le gestionnaire de fichier (icône ’ Dossier personnel ’).
ATTENTION ! ! ! Vous n’avez à effectuer cette création qu’une seule fois, uniquement lors de ce
premier TP.
1.3 Accés au répertoire du TP1 (et aux autres).
Lorsque vous vous connectez à une machine, un Terminal s’ouvre automatiquement (ou manuellement). Voici alors
comment accéder au répertoire du TP1 (et aux autres) :
- Ouvrez un nouveau Terminal et placez-vous sur la ligne de commande (éventuellement tapez ls pour visualiser
ce que contient votre compte utilisateur)
- Tapez : cd TP_CS
(vous vous déplacez dans le répertoire TP_CS)
- Tapez : cd TP1
(vous vous déplacez dans le répertoire TP1)
- Tapez : ls ou encore ls -l
Apparaissent, en particulier, les fichiers de programmes écrits en langage Fortran nommés : ’ premiers.f ’ et ’
calpi.f ’. Ceux sont eux que vous allez utiliser dans le paragraphe 2. (Il s’agit du vieux et célèbre langage ’ Fortran77
’ ...).
Remarque : le fichier ’ listings_programmes.txt ’ contient les listings - pour lecture seule - des programmes utilisés
pendant ce TP.
Remarque : Le sous-répertoire ’ Autres_programmes ’ contient des fichiers de programmes facultatifs (en ’ Fortran90 ’, en ’ langage C ’, en ’ langage Matlab ’). Pour les voir tapez : ls Autres_programmes . On ne les
utilisera pas ...
Ainsi, en début de chaque TP vous procéderez comme auparavant. Par exemple, à la prochaine séance,
vous taperez
cd TP_CS
cd TP2
ls -l
Remarque : la commande pwd est utile. Elle localise le répertoire où vous vous trouvez (voir le guide de langage
Unix à la fin).
Remarque : il existe des alternatives plus sophistiquées. Par exemple :
1
cd ../TP2
cd ; cd TP_CS/TP2
cd ~/TP_CS/TP2 (voir le guide de langage Unix).
2 Un langage de programmation pour le calcul numérique : Fortran.
2.1 Premier exercice : calcul des nombres premiers.
On se propose de calculer les 100 premiers nombres premiers au moyen d’un algorithme qui s’apparente au crible
d’Ératosthène. Pour cela on range les nombres premiers dans un tableau d’entiers à une dimension (ou vecteur) nommé
’n’.L’entier n(i) , où i est l’indice, compris entre 1 et imax=100 , représente donc le i-ème nombre premier calculé. Voici l’algorithme très classique et très simple que l’on utilise :
1) - On pose n(1)=2, i=1 et j=1
2) - On remplace j par j+2
3) - Dans une boucle on divise successivement j par n(k) pour k variant de 1 à i.
Si le reste d’une division est nul, on peut affirmer que j n’est pas premier, et on retourne en 2).
Si tous les restes sont non nuls, on peut affirmer que j est premier, et on passe à l’instruction 4).
4) - On remplace i par i+1 et l’on écrit : n(i)=j.
Si i=imax=100 on affiche le résultat et l’on s’arrête. Sinon on retourne à l’instruction 1).
L’organigramme de cet algorithme est donc le suivant :
n(1)=2, i=1, j=1
j=j+2
vrai
boucle
k=1,i
j divisible par n(k) ?
toujours
faux
i=i+1, n(i)=j
faux
i=100 ?
fin
Le programme Fortran correspondant, écrit dans le fichier ’ premiers.f ’ est le suivant.
Lisez-le, de préférence en l’éditant par la commande : emacs premiers.f & (ou xemacs premiers.f &)
PROgRAm premiers
Commentaire : ce programme calcule les imax premiers nombres premiers
C Un programme en Fortran commence toujours par ’PROGRAM’, suivi de son nom
C MAJUSCULES et minuscules sont equivalentes
C Toutes les INSTRUCTIONS commencent à la 7-EME COLONNE, à l’exception des commentaires, des
étiquettes, ...
C Une ligne de COMMENTAIRES s’écrit en placant un ’C’ en 1-ERE COLONNE. Elle n’est PAS LUE lors
de l’execution ! ! !
C DECLARATION DES VARIABLES ET PARAMETRES :
C ’imax’ est déclare comme paramètre (’PARAMETER’) : il ne peut plus changer dans la suite du programme ...
C mais vous pourrez le modifier, et recompilier le programme.
PARAMETER (imax=100)
C les VARIABLES ’n,i,j,k’ sont déclarées de type entier (’INTEGER’), et ’n’ est un tableau (’DIMENSION’)
de taille imax
INTEGER n,i,j,k
DIMENSION n(imax)
2
C Initialisation de certaines variables en jeu ...
n(1)=2
i=1
j=1
C Une étiquette numerotée ’n’ se place en 2ème colonne. Elle correspond au saut : ’GO TO n’
1
j=j+2
C Ce qui va suivre est une BOUCLE ITERATIVE, pour l’indice k variant de 1 à i ( boucle allant de ’DO’
à ’ENDDO’).
C Elle contient des intructions conditionnelles ’IF’.
C .EQ. , .LT. , .LE. , .GT. , .GE. signifient respectivement : =, <, <=, >, >=,
C x**n correspond à x puissance n
C La fonction partie entière ’INT’ est facultative car Fortran considère comme entier le quotient de deux
entiers ... ( !)
DO k=1,i
IF(INT(j/n(k))*n(k).EQ.j) GO TO 1
IF(j.LT.n(k)**2) GO TO 2
ENDDO
2
i=i+1
n(i)=j
IF(i.LT.imax) GO TO 1
C Ecriture à l’écran du tableau n contenant les imax nombres premiers
C (cette écriture est faite dans un format donné à l’etiquette 3 ... peu importe).
WRITE(6,3) (n(i),i=1,imax)
3
FORMAT(13(1x,I5))
C Tout programme se termine par ’STOP’ puis ’END’
STOP
END
NB : 1) Les programmes en Fortran sont contenus dans des fichiers ’sources’ dont le nom se termine
obligatoirement par l’extension : ‘ .f ’
2) Quelques indications sur la syntaxe Fortran sont données en commentaire dans ce programme
(et le suivant). Elles sont suffisantes pour les manipulations ultérieures, où l’on ne demandera pas
d’écrire des programmes, mais seulement de savoir en modifier certaines instructions.
EXECUTION DU PROGRAMME (BIEN LIRE TOUS LES ’NB’ QUI SUIVENT) :
1) Pour compiler le fichier source ’ premiers.f ’, tapez :
premiers.f ou ...)
f77 premiers.f (ou g77 premiers.f ou gfortran
NB : ’Compiler’ un fichier source, c’est créer à partir de ce dernier - lisible et modifiable par l’utilisateur - ,
un autre fichier, dit ’exécutable’. Ce dernier, non modifiable et non lisible par l’utilisateur, est écrit dans un langage
compréhensible par l’ordinateur, qui va donc pouvoir l’exécuter. Il s’agit donc d’une traduction . Le nom par défaut
de ce fichier est ’ a.out ’ .
2) Tapez ensuite : . / a.out pour exécuter le fichier (donc le programme) ’ a.out ’ : il doit donc afficher les 100
premiers nombres premiers.
3) On se propose à présent de calculer les 1000 premiers nombres premiers. Pour cela, il faut :
a) Modifier convenablement le fichier Fortran : éditez-le en tapant : emacs premiers.f &. Il s’agit de changer
le paramètre ’imax’. (N’oubliez pas la perluète ’&’ après emacs . Elle permet de libérer la ligne de commande.)
b) Sauvegarder le fichier ainsi modifié (Menu ’ File/Save ’, ou encore clic sur la disquette de la barre de menus).
c) Compiler à nouveau ce fichier source, en tapant : f77 premiers.f
d) Relancer l’exécution du programme, en tapant : . / a.out
NB : Cette étape 3) de modification des paramètres (ou instructions) d’un fichier Fortran est
importante. C’est essentiellement ce que vous ferez plus tard, lors des manipulations en Fortran.
3
NB : LORS DE LA COMPILATION du fichier (avec f77), il ne doit y avoir AUCUN MESSAGE
D’ERREUR ! ! Sinon il faut RECTIFIER les erreurs, signalées lors de la compilation (mises en évidence et indiquées avec le numéro de la ligne correspondante) avec l’éditeur de texte emacs, SAUVER
puis COMPILER de nouveau le fichier jusqu’à correction de toute erreur.
4) Le programme Fortran ne suit pas exactement les indications de l’algorithme sur papier. Voyez-vous à quel
endroit ? Quel en est l’intérêt ?
2.2 Deuxième exercice : calcul approché du nombre π, par la méthode d’Archimède, et illustration
des erreurs numériques.
Cet exercice, trouvé dans un ouvrage de Henrici, est un exemple assez clair de ce que peuvent provoquer les erreurs
d’arrondis (en virgule flottante) et des remèdes quelquefois possibles.
La méthode d’Archimède pour trouver une approximation de π consiste à calculer le périmètre d’un polygone
régulier à 2.2k cotés, et inscrit dans un disque de rayon 1. Ceci se justifie par :
yk = 2k sin(
π
) →k→∞ π
2k
.
1) En utilisant les formules de trigonométrie 1 − 2 sin2 ( α2 ) = cos(α) et | cos(α)| =
suite {yk } vérifie :
s r
1
yk 2
k+1
1− 1−( k) ,
y1 = 2, yk+1 = 2
2
2
q
1 − sin2 (α), montrer que la
(1)
et aussi :
y1 = 2, yk+1 = yk
s
1+
2
p
.
1 − ( y2kk )2
(2)
2) Exécuter le programme Fortran correspondant contenu dans le fichier source ’ calpi.f ’, et observez les valeurs
de la suite {yk } produite par ces deux formules.
3) Pourquoi la première suite ne converge-t’elle pas numériquement vers π, mais vers 0 ? Montrez-le.
4) D’après vous, comment remédier à ce problème ?
5) Modifier le programme pour passer en double précision, et relancez-le. Modifiez aussi la valeur de ’ n ’. Commentez.
Voici le texte du programme en Fortran ’calpi.f ’ :
PROGRAM calpi
C Ce programme calcule Pi de 2 manieres mathematiquement equivalentes, mais non numeriquement :
C les resultats obtenus (stockes dans les variables y1 et y2) le montrent bien !
INTEGER n,k
CCC Tous les commentaires ’C’ ici correspondent aux lignes qu’il faudrait
CCC ecrire pour avoir des calculs en ’DOUBLE PRECISION’ (deux fois plus de decimales).
CCC Dans sa forme presente, le programme calcule en simple precision : ’REAL’
C
DOUBLE PRECISION y1,y2,z
REAL y1,y2,z
CCC Nombre de pas de la boucle de calcul ’DO’. A changer eventuellement.
n=20
CCC ATTENTION : les REELS (REAL) sont toujours ecrits avec une partie decimale : 2.0 ou 2.
y1=2.0
y2=2.0
z=2.0
CCC Initialisation de y1 y2 et z en double precision ...
C
y1=2.0D0
C
y2=2.0D0
C
z=2.0D0
DO k=2,n
4
CCC Calcul des suites y1 et y2 en simple precision (utilisee par defaut)
CCC SQRT represente la racine caree, et ** l’operateur puissance.
CCC ATTENTION : les REELS (REAL) sont toujours ecrits avec une partie decimale : 2.0 ou 2. ou .5
y1=2.0*z*SQRT((1.0-SQRT(1.0-(y1/z)**2))/2.0)
y2=y2*SQRT(2.0/(1.0+SQRT(1.0-(y2/z)**2)))
z=2.0*z
CCC Calcul des suites y1 et y2 en double precision
C
y1=2.0D0*z*DSQRT((1.0D0-DSQRT(1.0D0-(y1/z)**2))/2.0D0)
C
y2=y2*DSQRT(2.0D0/(1.0D0+DSQRT(1.0D0-(y2/z)**2)))
C
z=2.0D0*z
CCC Ecriture du resultat a l’ecran dans un format quelconque : ’*’
CCC ATTENTION : le ’S’ ou ’+’ place en 6-IEME COLONNE indique que l’instruction continue
CCC a la ligne suivante. En effet, les instructions NE peuvent PAS depasser la 72-IEME COLONNE
WRITE(6,*) ’Iteration k=’,k, ’ : y1k=’,y1,’ —- y2k=’,
S y2
ENDDO
CCC Une maniere d’obtenir Pi avec l’arctangente ’ATAN’ : Fortran ne fait que du calcul, aucune
CCC constante mathematique n’est memorisee ( a la difference de Maple ).
WRITE(6,*) ’alors que PI=’,4.0*ATAN(1.0)
C
WRITE(6,*) ’alors que PI=’,4.0D0*DATAN(1.0D0)
STOP
END
3 Aperçu des logiciels libres de calcul numérique Scilab et Octave.
3.1 Nombres premiers avec Scilab.
– Tapez scilab : cela lance le logiciel de calcul numérique ’ Scilab ’.
– Tapez getf(’premiers.sci’) puis : Imaxpremiers(100) : cela affiche les 100 premiers nombres premiers en
invoquant le fichier source ’ premiers.sci ’ contenant le programme nommé ’Imaxpremiers’, et appelé avec l’argument
’ imax=100’.
– Cliquez sur Help pour accéder à la rubrique d’aide avec fenêtre. Vous pouvez ainsi visualiser les fonctions dont
ce logiciel dispose, ainsi que leur manuel d’utilisation avec exemples.
– Sélectionnez File/Quit dans le Menu pour fermer le logiciel.
– Lisez ce que contient le fichier source ’ premiers.sci ’ en l’éditant avec ’ emacs ’. Vous avez un aperçu de la syntaxe
de Scilab.
3.2 Nombres premiers avec Octave.
– Tapez octave : cela lance le logiciel de calcul numérique ’ Octave ’.
– Tapez premiers(100) : cela affiche les 100 premiers nombres premiers en invoquant le fichier source ’ premiers.m’
contenant un programme (obligatoirement) du même nom, appelé avec l’argument ’ imax=100’.
– Tapez help pour accéder à la rubrique d’aide ...
– Tapez exit pour fermer le logiciel.
– Lisez également ce que contient le fichier source en langage Octave ’ premiers.m ’. La syntaxe est très similaire
à celle de Scilab.
Remarque : pour ceux que cela intéresse, il y a dans le répertoire ’Autres_programmes’ le fichier source ’ tp1.c ’
écrit en Langage C. Nous n’aborderons pas ce langage en TP.
4 Un logiciel payant de calcul symbolique et numérique : Maple.
Maple n’est pas, comme Fortran, Scilab et Octave, un outil de calcul numérique (qu’il fait très lentement), mais
beaucoup plus un logiciel de ’calcul symbolique’, bien adapté aux mathématiques. Il contient des milliers de fonctions prédéfinies, et est doté d’une syntaxe facile d’accés, quoique pouvant devenir rapidement complexe... Il peut vous
permettre de mieux comprendre ou d’approfondir certaines notions mathématiques via la rubrique d’aide (Help) très
fournie en exemples.
4.1 Calcul des nombres premiers et de π avec Maple.
1) Sur votre ligne de commande, tapez : xmaple & et sélectionnez ’Maple9’, avec par exemple l’interface ’classique’. S’ouvre alors la fenêtre de travail du logiciel Maple.
2) Sur la ligne de commande du logiciel (là où se trouve le symbole ’>’), tapez :
ithprime(100) ;
evalf(Pi) ;
5
Les choses sont plus simples ... sur ces exemples, tout au moins . Vous pouvez également écrire des instructions itératives, des fonctions, des programmes (procédures)... Voici un exemple très simple d’itération :
3) Tapez : for i from 1 to 10 do ithprime(i) end do ;
On peut aussi augmenter la précision de certains calculs en virgule flottante. Par exemple :
4) Tapez :
Digits :=1000 ; evalf(Pi) ; Digits :=3 ; evalf(Pi) ; Ou encore :
restart ; evalf(Pi,50) ;
NB : Dans la fenêtre de Maple, vous pouvez relancer les instructions précédentes en revenant dessus avec le curseur, et en appuyant sur la touche ’Entrée’. La commande ’restart’ réinitialise tout le
système.
5) Continuez autour de ces thèmes ... La fonction d’aide (’Help’ dans le Menu) de Maple fournit
explications, exemples (à recopier par ’copier/coller’), et fonctions associées à celle dont on demande
le manuel d’utilisation ( le ’See Also :’ en bas de page). Commencer par ’Help / Introduction’. Est
également utile : ’Help / Topic Search’.
Tapez par exemple :
a :=cos(Pi/4) ; evalf(a) ;
sin(x+Pi) ;
sin(x+y) ; b :=expand(sin(x+y)) ; combine(b) ;
isprime(423423) ; isprime(423427) ; isprime(11423423) ;
ifactor(423423) ; ifactor(11423423) ;
nextprime(10^10) ; prevprime(10^10) ;
A vous de chercher dans l’aide, et d’imaginer d’autres commandes ...
4.2 D’autres exemples ...
Allez dans la rubrique d’aide (’ Help ’), sélectionnez ( ’ Introduction ’) puis :
1) Mathematics / Packages / linalg
Ensuite, sélectionnez par exemple les fonctions ’ inverse ’, ’ matrix ’, ’ det ’, ’ norm ’, ’transpose’, ’multiply’,
’ eigenvects ’ . Lisez à chaque fois les explications, et recopiez des exemples par ’ copier/coller ’ afin de les faire
exécuter par Maple. Modifiez-les ...
2) Graphics / 3-D
Ici, sélectionnez par exemple les fonctions ’ plot3d ’ , ’ animate3d ’ . Faites tracer quelques-unes des courbes en
3D proposées, inventez-en...
La fonction ’ plot ’ sera très utilisée dans les prochains TP.
3) Continuez le parcours de la rubrique d’aide et ses exemples...
NB : A la fin, vous pouvez sauvegarder votre travail (Menu ’File / Save’ ou barre de menus), par
exemple dans un fichier nommé ’ tp1.mws ’. Vous pourrez, plus tard, utiliser le fichier ainsi sauvegardé
en sélectionnant ’File/Open’ dans le Menu. Pensez à sauvegarder fréquemment ce que vous écrivez (en
cas de plantage).
NB : quand vous ouvrirez un fichier Maple il faudra toujours faire ’Entrée’ sur les instructions
(procédures) que nécessite votre calcul : elles ne sont pas exécutées automatiquement.
— FIN DU TP —
CE QUI SUIT EST CEPENDANT IMPORTANT POUR MIEUX MAITRISER
L’ENVIRONNEMENT ET TRAVAILLER PLUS RAPIDEMENT :
6
5 ANNEXE IMPORTANTE : Conseils pratiques, petit aide-mémoire pour la programmation, et
mini-guide de langage Unix.
5.1 Conseils pratiques.
1. ALLER PLUS VITE
– Sauvegarder fréquemment un travail en cours. Cela évitera de tout perdre en cas de bug inopiné.
– Utilisez les deux flèches verticales pour rappeler les commandes précédemment entrées. Vous irez beaucoup plus vite.
– Utilisez !a ou !ab pour rappeler respectivement la dernière commande entrée commençant par ’a’ ou par
’ab’. Taper history vous donne la liste de vos dernières commandes.
– Tapez la ou les premières lettres, puis pressez la touche Esc vous permet d’éviter d’avoir à taper en entier
le nom d’un fichier ou d’un répertoire.
– N’oubliez pas le ’ copier/coller ’ (’ copy / paste ’) utilisable dans les menus ou avec la souris.
– Familiarisez-vous avec le Menu des éditeurs de texte ou des logiciels que vous utilisez.
2. GERER L’ESPACE DE TRAVAIL
– Le symbole & placé à la suite de certaines commandes appelant les éditeurs ou logiciels avec fenêtre de travail
permet de “conserver la main” (de ne pas bloquer la ligne de commande). C’est le cas pour les commandes
emacs, xemacs, ooffice, xmaple, xfig, ghostview, lyx, acroread, netscape, mozilla, kview, ....
– Vous pouvez configurer votre ’Bureau’, votre ’Tableau de bord’, ...
– ... et utiliser plusieurs bureaux (’bureaux virtuels’) pour plus de facilité.
– Préférez ces dernières options (garder la main avec ’&’, travailler sur 3 ou 4 bureaux virtuels, avec plusieurs
terminaux ouverts ...) à celle qui consiste à iconifier trop de fenetres dans un meme bureau... Vous risquez d’avoir trop
de taches en activité, d’oublier de les refermer, ... ou d’éditer par exemple deux fois le meme fichier, ce qui aura pour
effet de le bloquer !
– Ne pas oublier de faire régulièrement du “ménage” dans vos fichiers (cf. tout à la fin de cette annexe).
3. INVOQUER DE L’AIDE
– Avoir toujours le réflexe de taper help ou de cliquer sur Help dans le Menu d’un logiciel : c’est parfois comme
cela qu’on en découvre un nouveau le plus facilement et efficacement.
– Penser aux commandes Unix man et xman pour faire affichier le manuel d’utilisation d’une commande (cf. guide
plus bas).
– Sur le site ’ rez-ufr ’ beaucoup de choses vous sont expliqués quand à la gestion de votre compte. Lisez aussi
la ’Charte informatique’.
4. DEBOGUER ...
– Tapez (en général) Control-C ou Control-D pour débloquer la ligne de commande, arréter un programme
qui a “bouclé” ou “bogué”.
– La commande Unix xkill permet de “tuer” une fenetre (d’un logiciel souvent) qui se serait bloquée.
– Les commandes ps ou ps -ef suivi de kill -9 No de processus ont pour effet de visualiser puis de “tuer” un
processus que vous voulez supprimer ( parceque bloqué, uniquement ...).
– Ne jamais éteindre un ordinateur. Utiliser Control-Alt-Backspace pour vous déconnecter si tout est
bloqué.
5.2 Petit aide-mémoire pour la programmation.
• f77 : Pour compiler un programme écrit en langage ’Fortran 77’ (contenu dans un fichier s’écrivant obligatoirement
avec l’extension ‘ .f ’ , par exemple : tp1.f ).
Taper f77 tp1.f a pour effet de compiler le fichier ’ tp1.f ’ , c’est à dire de créer, à partir de ce ’fichier source’ de
programmation, un fichier écrit en un langage exécutable par l’ordinateur. Le nom par défaut de cet ’exécutable’ est :
’ a.out ’.
Taper ensuite ./a.out pour ’lancer le programme’ Fortran.
NB : Lors de la compilation du fichier, il ne doit y avoir aucun message d’erreur . Sinon il faut (cf.
exercice 2.1. du TP1 ) :
a) Rectifier les erreurs, signalées à la compilation, mises en évidence et indiquées avec le numéro de la ligne
correspondante dans le fichier Fortran (en tapant emacs tp1.f & ou xemacs tp1.f & , par exemple).
7
b) Sauvegarder ’ tp1.f ’.
c) Compiler à nouveau ce dernier.
d) Relancer le programme.
• gnuplot : Lance le logiciel de traçage de courbes “Gnuplot”, associé souvent à la programmation en Fortran.
Taper gnuplot (Voir ensuite les exercices des TP. On peut accéder à la rubrique d’aide en tapant help.)
• xmaple Logiciel commercial de calcul symbolique (et numérique) “Maple”.
Tapez : xmaple &
(Faire ensuite les exercices proposés dans les TP. En explorer également le Menu, en particulier la rubrique d’aide
’Help’, où l’on trouvera beaucoup d’exemples simples d’instructions en langage Maple, que l’on pourra recopier à la
souris sur la ligne de commande de Maple.)
• scilab : Logiciel libre de calcul numérique “Scilab”.
Tapez : scilab . On procède ensuite un peu dans le même esprit que Maple, à l’intérieur de la fenetre de travail et
avec la rubrique d’aide.
• octave : Logiciel libre de calcul numérique “Octave”.
Tapez : octave . Pas de fenetre ici ... mais une aide cependant.
• matlab : Logiciel commercial de calcul numérique “Matlab”, dont Octave est une version dérivée beaucoup plus
simple, mais gratuite.
Tapez : matlab& . Tester pour commencer le mode démonstration ’Demos’.
5.3 Mini-guide de langage Unix.
On rappelle que l’on peut se passer de la connaissance des commandes Unix, et utiliser les menus
déroulants, boites de dialogues, etc ... comme sous d’autres environnements. Cette option est laissé à
votre libre choix. On n’en parle pas ici.
Utilisation des commandes clavier en langage Unix.
– Où taper les commandes ? :
uniquement dans la fenêtre de travail, sur la “ligne de commande” (ligne où se trouve écrit votre nom d’utilisateur)
Exemple : whoami
– Quelle est la syntaxe générale d’une commande ? :
nom-de-la-commande [–options] [fichier(s)-ou-répertoire(s)-concerné(s)]
Exemple : ls -l TP1 ou encore : cp -R TP1 TP1_bis
Attention : bien respecter les espacements entre commande, options, et fichiers/répertoires
– Comment avoir des explications sur une commande ? :
Tapez : man nom-de-la-commande
(Essayer également : xman &)
Attention : Vous devez toujours lire et essayer de comprendre les messages d’erreurs fournis par Unix
à la suite d’une commande erronée.
NB : Plusieurs commandes peuvent etre écrites à la suite grace au ’ ; ’ . Exemple : cd TP1 ; ls
Les principales commandes Unix pour gérer vos fichiers et répertoires
– Vous fichiers sont classés dans des répertoires, eux-mêmes disposés en arborescence (sous-répertoires) (cf. la figure
plus loin).
– Lorsque vous tapez des instructions dans une fenêtre de travail, votre ligne de commande ou “shell” ( qui
correspond virtuellement à l’utilisateur que vous etes ) se trouve toujours dans un de ces répertoires : le “répertoire
courant”.
Au début d’une session, aprés vous être connecté, votre répertoire courant est toujours votre répertoire principal, ou
“répertoire-utilisateur”, qui porte votre nom de login.
– Vous pouvez vous déplacer dans l’arborescence de vos répertoires (modifiables à souhait), et même, pour autant
que cela est permis, dans l’arborescence de tout le système informatique de l’UFR.
– Dans vos répertoires, qui sont seulement des ‘tiroirs’ de rangement, vous pourrez créer, visualiser, dupliquer,
détruire des fichiers de toute sorte.
8
Les commandes les plus fréquentes sont :
• ls : pour lister fichiers et répertoires. Exemples :
ls . ou ls : liste fichiers et répertoires se trouvant dans le répertoire courant , répertoire symbolisé par le symbole
point : ’ . ’
ls .. : liste fichiers et répertoires se trouvant dans le répertoire supérieur (“répertoire père”), symbolisé par le
symbole : ’ .. ’
ls -l : même opération que ’ ls ’, mais avec l’option ’ l ’ , qui donne plus d’informations (’ listing long’).
ls Rep : liste le contenu du répertoire ’Rep’. Par exemple : ls TP1 ou ls -l TP* ou ls -la *
NB : Sous Unix, le caractère “*” remplace n’importe quelle chaıˆne de caractères.
• mkdir : pour créer un répertoire.
mkdir Rep : crée le répertoire nommé ’ Rep ’ (dans le répertoire courant).
• cd : pour vous déplacer dans les répertoires. Exemples :
cd Rep : pour aller dans le répertoire ’ Rep ’ (depuis le répertoire courant, bien sûr).
cd Rep1/Rep2/Rep3 : suit un chemin dans les répertoires. Par exemple : cd TP1/Autres_programmes
cd .. : pour remonter au répertoire supérieur (celui au dessus dans l’arborescence). Par exemple : cd ../TP2
cd ../.. (remonte deux répertoires plus haut)
cdeou cd : pour revenir directement à votre répertoire principal d’utilisateur.
cd e/TP1 (depuis n’importe quel endroit de l’arborescence, permet de retourner à dans répertoire principal, pour
aller dans le répertoire ’ TP1 ’)
cd / ; ls ; cd : vous montez tout en haut des répertoires de votre ordinateur, situés à la racine de l’arborescence
Unix ’ / ’ , vous listez les répertoires ’principaux’ (se trouvant à cet endroit, et pour la plupart protégés) , puis
retournez dans votre ’compte-utilisateur’.
Voici une illustration de l’arborescence des utilisateurs, et de l’ utilisation de la commande cd. Vous etes l’utilisateur
A:
utilisateur A
cd ..
utilisateur U
cd B2
B1
cd ~U
ou cd ../../U
B2
cd ../..
cd B1/C2
cd C1
C1
cd ../../B2 ou cd ~/B2
C2
• emacs, xemacs, kwrite, ... : éditeurs de texte, c’est à dire logiciels permettant de créer et modifier un fichier
contenant un texte.
Exemple : emacs tp1.f & (Se familiariser ensuite avec le Menu.)
NB : Le caractère & permet de laisser la ligne de commande libre de recevoir d’autres instructions, de “garder la
main” .
• more : Permet de faire défiler le contenu d’un fichier dans la fenêtre de travail, sans avoir à l’éditer (et donc sans
pouvoir le modifier). Exemple :
more tp1.f (Utiliser ensuite la touche Return ou la Barre d’espace pour faire défiler le texte, taper “q ” pour
quitter).
9
• cp : pour copier (dupliquer) des fichiers. Exemples :
cp fichier1 fichier2 : copie ’ fichier1 ’ en ’ fichier2 ’ (à l’intérieur du répertoire courant).
cp Rep1/Rep2/fichier1 Rep3/Rep4/fichier2 : copie ’ fichier1 ’ (avec le chemin pour y accéder depuis le
répertoire courant : ’ Rep1/Rep2 ’) en ’ fichier2 ’ (dans le répertoire dont le chemin d’accés depuis le répertoire
courant est ’ Rep3/Rep4 ’).
cp e nom-d’utilisateur/TP1/tp1.f
tp1-copie.f
cp ../TP3/donnees.dat
. Ecrire ’ . ’ sans préciser de nom de fichier a pour effet de copier le fichier d’origine
dans le répertoire courant (lui-meme appelé ’ . ’) en lui conservant son nom.
Remarque : De manière analogue la commande mv permet de déplacer ou renommer un fichier ou un répertoire
(dangereux).
• rm : pour effacer un fichier. Exemples :
rm a.out : efface le fichier ’ a.out’ .
rm * : efface tous les fichiers du répertoire courant. (A manier avec précaution !)
rm -R Rep : efface le répertoire ’Rep’...
NB : Faites un peu de ménage. La place mémoire dont chaque utilisateur dispose est limitée et vous risquez,
en surchargeant votre compte de le retrouver verouillé. (Utilisez les commandes quota, du, df /home pour obtenir
des informations ...) Il vous faudra donc peut-etre détruire, au bout d’un certain temps, des fichiers inutiles ou sans
importance pour votre travail. En particulier, les fichiers d’erreurs nommés ’ core ’ sont très volumineux. D’autres
aussi, comme le répertoire ’cache’ de mozilla, et certains fichiers issus du web. Demandez conseil à l’enseignant.
10

Documents pareils