1. Prononcer
saïlab pour Sci-{entific} Lab...
2. Logiciel développé à l'INRIA (projet Méta), concurrent (clone?) gratuit de MATLAB
3. Outil de calcul numérique, pas de calcul formel, conçu pour aider à faire des simulations
4. Documentation sur le site Web :
http://www-rocq.inria.fr/scilab
5. Documentation fournie : Une introduction à Scilab, par Bruno Pinçon, E.S.I.A.L., Institut Élie Cartan, orientée « analyse numérique ».
6. Compléments pour les probabilités sont fournis dans les exercices.
==============================================================================
1. Historique: les divers formalismes pour le calcul (Pascal, Vaucanson, Babbage,
Gödel, Church, Post, Turing, Von Neumann,...
2. Les langages de programmation modernes: plusieurs centaines
3. Au moins une dizaine utilisés couramment
4. Les ancêtres encore actifs: Lisp, Cobol, Fortran
5. Les petits derniers: TI92, Magma, Java, CPL, PVM, etc. avec leurs spécialisations
6. Quel est le meilleur?
==============================================================================
Thèse de Church: Tout système de calcul non trivial est équivalent à tout autre.
Certains langages vont mieux pour faire certaines choses dans un certain style; aucun ne peut prétendre être la panacée.
Il faut savoir passer de l'un à l'autre!
============================================================================
Le type des objets n'est pas déclaré explicitement; Scilab attribue automatiquement un type aux variables en fonction de leur première affectation :
Exemples:
============================================================================
Scilab transforme et arrondit les nombres en nombres décimaux et livre ses valeurs avec discrétion
-->f=(sqrt(5)-1)/2 f = 0.6180340 -->f-0.6180340 ans = - 1.125E-08 -->f-.61803398874989 ans = 4.885E-15 -->f-.6180339887498948 ans = 1.110E-16 -->f-.6180339887498949 ans = 0. -->f-.618033988749894885 ans = 0. -->\%eps \%eps = 4.441E-16
============================================================================
Scilab les assemble en tableaux de dimensions quelconques
-->b=3 b = 3. -->b(2,1)=5 b = ! 3. ! ! 5. ! -->b(2,2)=7 b = ! 3. 0. ! ! 5. 7. ! On note que c'est toujours la m\^eme variable ! c=[1,2,3;4,5,6;.. 7,8,9;10,11,12] c = ! 1. 2. 3. ! ! 4. 5. 6. ! ! 7. 8. 9. ! ! 10. 11. 12. ! La matrice identit\'e -->c=eye(3,3) c = ! 1. 0. 0. ! ! 0. 1. 0. ! ! 0. 0. 1. ! -->c=eye(2,3) c = ! 1. 0. 0. ! ! 0. 1. 0. ! -->c=eye(3) c = 1. -->c=eye(2,2,2) !--error 42 incompatible RHS (right hand side) De la place en g\'en\'eral --> a=[1 2 3;4 5 6] a = ! 1. 2. 3. ! ! 4. 5. 6. ! --> matrix(a,1,6) ans = ! 1. 4. 2. 5. 3. 6. ! --> matrix(a,3,2) ans = ! 1. 5. ! ! 4. 3. ! ! 2. 6. ! Pour voir grand -->z=zeros(100,100,10); -->z=zeros(100,100,100); !--error 17 stack size exceeded! (Use stacksize function to increase it) Memory used for variables : 6439 Intermediate memory needed: 1000007 Total memory available : 1000001 at line 11 of function zeros called by : at line 15 of function zeros called by : z=zeros(100,100,100);
=============================================================================
- opérateurs de base : +, -, *, /,
^
sur les réels
(comme en Java)
- étendus aux tableaux, dans leur sens usuel des math'ematiciens : A*B produit matriciel, produit scalaire, produit extérieur selon les dimensions de A et B
- variantes pour traiter élément par élément : A.*B
- opérateurs sur les matrices : A'
transposition, inv(A) inverse,
A\
b système linéaire,
spec(A) spectre, etc.
- opérateurs de comparaison : == , < , > , <= , >= , <>
- opérateurs logiques : &
, |
, ~
============================================================================
- conditionnelle :
- conditionnelle en cascade avec elseif
- branchement :
La suite d'instructions correspondant à la valeur de var_test est sélectionnée et exécutée.
L'usage du end est nécessaire dans les fonctions.
=============================================================================
Exemples
-->if 3<0 then -->x=3 else -->x=5, y=7 x = 5. y = 7. -->num=17 num = 17. -->select num, case 1, y="", -->case 17, y="ouf", z=2 y = ouf z = 2.
============================================================================
- itération bornée :
Le tableau est fabriqué par un des constructeurs :
var = [1,2,3,5,7,11,13,17,19]
var = 1:.1:2 ([1,1.1,1.2,1.3,...,2])
var = rand(3,3)
La variable var est interne à la boucle : sa valeur est non définie dès la sortie de la boucle.
Dans le cas d'une itération matricielle, varprend successivement les valeurs des colonnes de la matrice.
============================================================================
- itération conditionnelle :
while condition,
instructions,
...
instructions,
end
Exemple (Syracuse):
- de l'usage du break dans les itérations : break fait sortir de la boucle qui le contient ;
while %t, {%t == vrai}
Idem pour les boucles for
============================================================================
* Difficiles à utiliser à la console
- forme générale de déclaration :
Exemple :
function bonjour(x)
============================================================================
- arguments : non modifiables
- résultats : seul moyen de passer de nouvelles valeurs
- variables internes : inconnues de l'extérieur
Exemple :
à essayer avec g=11...
============================================================================
- l'aléatoire :
la fonction grand permet de traiter encore plus de cas de lois (beta, binomial, chi, gamma, poisson, etc.)
- les affichages :
En général, si f est une fonction bien programmée, et si X est un vecteur, Y=f(X) sera le vecteur des ordonnées.
============================================================================
1. Ouvrir une fenêtre xterm, se mettre dans le répertoire désiré (Probas), ouvrir une fenêtre emacs et une fenêtre scilab.
2. Dans la fenêtre scilab lancer la commande
3. Tester sous scilab le scénario de calcul, le traduire en fonctions dans la fenêtre emacs dans un fichier td1.sci; revenir dans scilab pour lire ce fichier et définir les fonctions qu'il contient
4. Poursuivre la mise au point, jusqu'à satisfaction...
5. Et pour tout le reste voir la brochure...
============================================================================