Vous êtes sur la page 1sur 153

INITIATION A SCILAB

M. Idrissi

Universit Abdelmalek Essaadi Facult des Sciences Filires SMA-SMI Automne 2012

INITIATION A SCILAB

Scilab Contenu
Introduction la programmation matricielle Scripts, fonctions Notion denvironnement dexcution Spcificit de la programmation matricielle Graphisme Optimisation en programmation matricielle
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB

I- Introduction la programmation matricielle

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB

I- Introduction la programmation matricielle


1. Prsentation gnrale de Scilab 2. Une super-calculatrice 3. Vecteurs et matrices 4. Quelques exemples

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB I- Introduction la programmation matricielle


1. Prsentation gnrale de Scilab

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB I- Introduction la programmation matricielle


1. Prsentation gnrale de Scilab

Logiciel libre : http://www.scilab.org - Dvelopp depuis 1990 par lINRIA et lENPC - Distribu gratuitement (OpenSource sur Internet) - Version actuelle : 4.1.2 - Architectures : Unix, Linux, MS Windows
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB IIntroduction la programmation matricielle


1. Prsentation gnrale de Scilab

Environnement de programmation - Environnement de calcul scientifique -Ensemble de fonctions prdfinies Langage de programmation - Augmentation de lenvironnement Scilab - Ajout de fonctions lenvironnement

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

1. Prsentation gnrale de Scilab

INITIATION A SCILAB I- Introduction la programmation matricielle

Logiciels de calcul scientifique : les clones Matlab : MAtrix LABoratory http://www.mathworks.com ; - Lanctre : origines dans les annes 60 - Calcul matriciel - Le plus complet (nombreuses toolboxes, environnement simulink, ...) - Produit commercial ... - Trs utilis dans lindustrie et la recherche, prototypage de prog.
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB I- Introduction la programmation matricielle


1. Prsentation gnrale de Scilab

Scilab : http://www.scilab.org - Dvelopp depuis 1990 -Trs complet, nombreuses contributions Octave : http://www.gnu.org/software/octave/ - Dvelopp depuis 1988, projet moins actif - Surtout distribu pour Linux

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

1. Prsentation gnrale de Scilab


Bibliographie

INITIATION A SCILAB I- Introduction la programmation matricielle

en ligne sur le site de Scilab - http://www.scilab.org Engineering and scientific computing with Scilab, C. Gomez eds, 1999 Introduction Scilab : exercices pratiques corrigs dalgbre linaire, G. Allaire et al., Ellipses, 2002

Documentation

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB I- Introduction la programmation matricielle 2. Une super-calculatrice - 2.1 Commandes simples - 2.2 Constantes - 2.3 Boolens - 2.4 Variables

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle 2. Une super-calculatrice. Commandes simples

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Commandes simples

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Commandes simples

Excution de commandes simples Scilab connat les entiers, les nombres rels Scilab connat la plupart des fonctions mathmatiques usuelles, p. ex - racine carre sqrt(3) 1.7320508 - exponentielle exp(1) 2.7182818 - logarithme nprien log(2) 0.6931472 - puissance 2 4 16 Notation Scilab : notation mathmatique usuelle : - composition de fonctions : log(exp(1)) 1

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Utilisation de constantes

Scilab connat les constantes usuelles : nom prcd de % par exemple e : %e - : %pi - infini : %inf - i complexe : %i Une constante est une valeur fige laquelle on associe un nom (symbolique) afin de la manipuler plus facilement Elles sont ensuite utilises comme les autres lments : par exemple %e 2.7182818 %pi 3.1415927 log(%e) 1 cos(%pi) -1 %e3 20.085537 sin(%pi/2) 1 %i2 -1 atan(%inf)*2 - %pi 0 1 / %inf 0

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Utilisation de constantes

Scilab connat les constantes usuelles : nom prcd de % par exemple: %e e: %pi infini : %inf i complexe : %i Une constante est une valeur fige laquelle on associe un nom (symbolique) afin de la manipuler plus facilement

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Utilisation de constantes

Elles sont ensuite utilises comme les autres lments : par exemple %e 2.7182818 %pi 3.1415927 log(%e) 1 cos(%pi) 1 %e3 20.085537 sin(%pi/2) 1 %i2 -1 atan(%inf)*2 - %pi 0 1 / %inf 0

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Utilisation de constantes

Erreurs de syntaxe Scilab est trs sensible la casse des caractres : diffrence entre majuscules et minuscules %pi est la constante pi, mais %Pi ou %PI ne sont pas connus log mais pas Log, ou LOG, ou LoG Quand il ne peut pas valuer une expression, Scilab signale une erreur
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Comparaisons et boolens

Comparaisons : le rsultat est vrai (True) ou faux (False) supriorit stricte : 5 > 3 T supriorit : 5 >= 5 T infriorit stricte : 5 < 3 F infriorit : 5 <= 3 F galit : 5 == 6 F non-galit : 5 ~= 6 T

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Comparaisons et boolens

Vrai et faux : constantes Scilab : %t ou %T, %f ou %F Algbre de Boole ET : (5 > 3) & (3 > 1) T OU : (5 > 3) | (3 > 1) T NON : ~(3 > 1) F %T & %F F %T | %F T ~%T F

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
2. Une super-calculatrice. Variables de calcul

Une variable permet de mmoriser un rsultat intermdiaire pour le rutiliser par la suite. Opration daffectation : =
On affecte a le rsultat de 2*3 Scilab confirme la mmorisation On utilise la valeur de a

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle 3. Vecteurs et matrices - 3.1 Notations des vecteurs et des matrices - 3.2 Oprations de base - 3.3 Un exemple dapplication - 3.4 Assemblage et "dsassemblage" de matrices - 3.5 Dfinition de matrices et vecteurs spcifiques - 3.6 Fonctions lmentaires

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices

Scilab est fait pour manipuler les vecteurs et les matrices - Les crochets [ et ] dfinissent un vecteur ou une matrice - Les colonnes sont spares par des virgules ou des espaces - Les lignes sont spares par des points virgules - Une matrice est donne ligne par ligne

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices

Exemples : - Vecteur ligne (matrice 1x3): [1, 2, 3] ou [1 2 3] - Vecteur colonne (matrice 3x1) [1; 2; 3] - Matrice 2 lignes, 3 colonnes (matrice 2x3) [1, 2, 3; 4, 5, 6] Toutes les lignes doivent avoir la mme taille
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices

Exemples : matrices de rels


Matrice carre

Erreur de dimensions Utilisation de constantes et de fonctions

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices Exemples : matrices de boolens Table de vrit du ET

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
Vecteurs et matrices Matrices et variables On peut utiliser une variable pour mmoriser une matrice Mme mode de fonctionnement que si la variable contenait une valeur classique.

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices

Deux fonctions lmentaires : taille des matrices


La fonction size() renvoie les dimensions de la matrice passe en paramtre sous la forme dun vecteur deux lments : - le nombre de lignes - le nombre de colonnes Les scalaires sont des matrices de taille 1 La fonction length() renvoie le nombre total dlments de la matrice : nbLignes x nbColonnes

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices Oprations sur les matrices

Scilab permet la manipulation des matrices Une matrice est un lment comme un autre Il connat donc la majorit des oprations sur les matrices : addition, multiplication, inversion, ... A + B : addition si A et B sont de mme taille A B : soustraction si A et B sont de mme taille A B : multiplication si le nombre de lignes de A est gal au nombre de colonnes de B

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices Oprations sur les matrices, exemples Les oprations + et - sappliquent termes termes

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices Oprations sur les matrice. Multiplication

A*B : produit matriciel :


matrices de tailles compatibles : A taille n p, et B taille p m alors C = A B est de taille n m telle que

A.*B (notation pointe) : produit terme terme


matrices de mme taille : A et B de taille n p alors C = A. B est de taille n p aussi, et telle que

Il en est de mme pour la division


Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices

Une matrice et un scalaire : pour tous les termes de la matrice A + x : addition de x tous les termes de la matrice A x : soustraction de x tous les termes de la matrice A x : multiplication par x de tous les termes de la matrice A/x : division par x de tous les termes de la matrice

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices Les oprations avec un scalaire sappliquent tous les lments de la matrice.

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices

Transposition apostrophe : A

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices Un exemple dapplication Conversion de mesures de tempratures

Si f est une valeur en degr fahrenheit, alors son quivalent en degrs Celsius c sobtient par: c =5/9(f 32) Donner la table des correspondances en Celsius des tempratures Fahrenheit suivantes : 0, 20, 40, 60, 80 et 100 Le calcul doit seffectuer en une seule fois pour toutes les valeurs.
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices Conversion de mesures de tempratures

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Oprations sur les matrices Conversion de mesures de tempratures

resultat = [tempFahrenheit tempCelsius]

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Assemblage et "dsassemblage" de matrices Construction de matrices par blocs

On nest pas oblig de dfinir les matrices lment par lment On peut mettre en ligne ou en colonnes des matrices existantes et non seulement des nombres Avec le mme principe : , (ou espace) pour mettre cte cte : condition sur le nb de lignes ; pour mettre en dessous : condition sur le nb de colonnes
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Assemblage et "dsassemblage" de matrices Construction de matrices par blocs: exemple

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Assemblage et "dsassemblage" de matrices Extraction dlments

A une matrice, de taille n m Pour i [1, n] et j [1,m], on peut rfrencer un lment : A(i,j) = Aij une ligne : A(i,:) : on ne donne pas de numro de colonne, mais on le remplace par deux points une colonne : A(:, j) Cas des vecteurs : un seul indice suffit : v(i) donne le i-me lment du vecteur

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Assemblage et "dsassemblage" de matrices Extraction dlments

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Assemblage et "dsassemblage" de matrices Extraction dlments le symbole $

v($) est le dernier lment du vecteur A($, j) est llment situ dans la dernire ligne, colonne j, soit Anj A(i,$) est llment situ dans ligne i, dans la dernire colonne j, soit Aim A(:,$) est la dernire colonne A($,$) = Anm
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Dfinition de matrices et vecteurs spcifiques

ones : cre une matrice contenant des 1 ones(m, n) : construit une matrice de 1 m lignes et n colonnes ones(A) o A est une variable : construit une matrice de mme taille que A rappel : un scalaire est une matrice de taille 1x1 : ones(5) renvoie 1 ones renvoie un 1 zeros : mme chose pour des matrices contenant des 0

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Dfinition de matrices et vecteurs spcifiques

Exemples

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Dfinition de matrices et vecteurs spcifiques

eye : matrice diagonale, dont la diagonale contient des 1 eye(n, n) : matrice identit de taille n eye(n, m) : matrice de taille n m telle que Aii = 1, et Aij = 0 si ij eye(A) o A est une variable : matrice de mme taille que A

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Dfinition de matrices et vecteurs spcifiques

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Dfinition de matrices et vecteurs spcifiques

rand : matrice alatoire - valeurs gnres selon une distribution uniforme sur ]0, 1[ - rand(n,m) : matrice alatoire de taille n m - rand(A) o A est une variable : matrice de mme taille que A - rand, ou rand(), ou rand(n) rend une valeur alatoire de ]0, 1[

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Dfinition de matrices et vecteurs spcifiques

Notation :

dpart:pas:arrive

-dpart : premire valeur du vecteur -pas : valeur entre chaque lment du vecteur - arrive : valeur ne pas dpasser

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Fonctions lmentaires La fonction minimum

min(A) : calcule la valeur minimale de la matrice min(A, r) : calcule le vecteur ligne (row) contenant le minimum de chaque colonne min(A, c) : calcule le vecteur colonne (column) contenant le minimum de chaque ligne

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Fonctions lmentaires

max pour calculer le maximum mean pour calculer la moyenne stdev (standard deviation) pour calculer lcart-type sum pour calculer la somme des termes

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Fonctions lmentaires Autres fonctions Fonction terme terme : - racine carre :

Fonction matricielle : - racine carre matricielle : A telle que A A = M

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Fonctions sur les matrices Manipulations algbriques

Il existe aussi de nombreuses fonctions spcifiques aux matrices : Dterminant det Rang : rank Inverse : inv Valeurs et vecteurs propres : spec Dcomposition de Choleski : chol Rsolution de systmes linaires : x tel que Ax = b : x = A\b Analyse en composantes principales : pca
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction de matrices simples
1. Construire la matrice A de taille 5x4 contenant uniquement des zros 2. Remplacer la premire ligne de A par le vecteur (5, 0, 4, 12)

3. Remplacer la troisime colonne de A par

4. Calculer la plus grande valeur de A en valeur absolue

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction de matrices simples 1. Construire la matrice A de taille 5x4 contenant uniquement des zros On utilise la fonction zeros
ou alors

Le point virgule ; supprime laffichage


Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction de matrices simples 2. Remplacer la premire ligne de A par le vecteur (5, 0, 4, 12) On construit le vecteur en question, avec [ ], , et; On utilise lextraction dlments, avec A(i,j), A(i,:), A(j,:)
v = [-5 0, 4, 12] A(1,:) = v

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples. Construction de matrices simples 3. Remplacer la troisime colonne de A par (1,14, 2, 0, 2) On utilise la construction de matrices avec [ ], , et ; On utilise lextraction dlments dune matrice
w = [1;-14; 2;0;2] A(:,3) = w

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction de matrices simples

3. Remplacer la troisime colonne de A par (1,14, 2, 0, 2)

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction de matrices simples 4. Calculer la plus grande valeur de A en valeur absolue

Utilisation de fonctions : abs et max max(abs(A))

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
3. Vecteurs et matrices. Quelques exemples Construction de vecteurs

I- Introduction la programmation matricielle

1. Construire le vecteur complexe v1 = (1 + i, 2 + 2i, 3 + 3i, 4 + 4i, 5 + 5i) 2. Construire le vecteur complexe v2 = (1 + i, 1 + 2i, 1 + 3i, 1 + 4i, 1 + 5i) 3. Construire le vecteur contenant les valeurs de (sin(0) sin(/2), sin(), sin(3/2), sin(2)) 4. Construire le vecteur ligne des puissances de 2 : w1 = (2, 4, 8, 16, 32, 64, 128, 256) 5. Construire le vecteur colonne des puissances de 2

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction simples de vecteurs 1. Construire v1 = (1 + i, 2 + 2i, 3 + 3i, 4 + 4i, 5 + 5i) on utilise -la construction de vecteurs depart:pas:arrivee - la constante %i -les oprations entre scalaires et vecteurs - les oprations entre indices = 1:10 vecteurs v = indices + %i*indices
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
3. Vecteurs et matrices. Quelques exemples. Construction simples de vecteurs 2. Construire v2 = (1 + i, 1 + 2i, 1 + 3i, 1 + 4i, 1 + 5i), on utilise - la construction de vecteurs depart:pas:arrivee - la constante %i - les oprations entre scalaires et vecteurs

I- Introduction la programmation matricielle

indices = 1:10
v2 = ones(indices) + %i*indices

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
3. Vecteurs et matrices. Quelques exemples Construction simples de vecteurs

I- Introduction la programmation matricielle

3. Construire le vecteur contenant les valeurs de

on utilise -la construction de vecteurs depart:pas:arrivee - la constante %pi -les fonctions appliques aux vecteurs

sin((0:4)*%pi/2) sin(0:%pi/2:2*%pi)

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction simples de vecteurs
4. Construire le vecteur ligne des puissances de 2 :

w1 = (2, 4, 8, 16, 32, 64, 128, 256) on utilise - la construction de vecteurs depart:pas:arrivee - les fonctions appliques aux vecteurs w1 = 2[1:8]

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
I- Introduction la programmation matricielle
3. Vecteurs et matrices. Quelques exemples Construction simples de vecteurs
5. Construire le vecteur colonne des puissances de 2 :

on utilise -la construction de vecteurs -depart:pas:arrivee - les fonctions appliques aux vecteurs - la transposition

w2 = 2([1:8]) w2 = w1
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB

II- Scripts et fonctions

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB

II- Scripts et fonctions


1. Scripts Scilab 2. Structure de contrle 3. La structure itrative while 4. Fonctions

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Exemple introductif

Somme des carrs des entiers

Calculer la somme des carrs des entiers de 1 n par un calcul direct Vrifier la formule mathmatique

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Exemple introductif Somme des carrs des entiers
Calcul direct de la somme des carrs des entiers de 1 100 on utilise - la construction de vecteur depart:arrivee - le calcul des carrs appliqu lment par lment au vecteur - la fonction sum

n = 100 sommeCarres = sum((1:n).2)

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Exemple introductif
n = 100;

Somme des carrs des entiers

sommeCarres = sum((1:n).2)

verifFormule = sommeCarres == resFormule resFormule = n*(n+1)*(2*n+1)/6

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Exemple introductif Somme des carrs des entiers

Si on veut tester avec une autre valeur de n, il faut retaper les trois commandes : peu pratique!! On veut regrouper les 3 lignes sous un seul nom, pour pouvoir les appeler en une seule fois cest ce que permet un script.

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts

Regroupement de commandes, que lon peut appeler en une seule fois dans Scilab - permet de sauvegarder un ensemble de commandes, pour en faciliter la rutilisation - permet dexcuter toute une squence de commandes Scilab automatiquement. - gnralement, un programme se lance laide dun script Cest un fichier texte qui comporte une suite de commandes Scilab
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Ecriture de scripts : mthode

Etape 1: on ouvre un diteur de fichiers texte (ascii) - sous Linux: emacs, vi, ... - sous Windows: notepad, blocnote, ... -ou avec Scilab: lditeur Scipad par exemple Etape 2: on crit les commandes dans ce fichier - par exemple sommeCarres = sum((1:n).2) resFormule = n*(n+1)*(2*n+1)/6 verifFormule = resFormule == sommeCarres
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Ecriture de scripts : mthode

Etape 3: on enregistre dans le rpertoire de travail de Scilab en lui donnant un nom dextension sce -par exemple verifSommeCarres.sce Etape 4 : on excute le script, par la commande exec(nomDuScript)

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Ecriture de scripts

- Scilab excute alors les unes

aprs les autres les commandes du script

- et affiche les rsultats au fur et mesure

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Contrainte sur le nom des scripts Le nom dun fichier script possde, par convention, lextension sce Un script sexcute laide de la commande exec("nomDuFichier") - Le nom du fichier doit contenir le chemin daccs si le script ne se trouve pas dans le rpertoire courant - Le nom doit correspondre un fichier valide :

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts
Script "verifSommeCarres.sce Utilisation : exec(verifSommeCarres.sce)

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Les points virgules et les scripts.

Point-virgule = supprimer laffichage


Au niveau de exec : Sans ; Avec ; pour le exec

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Les points virgules et les scripts.
Dans le script Sans ; ; dans le script

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Exemple du loto

Ecrire un script qui: - gnre 7 entiers alatoires entre 1 et 49 - indique si ces 7 nombres peuvent correspondre un tirage du loto - cest--dire si ces 7 nombres sont diffrents.

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts. Exemple du loto gnration dun entier alatoire La gnration dun numro de loto; - un entier entre 1 et 49 - distribution uniforme des valeurs Utilisation de rand rand() renvoie une valeur alatoire dans ]0,1[ 49*rand()+1 donne donc une valeur alatoire dans ]1, 50[ on utilise aussi la fonction floor qui pour x rel rend la partie entire de x : floor(x) x < floor(x) + 1 ceil(x) rend lentier immdiatement suprieur x : ceil(x) 1 < x ceil(x)
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Exemple du loto gnration dun entier alatoire

Le tirage dun numro est simul par floor(49*rand()+1) Deux excutions successives :

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Exemple du loto gnration dun entier alatoire La gnration de 7 numros de loto - 7 entiers entre 1 et 49 : - distribution uniforme -tous distincts Mthode : - gnration : floor(49*rand(1,7)+1) - vrification quils sont tous distincts : utilisation de la fonction unique

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
1. Scripts Scilab. Dfinition des scripts Exemple du loto Ecrire un script qui - gnre 7 entiers alatoires entre 1 et 49 - indique si ces 7 nombres peuvent correspondre un tirage du loto -cest--dire si ces 7 nombres sont diffrents Mthode - on crit le code dans un fichier - on utilise la fonction rand - on utilise la fonction unique Dans un fichier, par exemple appel loto.sce tirage = floor(49*rand(1,7)+1) loto = length(unique(tirage)) == 7
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle. Exemple introductif : pile ou face Ecrire un script qui simule un tirage pile ou face - en utilisant la fonction rand - avec affichage Plus prcisment - Gnrer un nombre alatoire x entre 0 et 1 - Si x < 0.5, afficher "pile" - Sinon afficher "face"

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle La fonction disp Fonction daffichage simple - quil y ait un ; ou non : disp(m); <= > disp(m) Exemple introductif : pile ou face

Exemples disp(bonjour); affiche bonjour disp(%pi) affiche 3.1415927 disp(a) o a est une variable, affiche la valeur de a v = [1 2 3]; disp(v) affiche [1 2 3] attention : disp(v); affiche le caractre v
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Schma du fonctionnement souhait

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Lexpression conditionnelle alternative comporte trois lments : - une partie condition : expression boolenne - une partie consquent : une squence dinstructions excuter si la condition est vraie - une partir alternant : une squence dinstructions excuter si la condition est fausse Syntaxe Scilab : if condition consquent else alternant end

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle

Le script x = rand() if x<0.5 disp("pile") else disp("face") end

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle
Excution du script Gnration de x

Exemple dexcution

La partie consquent est applique

Il ne se passe rien pour la partie alternant

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Exemple dexcution

Excution du script Gnration de x

Il ne se passe rien pour la partie consquent

La partie alternant est applique

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Lexpression conditionnelle simple

Lexpression conditionnelle (simple) comporte seulement deux lments - une partie condition : expression boolenne -une partie consquent : une squence dinstructions excuter si la condition est vraie Syntaxe Scilab : if condition consquent end
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Exemple: Nombre de racines dun trinme delta = b*b-4*a*c; calcul du discriminant dans un fichier, par exemple appel nbRacinesTrinome.sce
if delta >0 nbRacines = 2 else if delta == 0 nbRacines = 1 else nbRacines = 0 end end
Universit Abdelmalek Essaadi Facult des Sciences

on teste la valeur du discriminant

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Exemple: Nombre de racines dun trinme

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Expression conditionnelle alternative if condition consquent else alternant end Traitement de conditions complexes : imbrication des if - comme dans lexemple sur les trinmes du second degr -Il faut mettre autant de end que de if Simplification de lcriture : expression conditionnelle enrichie : elseif
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle Expression conditionnelle gnrale if condition1 consquent elseif condition2 consquent2 else alternant end

Principe - consquent2 excut si condition1 non vrifie ET condition2 vrifie - alternant excut si condition1 et condition2 non vrifies

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
2. Structure de contrle elseif pour le trinme
Avec elseif

Avec if imbriqus

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
3. Structure itrative while Lexpression itrative while La squence itrative while comporte deux lments : - une partie condition : expression boolenne - une partie consquent : une squence dinstructions excuter tant que la condition est vraie Syntaxe Scilab :

while condition consquent end


Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
3. Structure itrative while Exemple du loto pasLoto = %T; nbTirages = 0; while pasLoto tirage = floor(49*rand(1,7)+1); nbTirages = nbTirages+1; pasLoto = length(unique(tirage)) ~= 7; end tirage nbTirages

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
3. Structure itrative while

Exemple du loto

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions
Syntaxe gnrale dappel de fonctions [val1, val2, ..., valN] = nomFonction(param1, param2 ..., paramM)

valI peuvent tre de nimporte quel type - nombre, boolen, chane de caractres, matrice, vecteur - la spcification indique lordre et le type des variables - spares par des virgules - entre crochets paramJ peuvent tre de nimporte quel type aussi - nombre, boolen, chane de caractres, matrice, vecteur - la spcification indique lordre et le type des arguments - spares par des virgules
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Syntaxe gnrale dappel de fonctions Exemple de la fonction max a = max(A) pour calculer la plus grande valeur de A a2 = max(A, r) pour calculer le vecteur ligne des plus grandes valeurs de chaque colonne de A a3 = max(A, c) pour calculer le vecteur colonne des plus grandes valeurs de chaque ligne de A max(A) renvoie 12 max(A, r) renvoie (12, 8) max(A, c) renvoie
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Exemple de fonctions: max(A) renvoie le maximum de la matrice A mais peut renvoyer aussi la position du maximum dans la matrice : les indices i et j tels que max(A) = Aij le maximum est 12, et sa position est i = 2 et j = 1

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Exemple de fonctions: Pour avoir la fois la valeur et la position du maximum [valMax, posMax] = max(A) Variables de sortie : valMax : valeur du max ! cest un scalaire posMax : position du max ! cest un vecteur de 2 entiers valMax vaut 12, posMax vaut [2, 1]

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Exemple de fonctions:

Affichage dans lordre inverse

Avec un seul nom pour la sortie on nobtient que la valeur du maximum

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Le cas de max(A,r) max(A, r) renvoie un vecteur ligne contenant le maximum de chaque colonne de la matrice A max(A, r) peut renvoyer aussi un vecteur de positions indiquant, pour chaque colonne, la ligne dans laquelle se trouve le maximum Mme syntaxe : [maxCol, maxColPos] = max(A, r) Deux variables de sortie : 2 vecteurs de mme taille - les valeurs des maximums - leurs positions
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Le cas de max(A,r)

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Le cas de max(A,r) [valMax, posMax] = max(A) [maxCol, maxColPos] = max(A, r) Mais attention : signification diffrente - posMax a toujours 2 composantes, quelle que soit la taille de A -maxColPos a mme nombre de colonnes que A Dans les deux cas - on peut rcuprer plusieurs rsultats simultanment, en donnant deux noms de variables entre crochets - si on donne un seul nom, on na que le premier rsultat, cest--dire valMax et maxCol respectivement
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Le cas de max(A,r) max(A,c) a le mme fonctionnement que max(A,r) il en est de mme pour min mais pas pour sum cas de unique : - v = unique(A) renvoie un vecteur contenant les valeurs distinctes de A, tries en ordre croissant - [v, pos] = unique(A) renvoie de plus les positions des premires occurrences des valeurs de v dans A

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Lcriture de nouvelles fonctions

Objectif : - assez proche de celui des scripts : - combiner des squences de commandes -programmer des traitements complexes, des algorithmes Avantages par rapport aux scripts : - pas ncessaire de connatre le nom des variables utilises - pas ncessaire de connatre le nom de la variable rsultat

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Lcriture de nouvelles fonctions

Elles dpendent de paramtres dentre - on peut les appeler directement avec les valeurs quon souhaite utiliser - on peut les appeler en utilisant des variables quelconques qui contiennent les valeurs quon souhaite utiliser pas de contrainte sur le nom de ces arguments Elles renvoient un rsultat - que lon peut rcuprer, et affecter une variable quelconque pas de contrainte sur le nom des variables de sortie Leur syntaxe est similaire celle utilise en math
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Lcriture de nouvelles fonctions Proprits : - squence de commandes - crite dans un fichier dextension .sci - avec des contraintes de syntaxe pour grer les paramtres dentre et les valeurs renvoyes En pratique, dans le cas o un seule valeur est renvoye function nomVarRes = nomFonction(nomParam1, nomParam2, ...) instructions nomVarRes = expression endfunction
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Lcriture de nouvelles fonctions Un exemple

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Utilisation des fonctions

Lexcution se fait en deux temps: -il faut charger la fonction dans lenvironnement de travail getf(nomDuFichier.sci) - puis appeler la fonction, comme toute autre fonction de Scilab nomDeFonction(parametre) Dans le cas prcdent getf(polynome1.sci); res = f(42);

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions
Utilisation des fonctions

Fichier polynome1.sci function y = f(x) y = x2+x+1 endfunction

Fichier fonctionF.sce y = x2+x+1;

Calcul de f(42) et affectation la variable a Affichage de la valeur de f(4.2)

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Comparaison fonction script
Calcul de f(42)

1. on charge la fonction 2. on calcule la valeur en 42 et on affecte le rsultat a


Universit Abdelmalek Essaadi Facult des Sciences

1. on affecte 42 la variable x : il faut savoir quelle sappelle x 2. on calcule la valeur 3. on affecte a le rsultat, qui est dans y : il faut savoir quil est dans y
Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Comparaison fonction script
Affichage de f(4.2)

1. on calcule f(4.2) sans ;


affichage
Universit Abdelmalek Essaadi Facult des Sciences

1. on affecte la variable x : il faut savoir quelle sappelle x 2. on calcule la valeur 3. on affiche la variable y : il faut savoir que le rsultat est dans y
Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Quelques remarques pratiques

On peut crire plusieurs fonctions dans le mme fichier Il faut commenter les programmes - par exemple pour expliquer lordre des arguments, leurs types (puisque le langage nest pas typ) -syntaxe : // commentaire

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Bilan

function [varRes1, varRes2, ...] = nomFonction(param1, param2, ...) Instructions varRes1 = expression varRes2 = expression endfunction
En entre : - tous types possibles : types de base, ou matrices - les arguments sont indpendants (types diffrents) En sortie - tous types possibles : types de base, ou matrices - pas de contrainte dhomognit : paramtres indpendants
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Fonctions et environnement mmoire Cration de variables dans les fonctions, un exemple : function z = f(x) a = 5; z = x*x disp("fonction f : a= "+string(a)); endfunction Fonctionnement ; - elle cre la variable a - fait un calcul - affiche la valeur de a - renvoie le rsultat de son calcul
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Fonctions et environnement mmoire Cration de variables dans les fonctions, un exemple :

function z = f(x) a = 5; z = x*x disp("fonction f : a= "+string(a)); endfunction

a est inaccessible depuis Scilab


Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Fonctions et environnement mmoire Imbrication 2 niveaux

Fonction appele depuis une fonction appele depuis lenvironnement gnral. function z = z = g(x+2) f(x) a = 5; endfunction function m = g(n) m = n*n endfunction
Commande Scilab -> y = f(4);
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables Depuis lenvironnement de cration

Une variable est accessible en lecture et en criture depuis lenvironnement o elle a t cre Cest la proprit quon utilise depuis le dbut, pour faire voluer les valeurs des variables - directement dans Scilab - dans les scripts - dans les fonctions

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables

Depuis un environnement imbriqu

Une variable est accessible en lecture depuis les environnements imbriqus dans son environnement de cration
Quelques exemples : - montrer quelle est bien accessible en lecture dans un environnement imbriqu - montrer quelle nest pas accessible en lecture dans un environnement englobant
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables n dfinie dans Scilab, lue depuis f
function y = f(x) disp(fonction f: n=+string(n)); y = x*x endfunction Depuis un environnement imbriqu

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables
Depuis un environnement imbriqu

n dfinie dans Scilab, lue depuis g appele depuis f function y = f(x) y = g(x) endfunction function b = g(a) disp(fonction g: n= +string(n)); disp(fonction g: x= +string(x)); b = a*a endfunction
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables
Depuis un environnement imbriqu

Pas de lecture: a dfinie dans f est inaccessible dans Scilab.

function z = f(x) a = 5;

z = x*x disp("fonction f: a=" +string(a)); endfunction


Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables.
Cas de laccs en criture

Une variable est inaccessible en criture depuis les environnements imbriqus dans son environnement de cration -il est impossible de modifier une variable dun environnement englobant function z = f(x) a = 5; z = x* x endfunction

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables.
Cas de laccs en criture

Impossible de modifier une variable dun environnement englobant : phnomne de copie locale -si on cherche modifier une variable de mme nom dans f, il y a cration une nouvelle variable de mme nom dans lenvironnement local de f - cette nouvelle variable masque, recouvre la variable de lenvironnement gnral
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables. Cas de laccs en criture

-> a = 1; -> y = f(2) function z = f(x) a = 5; z = x*x endfunction

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Porte des variables. Recouvrement de variables

Visualisation en utilisant who_user

function z = f(x) a = 5; z = x*x who_user endfunction

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
II- Scripts et fonctions
4. Fonctions Recouvrement de variables Porte des variables. Les fonctions appeles par f accdent alors la variable a de f, non celle de lenvironnement gnral Aucun moyen de remonter lenvironnement gnral function z = f(x) disp(f avant:+) a = 5; disp(f aprs:+) z = g(x) endfunction function z = g(x) disp(g:+string(a)) z = x*x endfunction
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices

III Complments sur les matrices

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
1. Reprsentation en mmoire des matrices

Les matrices sont stockes sous la forme dun vecteur colonne - avec leur taille : nombre de lignes et nombre de colonnes
nbLignes = 3 nbCols = 3

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
1. Reprsentation en mmoire des matrices Les matrices sont stockes sous la forme dun vecteur colonne Consquence : on peut aussi utiliser la notation B(14), avec un seul paramtre dans les parenthses

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
1. Reprsentation en mmoire des matrices
Les matrices sont stockes sous la forme dun vecteur colonne

De faon gnrale, quelle est la correspondance entre les coordonnes un paramtre et les coordonnes deux paramtres ? A(a,b) = A(i) avec i = (b-1)nbLignes+a

A(i) = A(a,b) avec b = E((i-1)/nbLignes)+1 a = i-(b-1)nbLignes ou a = modulo(i-1,nbL)+1


Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
2. Redimensionnement des matrices On peut modifier la taille de la matrice si le produit nbLignes x nbColonnes nest pas modifi cest--dire pour un nombre total dlments constant Commande : B = matrix(A, nouveauNbLignes, nouveauNnCol);

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
3. La commande matrix matrix(M, n,m) : renvoie la matrice de dimension nxm obtenue en parcourant M(:) - la matrice rsultat est construite de la premire la dernire colonne

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
4. Ajout de composantes : exemple Si on a une matrice A de taille 2x3, A(3,4) provoque une erreur mais pas A(3,4) = 42;

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
4. Ajout de composantes : principe Exemple : si on a une matrice A de taille 2x3, - A(3,4) provoque une erreur -mais pas A(3,4) = 42; Consquence de A(3,4) = 42; - cration dune nouvelle matrice de taille 3x4 - dans la sous-matrice 1:2,1:3, copie de la matrice A - la position (3, 4), affectation de 42 -autres cases remplies avec des 0 A viter si possible : cot calculatoire lev

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
5. Extraction de sous-matrices : principe

A une matrice de taille nbLignes x nbCols v1 un vecteur de taille m, v1 = (i1, i2, . . . , im) contenant des valeurs entires entre 1 et nbLignes v1 un vecteur de taille n, v2 = (j1, j2, . . . , jn) contenant des valeurs entires entre 1 et nbCols Alors B = A(v1, v2) est une matrice de taille m n : B(i, j) = A(v1(i), v2(j)) B : intersections des lignes i1, i2, . . . , im et des colonnes j1, j2, . . . , jn

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
5. Extraction de sous-matrices : exemples

Extraction de sous-matrices ->A([1 3 4],[2 4]) ->A([4 3 1],[2 4]) ->A([4 3 1],[4 2])

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
5. Extraction de sous-matrices : suppression On peut sen servir pour supprimer des lments de la matrice A -> A(:, 1:2)= [] -> A(3, :)= []

B = A(:,3:4)

B = [A(1:2,:); A(4,:)]

Attention la cohrence en terme de taille : on ne peut supprimer de la sorte que des lignes entires ou des colonnes entires
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
6. Fonction find La fonction find permet de trouver les lments dune matrice qui vrifient une condition donne. par exemple, - trouver les lments suprieurs 10 - ou trouver les chanes de caractres de longueur 2 contenues dans une matrice de chanes de caractres Syntaxe : find(<expM>) <expM> une condition boolenne faisant intervenir une matrice M
Valeur de retour : deux possibilits - un vecteur : indices des lments de M(:) qui vrifient <expM> - deux vecteurs de mme taille contenant respectivement des indices de lignes et des indices de colonnes tels que les lments (lig col) de M vrifient <ExpM>

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
6. Fonction find Exemple

Soit M la matrice

-> indices = find(M == 1) renvoie


indices = [1 6 8]

-> [indLignes, indCols] = find(M == 1) renvoie indLignes = [1 2 3] indCols = [1 3 2]


Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
III Complments sur les matrices
6. Fonction find ATTENTION -> indices = find(M == 1) renvoie indices = [1 6 8] -> [indLignes, indCols] = find(M == 1) renvoie indLignes = [1 2 3] indCols = [1 3 2]
ATTENTION

M(indLignes, indCols) nest pas la sous-matrice des lments de M qui vrifie la condition M(indices) est le sous-vecteur des lments de M(:) qui vrifient la condition
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

INITIATION A SCILAB

IV La boucle for

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
IV La boucle for
1. Principe et syntaxe Lexpression itrative for comporte 2 parties - une partie ensemble de dfinition avec: - une variable de boucle - Une matrice de valeurs - une partie instructions : squence dinstructions excuter pour tout lment de lensemble de dfinition

for <variable> = <matriceDeValeurs> instructions end

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
IV La boucle for
2. Itration sur un vecteur ligne Afficher les composantes du vecteur

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
IV La boucle for
3. Autres exemples Itrer sur une matrice constante

Universit Abdelmalek Essaadi Facult des Sciences

Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
IV La boucle for
4. Addition des termes dun vecteur
Avec la fonction sum

function res = additionSum(v) res = sum(v) endfunction


Avec un for function res = additionFor1(v) res = 0 for i = 1:length(v) res = res+v(i) end endfunction
Universit Abdelmalek Essaadi Facult des Sciences

Avec un for Scilab function res = additionFor2(v) res = 0 for i = v res = res+i end endfunction
Automne 2012 Filires SMA-SMI

INITIATION A SCILAB
IV La boucle for
5. Conclusions sur la boucle for Eviter les boucles (while comme for) autant que possible - utiliser de prfrence les fonctions Scilab il faut connatre les fonctions Scilab Si on utilise des boucles - exploiter au maximum les spcificits Scilab (reprsentation interne en mmoire, ...) il faut connatre les spcificits Scilab Par ailleurs - une programmation efficace repose dabord sur des algorithmes efficaces
Universit Abdelmalek Essaadi Facult des Sciences Automne 2012 Filires SMA-SMI

Vous aimerez peut-être aussi