630 likes | 1k Views
Annexe : présentation de Scilab. 1. Introduction à Scilab. Les outils de calcul scientifique (1/2). Deux types d’outils : Les langages de calcul symbolique Maple, Mupad, … exemple (Maple) :. Les outils de calcul scientifique (2/2). Les langages de calcul numérique Matlab, Scilab, …
E N D
Les outils de calcul scientifique (1/2) Deux types d’outils : • Les langages de calcul symbolique • Maple, Mupad, … • exemple (Maple) : Scilab
Les outils de calcul scientifique (2/2) • Les langages de calcul numérique • Matlab, Scilab, … • exemple (Scilab) : Scilab
Présentation de Scilab (1/2) • Logiciel libre développé par l’I.N.R.I.A. (Institut National de Recherche en Informatique et Automatique) • Dispose des méthodes usuelles du calcul numérique : • résolution de systèmes linéaires • calcul de valeurs propres, vecteurs propres, • décomposition en valeurs singulières • transformée de Fourier rapide, • résolution d'équations différentielles, • algorithmes d’optimisation, • résolution d'équations non linéaires, • génération de nombres aléatoires, • de nombreuses primitives d'algèbre linéaire ... Scilab
Présentation de Scilab (2/2) • Une batterie d’instructions graphiques • de bas niveau (tracer un polygone, récupérer les coordonnées du pointeur de la souris, etc.) • de haut niveau (visualiser des courbes, des surfaces) • petites animations possible grâce a l’utilisation d ’un double buffer • Un langage de programmation interprété • assez simple et agréable • assez puissant car il intègre les notations matricielles • présence d’un pseudo débogueur • possibilité de lier Scilab à des sous-programmes C ou Fortran Scilab
Où trouver de l’information sur Scilab ? • Scilabhome page : http://www.scilab.org (de nombreuses infos, liens + téléchargement gratuit des versions Windows, Unix, Linux, Mac) • Forum usenet : comp.sys.math.scilab • L’aide en ligne de Scilab ! Scilab
L’interface Scilab L’interface Linux "prompt" Scilab
Premiers exemples... Affectation : variable = expression ou expression Scilab
Fonctions usuelles Scilab
L’aide de Scilab (1/2) Scilab
L’aide de Scilab (2/2) Scilab
Informations sur l’espace de travail : la commande who (1/2) Variables d’environnement Variables définies par l’utilisateur Constantes prédéfinies Bibliothèques Scilab Nombre de mots de 8 octets utilisés Mémoire totale disponible Nombre de variables utilisées Nombre maximum de variables autorisé Scilab
Informations sur l’espace de travail : la commande who (2/2) • Changer la taille de la pile : stacksize(nbmots) • supprimer une variable v1 de l ’environnement : clear v1 Scilab
Définir une matrice Espace ou virgule entre chaque colonne Point-virgule entre chaque ligne Pour continuer la description à la ligne suivante Matrice complexe Scilab
Référencer les coefficients d ’une matrice • Préciser les indices entre parenthèse Scilab
Quelques matrices types (1/2) • Identité : eye(n_lig, n_col) ou eye(mat) • Matrice diagonale : diag(vect) • Matrice « de 1 » : ones(n_lig, n_col) ou ones(mat) • Matrice nulle : zeros(n_lig, n_col) ou zeros(mat) Pour ne pas afficher le résultat Scilab
Quelques matrices types (2/2) • Matrice remplie de nombres pseudo-aléatoires : rand(n_lig, n_col) • Vecteur à n composantes régulièrement réparties entre x1 et xn : • imposer n : linspace(x1, xn, n) • imposer l’incrementation : x1:incr:xn Scilab
Expressions matricielles (1/6) • Somme, produit, transposée Scilab
Expressions matricielles (2/6) • Les fonctions usuelles s’appliquent aux matrices élément par élément Scilab
Expressions matricielles (3/6) • Opérations entre deux matrices, élément par élément : préfixer l’opération par un point : .* ./ .^ Scilab
Expressions matricielles (4/6) • Résoudre le système linéaire Ax=b Scilab
Expressions matricielles (5/6) • Calcul des valeurs propres : la fonction spec evals=spec(A) A: matrice carrée (réelle ou complexe) evals : vecteur réel ou complexe contenant les valeurs propres Scilab
Expressions matricielles (6/6) • Calcul des vecteurs propres : la fonction bdiag [Ab [,X [, bs]]]=bdiag(A) A : matrice carrée (réelle ou complexe) Ab : matrice carrée diagonale par bloc X : matrice de changement de base (Ab=X-1AX), matrice des vecteurs propres pour A diagonalisable) bs : taille respective des blocs Scilab
Sauvegarder une matrice sur le disque • Utiliser la variable PWD pour savoir où est sauvegardé le fichier Si le nombre de lignes n’est pas connu Scilab
Transformée de Fourier rapide • [x]=fft(a, -1) : FFT directe • [x]=fft(a, 1) : FFT inverse a et x sont des vecteurs réels ou complexes Si a est une matrice, une FFT à deux dimensions est calculée Scilab
Les fenêtres graphiques • Initialement, la fenêtre courante (dans laquelle les dessins sont affichés par défaut) est la fenêtre numéro 0 • On peut utiliser d’autres fenêtres graphiques et basculer de l’une à l’autre à l’aide des instructions suivantes : xset("window",num) la fenêtre courante devient la fenêtre numéro num; si cette fenêtre n’existait pas, elle est créée par Scilab. xselect() met en avant la fenêtre courante ; si aucune fenêtre graphique n’existe, Scilab en crée une. xbasc([num]) efface la fenêtre graphique numéro num; si num est omis, Scilab efface la fenêtre courante. xdel([num]) détruit la fenêtre graphique numéro num; si num est omis, Scilab détruit la fenêtre courante. Scilab
Les courbes dans le plan : plot2d 1. Définir les abscisses dans un vecteur colonne 2. Définir les ordonnées dans un vecteur colonne 3. Tracer le graphe Scilab
Afficher simultanément plusieurs courbes • Plot2d(Mx,My) où Mx et My sont deux matrices de tailles identiques, le nombre de courbes etant egal au nombre de colonnes des deux matrices Un titre plus une légende pour les deux axes Scilab
Les surfaces : plot3d • Surfaces définies par z=f(x,y) Exemple : f(x,y)=cos(x)cos(y) pour (x,y)[0,2][0,2] Scilab
Les courbes dans l’espace : param3d • Surfaces définies par x=f1(t), y=f2(t), z=f3(t) Exemple de l’hélice Scilab
Principales caractéristiques du langage Scilab • Un langage interprété, simple mais complet • les variables ne sont pas déclarées (type, taille) : c’est l’interpréteur qui s’en charge • dispose d’instructions graphiques • interprété plus lent, mais appel de routines compilées (fortran) pour les instructions matricielles • possibilité de lier à Scilab des sous-programmes fortran ou C Scilab
Lire / afficher une donnée • Lire une donnée : -->a=input("Valeur de a ?") valeur de a?-->12 a = 12. • Afficher une donnée : -->disp(a,"Valeur de a :") Valeur de a : 12. • Les fonctions printf et scanf utilisées en C sont aussi reconnues Scilab
La boucle for (1/2) • Syntaxe for variable = matrice instruction_1 … instruction_n end le nombre d’itérations est égal au nombre de colonnes de la matrice et la variable de la boucle à la ième itération est égale à la ième colonne de la matrice Scilab
La boucle for (2/2) • Exemple 1 --> v=[1 -1 1 -1] --> y=0 --> for k=v --> y=y+k --> end • Exemple 2 --> for i=1:1:3 --> disp(i, "iteration no ") --> end iteration no 1. iteration no 2. iteration no 3. Facultatif (1 par défaut) Scilab
La boucle while (1/2) • Syntaxe while condition instruction_1 … instruction_n end • Exemple --> x=1 --> while x<14 --> x=2*x --> end Scilab
La boucle while (2/2) • Opérateurs de comparaison • Opérateurs logiques (vrai : %t faux : %f) Scilab
La construction if then else (1/2) • Syntaxe if condition_1 suite_d_instructions_1 elseif condition_2 suite_d_instructions_2 … elseif condition_n suite_d_instructions_n else suite_d_instructions_n+1 end Scilab
La construction if then else (2/2) • Exemple if x>0 then // la variable x doit être définie y=-x else y=x end Scilab
La construction select case (1/2) • Syntaxe select variable_test case expr_1 suite_d_instructions_1 … case expr_n suite_d_instructions_n else suite_d_instructions_n+1 end Scilab
La construction select case (2/2) • Exemple select num // on suppose que num est defini case 1 y="cas 1" case 2 y="cas 2" else y="autre cas" end Scilab
Les fonctions (1/3) • Syntaxe function [y1,y2,…,yn]=nom_fonction(x1,x2,…,xm) x1,x2,…,xm : arguments d'entrée y1,y2,…,yn : arguments de sortie • Exemple function [y]=fact1(n) // n doit etre un entier naturel y=1 for i=1:n y=y*i end Scilab
Les fonctions (2/3) • Les fonctions sont écrites dans un fichier • la 1ère ligne du fichier doit commencer par l’instruction function • la dernière instruction du ficher doit être suivie d’un passage à la ligne • la tradition est de suffixer les noms des fichiers contenant les fonctions en .sci • pas de mot-clé délimitant la fin d’une fonction (fin du fichier ou function suivant) • pour lire le fichier : getf(’nom_du_fichier’) Scilab
Les fonctions (3/3) • Exemple --> getf(’fact1.sci’) --> m=fact1(5) m = 120. --> n1=2; n2=3; --> fact1(n1*n2) ans = 720. Scilab