1 / 47

Annexe : présentation de Scilab

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, …

armine
Télécharger la présentation

Annexe : présentation de Scilab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Annexe : présentation de Scilab

  2. 1. Introduction à Scilab

  3. Les outils de calcul scientifique (1/2) Deux types d’outils : • Les langages de calcul symbolique • Maple, Mupad, … • exemple (Maple) : Scilab

  4. Les outils de calcul scientifique (2/2) • Les langages de calcul numérique • Matlab, Scilab, … • exemple (Scilab) : Scilab

  5. 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

  6. 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

  7. 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

  8. L’interface Scilab L’interface Linux "prompt" Scilab

  9. Premiers exemples... Affectation : variable = expression ou expression Scilab

  10. Fonctions usuelles Scilab

  11. L’aide de Scilab (1/2) Scilab

  12. L’aide de Scilab (2/2) Scilab

  13. 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

  14. 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

  15. 2. Algèbre linéaire

  16. 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

  17. Référencer les coefficients d ’une matrice • Préciser les indices entre parenthèse Scilab

  18. 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

  19. 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

  20. Expressions matricielles (1/6) • Somme, produit, transposée Scilab

  21. Expressions matricielles (2/6) • Les fonctions usuelles s’appliquent aux matrices élément par élément Scilab

  22. Expressions matricielles (3/6) • Opérations entre deux matrices, élément par élément : préfixer l’opération par un point : .* ./ .^ Scilab

  23. Expressions matricielles (4/6) • Résoudre le système linéaire Ax=b Scilab

  24. 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

  25. 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

  26. 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

  27. 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

  28. 3. Graphisme 2D et 3D

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 4. Programmation

  35. 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

  36. 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

  37. 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

  38. 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

  39. La boucle while (1/2) • Syntaxe while condition instruction_1 … instruction_n end • Exemple --> x=1 --> while x<14 --> x=2*x --> end Scilab

  40. La boucle while (2/2) • Opérateurs de comparaison • Opérateurs logiques (vrai : %t faux : %f) Scilab

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. Les fonctions (3/3) • Exemple --> getf(’fact1.sci’) --> m=fact1(5) m = 120. --> n1=2; n2=3; --> fact1(n1*n2) ans = 720. Scilab

More Related