Scilab - MPSI 1 La...

26
Scilab Skander Zannad et Judicaël Courant Lycée La Martinière-Monplaisir 2014-01-18

Transcript of Scilab - MPSI 1 La...

Page 1: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Skander Zannad et Judicaël Courant

Lycée La Martinière-Monplaisir

2014-01-18

Page 2: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

1 Scilab1. Logiciel libre.

2. Usages :

– calcul numérique

– modélisation problèmes SI

– ///////////////////programmation///////////////généraliste

– ///////calcul//////////////algébrique.

3. Proche de Matlab (logiciel privateur).

4. Fonctionne sur de nombreux systèmes d’exploitation.

Skander Zannad et Judicaël Courant 2

Page 3: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

2 Console ScilabEst à Scilab ce que le shell python est à Python dans IDLE.

Skander Zannad et Judicaël Courant 3

Page 4: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

On entre une expression :

Skander Zannad et Judicaël Courant 4

Page 5: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Et Scilab répond :

(ans : abréviation de answer)

Skander Zannad et Judicaël Courant 5

Page 6: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

3 Données manipulées

Essentiellement : Scilab manipule des matrices.

Skander Zannad et Judicaël Courant 6

Page 7: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

-->x = [3 5 7 11] // vecteur lignex =

3. 5. 7. 11.

-->y = [1, 4, 9, 16] // autre façon d’écrirey =

1. 4. 9. 16.

-->z = [11; 22; 33; 44] // vecteur colonnez =

Skander Zannad et Judicaël Courant 7

Page 8: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

11.22.33.44.

-->x+yans =

4. 9. 16. 27.

-->x-y

Skander Zannad et Judicaël Courant 8

Page 9: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

ans =

2. 1. - 2. - 5.

-->x + z!--error 8

Addition incohérente.

Skander Zannad et Judicaël Courant 9

Page 10: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Addition/soustraction matricielle : addition/soustraction terme à terme,notés +/-.

Multiplication :

– terme à terme : .*

– matricielle : *

Division :

– terme à terme : ./

– «matricielle» : a / b «solution» de x * b = a.

Skander Zannad et Judicaël Courant 10

Page 11: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

3.1 Accès aux coefficients-->x(1,2)ans =

5.

-->z(2,1)ans =

22.

-->x(2)

Skander Zannad et Judicaël Courant 11

Page 12: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

ans =

5.

-->z(2)ans =

2.

Affectation d’une case d’un tableau :

Skander Zannad et Judicaël Courant 12

Page 13: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

-->x(1,2) = 33x =

3. 33. 7. 11.

Skander Zannad et Judicaël Courant 13

Page 14: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

4 Programmation

4.1 Éditeur

Scilab dispose d’un éditeur (SciNotes), qu’on peut ouvrir avec le menuApplications/SciNotes :

Skander Zannad et Judicaël Courant 14

Page 15: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Skander Zannad et Judicaël Courant 15

Page 16: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

On peut sauvegarder le contenu de l’éditeur sous forme d’un fichier(menu «Fichier/Enregistrer») et en transférer le contenu dans la console(F5 ou menu «Exécuter/Enregistrer et lancer»).

4.2 Syntaxe

En python : indentations significatives.

En Scilab :

1. Indentations non significatives (mais utiles pour le lecteur)

2. Les blocs d’instructions délimités explicitement.

Skander Zannad et Judicaël Courant 16

Page 17: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Exemples :

u = 0v = 1for k = 0:n-1

// u == Fibonacci(k) et v == Fibonacci(k+1)w = u + vu = vv = w

end// ici u == Fibonacci(n)

Skander Zannad et Judicaël Courant 17

Page 18: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

u0 = 42k = 0u = u0while u <> 1

// u est le terme de rang k de la suite de Syracuse// commençant à u0if pmodulo(u, 2) == 0 then

u = 3*u + 1else

u = u / 2end

end

Skander Zannad et Judicaël Courant 18

Page 19: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Fonctions :

function [m, v] = stat(t)// retourne la moyenne m et la variance v// des valeurs du tableau tn = length(t)s = sum(t)m = s / ns2 = sum(t .** 2) / nv = s2 - s**2

endfunction

Skander Zannad et Judicaël Courant 19

Page 20: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

5 Aide

Une aide très fournie est disponible par le menu « ?/Aide de Scilab» oupar la commande «help» («help sujet»).

Skander Zannad et Judicaël Courant 20

Page 21: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

6 Utilisation pour des simulations numériques

Scilab sait notamment résoudre numériquement des équations différen-tielles de la forme y′ = F (t, y(t)) avec une condition initiale y(t0) = y0.

Exemple : résolution numérique de l’équation différentielle

y′ = y2 + cos(πt) (1)

avec la condition initiale y(0) = 1.

En scilab :

Skander Zannad et Judicaël Courant 21

Page 22: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

function yp = F(t, y)yp = y ** 2 + cos(%pi*t)

endfunction

// conditions initialest0 = 0y0 = 0

// on veut la valeur de y en 0, 0.01, 0.02, ..., 6 :t = 0:0.01:6// vecteur des valeurs de la solution calculée :y = ode(y0, t0, t, F)

Skander Zannad et Judicaël Courant 22

Page 23: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

// affichage :plot(t, y)

Skander Zannad et Judicaël Courant 23

Page 24: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Annexe : Un regard critique

Certains choix de conception sont manifestement erronés :

1. Gestion des variables locales conduisant à des captures de va-riables.

2. Les tableaux ne sont pas des vrais tableaux dynamiques : l’ajoutd’un élément coûte toujours un temps proportionnel à la taille dutableau.

3. Les indices de tableau commencent à 1.

4. Le choix d’un langage très spécifique.

Skander Zannad et Judicaël Courant 24

Page 25: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Explication pour les trois premiers points : Scilab a été écrit par desnumériciens, pas par des spécialistes de la programmation 1.

Pour le dernier :

1. Volonté de compatibilité (partielle) avec Matlab.

2. Méconnaissance des langages existants qui auraient pu être utili-sés 2 ?

3. Sous-estimation du coût du développement d’un langage ?

1. Un informaticien spécialiste de la programmation est à un programmeur cequ’un linguiste est à une personne polyglotte.

2. Python était trop jeune à l’époque mais on aurait pu envisager d’autres langages,par exemple LISP.

Skander Zannad et Judicaël Courant 25

Page 26: Scilab - MPSI 1 La Martinière-Monplaisirmpsi1.lamartiniere.free.fr/.../cours/16-presentation-scilab.slides.pdf · Essentiellement : Scilab manipule des matrices. Skander Zannad et

Scilab

Remarque :

1. Il existe de nombreux outils avec des langages spécialisés : Maple,Mathematica, Maxima, XCas, shell-scripts, . . .

2. Dans presque tous les cas, le langage est difficile à manipuler dèsqu’on sort de son domaine d’application.

3. Aujourd’hui, on sait construire des langages généralistes suffisam-ment souples pour remplacer ces outils par des bibliothèques dulangage. Intérêt : moins de langages à apprendre, puissance plusgrande de ces langages, facilité d’ajout d’un nouveau domained’application.

4. Exemple avec Python : scipy pour remplacer Matlab/Scilab, sympyou SAGE pour remplacer Maple, Mathematica, Maxima et XCas.

Skander Zannad et Judicaël Courant 26