• Aucun résultat trouvé

Scilab est un logiciel mathématique utilisé en général comme

N/A
N/A
Protected

Academic year: 2022

Partager "Scilab est un logiciel mathématique utilisé en général comme"

Copied!
8
0
0

Texte intégral

(1)

1

UTILISATION DU LOGICIEL SCILAB

Scilab est un logiciel mathématique utilisé en général comme langage de programmation mais il peut également être utilisé comme calculateur (avec des nombres, des matrices,…)

I – Éléments d’informatique et d’algorithmique 1) L’environnement logiciel

a) Constantes et variables

Il existe deux constantes réelles prédéfinies dans Scilab : %pi et %e qui sont des approximations respectives de 𝜋 et 𝑒.

Il existe également deux constantes « booléennes » : vrai qui est noté %t (t pour true) et faux noté %f (f pour false).

Une chaîne de caractères est une suite de caractères écrits entre apostrophes.

Remarque 1 : Si la chaîne contient elle-même une apostrophe, il faut la « doubler » pour qu’elle apparaisse correctement dans l’affichage.

Une variable est un « emplacement de mémoire » dans lequel on peut stocker un contenu (réel, matriciel, …).

Pour affecter une valeur à une variables, on utilise le symbole « = ». La valeur placée à droite de ce symbole est affectée à la variable dont le nom est écrit à gauche.

Exemple 1 : l’instruction k=3 consiste à placer le nombre 3 dans une variable appelée k et créée automatiquement par Scilab.

Remarque 2 : Lors d’un calcul, si le résultat n’est pas affecté à une variable, il est automatiquement affecté à la variable nommée ans (answer) :

L’instruction 5+4 provoque la réponse ans =

9.

b) Opérateurs usuels i. Input

L’instruction a=input(‘texte’) affiche le texte écrit entre apostrophe (chaîne de caractère) puis Scilab attend une réponse et l’affecte à la variable a.

Exemple 2 : Lors de l’instruction a=input(‘entrez la valeur de a :’),Scilab affiche : entrez la valeur de a :

L’utilisateur doit alors entrer un nombre qui sera affecté à la variable a.

ii. Disp

Les instructions disp(a)et disp(‘texte’) affichent respectivement le contenu de la variable a et le texte écrit entre apostrophe.

(2)

2

Exemple 3 : Lors de l’instruction disp(s,‘la solution est :’),si la variable s contient la valeur 0, Scilab affiche :

la solution est : 0.

La variable s’écrit donc en premier (pour que sa valeur soit affichée en deuxième !) et le texte entre apostrophe après une virgule en deuxième (et il est affiché en premier !).

iii. Commentaire

A chaque ligne de commande, on peut insérer un commentaire, suivi de //, afin d’apporter une information complémentaire qui ne sera pas prise en compte lors de l’exécution du programme.

Exemple 4 :

a=input(‘entrez la valeur de a :’) //coefficient de x² b=input(‘entrez la valeur de b :’) //coefficient de x c=input(‘entrez la valeur de c :’) //terme constant

iv. Opérations

Addition Soustraction Multiplication Division Puissance

+ - * / ^

Exemple 5 :

a=input(‘entrez la valeur de a :’) ; b=input(‘entrez la valeur de b :’) ; a=a+a^5-5*a*b ;

disp(a)

Si l’utilisateur a choisi 2 à l’invite entrez la valeur de a : et 3 à l’invite entrez la valeur de b : , Scilab affiche : entrez la valeur de a : 2

entrez la valeur de b : 3 4.

v. Opérateurs relationnels et de logique

et ou = < > ≤ ≥ ≠

& | == < > <= >= <>

vi. Fonctions prédéfinies Voici les 5 fonctions prédéfinies dans Scilab :

logarithme

népérien exponentielle partie entière valeur absolue racine carrée

log exp floor abs sqrt

Remarque 3 : Il faut bien respecter la casse (minuscule ou majuscule) car Scilab ne reconnaîtra pas Sqrt ou EXP par exemple.

Exemple 6 : Après l’instruction floor(log(2)+1), Scilab affiche : ans=

1.

(3)

3 c) Vecteurs et matrices

i. Définition d’une matrice / d’un vecteur

Une matrice (ou un vecteur) se définit entre crochets, la liste de ses éléments se définit de la façon suivante :

- Les éléments d’une ligne sont séparés par des virgules ou des espaces ; - Les éléments d’une colonne sont séparés par des points-virgules.

Exemple 7 :

Après validation de l’instruction L=[1 2 3] ou L=[1, 2, 3], Scilab affiche : L =

1. 2. 3.

Après validation de l’instruction C=[1 ; 2 ; 3],Scilab affiche : C =

1.

2.

3.

Après validation de l’instruction M=[1 2 3 ;4 5 6],Scilab affiche : M =

1. 2. 3.

4. 5. 6.

ii. Opérations

Soient 𝐴 et 𝐵 deux matrices compatibles pour les opérations ci-dessous et 𝑘 un entier (éventuellement relatif) :

Opération 𝐴 + 𝐵 𝐴 − 𝐵 𝐴𝐵 𝐴𝑘 𝐴−1 𝑡𝐴

Syntaxe Scilab A+B A-B A*B A^k Inv(A) A’

Opérations sur les éléments de matrices :

Matrice voulue (𝑎𝑖𝑗𝑏𝑖𝑗) (𝑎𝑖𝑗/𝑏𝑖𝑗) (𝑎𝑖𝑗𝑘)

Syntaxe Scilab A.*B A./B A.^k

Remarque 4 : un seul point après la première matrice et l’opération concerne les termes deux à deux.

Taille d’une matrice :

L’instruction size(A) renvoie le format de la matrice 𝐴.

Exemple 8 :

Après validation de la suite d’instructions A=[1 4 9 ;25 4 0];size(A),Scilab affiche : ans =

2. 3. (deux lignes et trois colonnes)

Remarque 5 : Le point-virgule situé après la création de la matrice empêche l’affichage de la matrice.

Pour afficher 𝐴, il suffit de remplacer le point-virgule par une virgule.

(4)

4 Exemple 9 :

Après validation de la suite d’instructions A=[1 4 9 ;25 4 0],size(A),Scilab affiche : A =

1. 4. 9.

25. 4. 0.

ans =

2. 3.

Rang d’une matrice :

L’instruction rank(A) renvoie le rang de la matrice 𝐴.

Exemple 10 :

Après validation de la suite d’instructions A=[1 2 3 ;1 2 3 ;1 2 2];rank(A),Scilab affiche : ans =

2.

Fonctions de matrices :

Si 𝐴 est une matrice et si 𝑓 est une matrice connue de Scilab (soit prédéfinie, soit programmée), l’instruction f(A) renvoie la matrice dont les coefficients sont les images par 𝑓 des coefficients de 𝐴.

Exemple 11 :

Après validation de la suite d’instructions A=[1 4 9 ;25 4 0];B=sqrt(A),Scilab affiche : B =

1. 2. 3.

5. 2. 0.

Extraction et modification de certains éléments d’une matrice :

Soit 𝑢 une variable contenant un vecteur ligne (ou colonne) et une variable 𝐴 contenant une matrice.

L’instruction u(k) extrait le 𝑘ème coefficient de 𝑢

L’instruction A(i,j) extrait le coefficient de la 𝑖ème ligne et 𝑗ème colonne de 𝐴 L’instruction A(i,:) extrait la 𝑖ème ligne de 𝐴

L’instruction A(:,j) extrait la 𝑗ème colonne de 𝐴

Exemple 12 :

Après validation de la suite d’instructions A=[1 4 9 ;25 4 0];a=A(2,1),Scilab affiche : a =

25.

Soit 𝑢 une variable contenant un vecteur ligne (ou colonne) et une variable 𝐴 contenant une matrice à 𝑛 lignes et 𝑝 colonnes.

Considérons de plus un réel 𝑏, un vecteur ligne 𝐿 à 𝑝 colonnes et un vecteur colonne 𝐶 à 𝑛 lignes.

L’instruction u(k)=b remplace le 𝑘ème coefficient de 𝑢 par 𝑏.

L’instruction A(i,j)=b remplace le coefficient de la 𝑖ème ligne et 𝑗ème colonne de 𝐴 par 𝑏.

L’instruction A(i,:)=L remplace la 𝑖ème ligne de 𝐴 par le vecteur ligne 𝐿.

L’instruction A(:,j)=C remplace la 𝑗ème colonne de 𝐴 par le vecteur colonne 𝐶.

(5)

5 Exemple 13 :

Après validation de la suite d’instructions A=[1 4 9 ;25 4 0];C=[-1 ;-2];A( :,3)=C, Scilab affiche :

A =

1. 4. -1.

25. 4. -2.

Résolution d’un système :

Soit une variable 𝐴 contenant une matrice à 𝑛 lignes et 𝑝 colonnes et une variable 𝐵 contenant un vecteur colonne à 𝑛 lignes.

- L’instruction A\B donne une solution particulière du système 𝐴𝑋 = 𝐵 mais pas toutes les solutions.

- L’instruction linsolve(A,-B)renvoie le vecteur vide [] si le système 𝐴𝑋 = 𝐵 n’a pas de solution, le vecteur solution s’il est unique ou une solution particulière si le système en a une infinité.

Exemple 14 :

Après validation de la suite d’instructions A=[1 2;1 3];B=[1;0];linsolve(A,-B), Scilab affiche :

ans = 3.

-1.

Fonction find (très utile pour les simulations de variables aléatoires) : Soit une variable 𝐴 contenant une matrice.

L’instruction find(A test logique)donne, sur une ligne, les positions des coefficients de 𝐴 qui rendent le test vrai. Ces positions sont comptées comme si la matrice A était considérée comme un vecteur colonne contenant les colonnes de 𝐴 l’une sous l’autre.

Exemple 15 : Après validation de la suite d’instructions

A=[0.65 0.34 0.12;0.8 0.63 0.25;0.7 0.49 0.1],find(A<=0.5), size(find(A<=0.5)

Scilab affiche : A =

0.65 0.34 0.12 0.8 0.63 0.25 0.7 0.49 0.1 ans =

4. 6. 7. 8. 9.

ans =

1. 5.

Remarque 6 :

L’instruction size(find(A<=0.5) donne la taille de la matrice obtenue après avoir validé

l’instruction find(A<=0.5). La matrice obtenue est une matrice à 1 ligne et 5 colonnes. La deuxième valeur, 5, donne donc le nombre de coefficients de 𝐴 qui rendent le test vrai.

Fonctions rand et grand :

L’instruction rand()renvoie un nombre au hasard de l’intervalle [0,1], autrement dit rand()simule la valeur prise par une variable aléatoire de loi uniforme sur [0,1].

Pour deux entiers naturels non nuls 𝑛 et 𝑚, rand(n,m)renvoie une matrice à 𝑛 lignes et 𝑚 colonnes dont les éléments sont les valeurs prises par 𝑛𝑚 variables aléatoires indépendantes de loi uniforme sur [0,1].

(6)

6

Exemple 16 : Après validation de l’instruction rand(2,3), Scilab affiche : ans =

0.2113249 0.0002211 0.6653811 0.7560439 0.3303271 0.6283918

L’instruction grand permet de simuler toutes les lois usuelles rencontrées cette année.

Elle s’utilise toujours sous la forme grand(n,m,’loi’,paramètre) si la loi n’a qu’un paramètre ou grand(n,m,’loi’,paramètre1,paramètre2) si elle en a deux.

Elle renvoie une matrice à 𝑛 lignes et 𝑚 colonnes dont les éléments sont les valeurs prises par 𝑛𝑚 variables aléatoires indépendantes suivant la loi utilisée.

Simulation de variables discrètes :

Loi uniforme sur ⟦𝑎; 𝑏⟧ avec 𝑎 et 𝑏 entiers tels que 𝑎 < 𝑏 :

grand(n,m,’uin’,a,b) Loi binomiale de paramètres 𝑁 et 𝑝 :

grand(n,m,’bin’,N,p) Loi géométrique de paramètre 𝑝 :

grand(n,m,’geom’,p) Loi de Poisson de paramètre 𝜆 :

grand(n,m,’poi’,lambda) Simulation de variables à densité :

Loi uniforme sur [𝑎; 𝑏] avec 𝑎 et 𝑏 réels tels que 𝑎 < 𝑏 :

grand(n,m,’unf’,a,b) Loi exponentielle de paramètres 𝜆 :

grand(n,m,’exp’,lambda) Loi normale de paramètres 𝜇 et 𝜎2 :

grand(n,m,’nor’,mu,sigma)

(En deuxième paramètre, on écrit l’écart-type et non la variance de la loi normale …)

Exemple 17 : Après validation de l’instruction grand(3,2,’bin’,10,0.2), Scilab affiche : ans =

4. 1.

1. 0.

2. 2.

2) Programmation d’algorithmes a) Instructions conditionnelles L’instruction

if condition then instruction,end permet d’effectuer une instruction si la condition est satisfaite.

Exemple 18 : Soit la suite d’instructions :

a=rand(),if a<0.5 then disp(‘c’’est gagné!’),end

Si la variable a contient une valeur inférieure à 0,5 alors l’instruction d’affichage « c’est gagné ! » est effectuée, sinon elle est ignorée.

L’instruction dans disp contient une apostrophe, il faut donc la « doubler » (voir remarque 1).

(7)

7 L’instruction

if condition then instruction1,else instruction 2,end permet d’effectuer une instruction si la condition est satisfaite et d’en effectuer une autre sinon.

Exemple 19 : Soit la suite d’instructions :

a=rand(),if a<0.5 then disp(‘PILE’),else disp(‘FACE’),end

Si la variable a contient une valeur inférieure à 0,5 alors l’instruction d’affichage « PILE » est effectuée, sinon l’instruction d’affichage « FACE » est effectuée.

Remarque 7 :

 Si plusieurs instructions suivent then ou else, il faut les séparer par des virgules ou par des points-virgules.

 On peut ne pas écrire then , si on le souhaite :

if a<0.5 disp(‘PILE’),else disp(‘FACE’),end b) La boucle « for »

La boucle

for k=n1:n2 instruction,end

permet de répéter une instruction (ou plusieurs séparées par des virgules ou des points-virgules) pour toutes les valeurs k=n1, k=n1+1, k=n1+2, … ,k=n2.

Exemple 20 : Calcul et affichage du terme de rang 𝑛 de la suite (𝑢𝑛) de premier terme 𝑢0 = 1 et définie par 𝑢𝑛+1= 3𝑢𝑛 − 1 :

n=input(‘entrez la valeur de n :’);

u=1; // valeur du premier terme u0 for k=1:n u=3*u-1;

end disp(u)

Si l’utilisateur a entré la valeur 4 à l’invite entrez la valeur de n :, Scilab affiche : entrez la valeur de n :4

41.

Remarque 8 :

 Les points-virgules permettent de ne pas afficher chaque étape du programme. S’ils sont supprimés ou remplacés par des virgules, Scilab affiche les termes 𝑢0, 𝑢1, 𝑢2, 𝑢3 et 𝑢4 et pas seulement 𝑢4.

 La syntaxe de l’exemple 20, avec les retours à la ligne et les commentaires est celle que l’on écrit dans SciNotes.

La boucle

for k=n1:p:n2 instruction,end

permet de répéter une instruction (ou plusieurs séparées par des virgules ou des points-virgules) pour toutes les valeurs k=n1, k=n1+p, k=n1+2p,…jusqu’à ce que k prenne la plus grande valeur inférieure ou égale à n2. Le réel p s’appelle le pas de la boucle.

(8)

8

Exemple 21 : Calcul et affichage des images par la fonction exponentielle des réels de 0 à 1 avec un pas de 0,1 :

for k=0:0.1:1 a=exp(k);disp(a,'exp('+string(k)+')='),end Scilab affiche :

exp(0)=

1.

exp(0.1)=

1.1051709 exp(0.2)=

1.2214028 exp(0.3)=

1.3498588 [...]

exp(0.8)=

2.2255409 exp(0.9)=

2.4596031 exp(1)=

2.7182818 Remarque 9 :

Dans la commande disp, pour mélanger des mots et des valeurs, on utilise la commande

string qui transforme les valeurs en caractères, et « + » entre les différentes parties écrites chacune entre apostrophes.

c) La boucle « while » La boucle

while condition do instruction,end

permet d’effectuer une instruction (ou plusieurs séparées par des virgules ou des points-virgules) un certain nombre de fois, inconnu à l’avance, tant que la condition est satisfaite.

Exemple 22 : Soit la suite (𝑢𝑛) de premier terme 𝑢0 = 1 et définie par 𝑢𝑛+1 = 𝑢𝑛

2. Calcul et affichage du premier terme inférieur ou égal à 0,1 :

u=1; // valeur du premier terme u0 k=0 ; //rang du premier terme u0 while u>0.1 do u=u/2;k=k+1;

end

disp(u,’le terme de rang ’+string(k)+’:’) Scilab affiche :

le terme de rang 4:

0.0625 Remarque 10 :

 On peut ne pas écrire do si on le souhaite ;

 Si le test se révèle faux dès le premier passage dans la boucle, l’instruction n’est jamais effectuée ;

 Comme dans l’exemple 22, la boucle while est très utile pour afficher le plus petit entier k pour lequel la condition est fausse.

Références

Documents relatifs

Toute utilisation commerciale ou im- pression systématique est constitutive d’une infraction pénale.. Toute copie ou im- pression de ce fichier doit contenir la présente mention

Soit F la variable aléatoire qui donne la proportion d’intentions de vote pour un échantillon de taille 200.. Or p la proportion théorique,

Le but du présent article est de démontrer la conjecture ci-dessus dans le cas des lois gamma à paramètre entier?. La procédure semble

effCumule / length(Obs).. I La fonction dsearch est l’analogue, dans le cas continu, d’une fonction dont on s’est servi dans le cas discret. Rappeler le nom de cette fonction

[r]

Remarque 1 : Si la chaîne contient elle-même une apostrophe, il faut la « doubler » pour qu’elle apparaisse correctement dans l’affichage.. Une variable est un « emplacement

Démontrer que la somme de n variables aléatoires indépendantes deux à deux suivant la loi de Poisson de paramètre λ est une loi de Poisson dont on précisera le

Exercice 3 On lance n fois un dé à six faces et on note : X le nombre de fois que l'on obtient un résultat pair, et Y le nombre de fois que l'on obtient un résultat inférieur ou égal