Eléments de base du langage Scilab

01 Feb 2020 01 Feb 2020 3879 vues ESSADDOUKI Mostafa 6 min de lecture

Bases de Scilab — Variables, expressions et fonctions

Scilab est un langage de calcul numérique où tout est matrice : un scalaire est une matrice 1×1, un vecteur est une matrice 1×n ou n×1. Cette uniformité rend le langage cohérent et permet des calculs vectorisés très performants.

Définition — Variable Scilab Une variable est un nom symbolique associé à une valeur (matrice). Les variables n'ont pas besoin d'être déclarées à l'avance, mais toute variable doit avoir reçu une valeur avant d'être utilisée. Accéder à une variable non initialisée génère une erreur Undefined variable.
// ❌ Variable non définie → erreur
--> f
Undefined variable: f

// ✅ Variable définie → valeur affichée
--> x = 42
x =
   42.

1. Expressions arithmétiques

Une expression est une combinaison de valeurs et d'opérateurs que Scilab évalue immédiatement. Le résultat est stocké dans la variable automatique ans si aucune variable de destination n'est spécifiée.

Exemple n°1 — Expressions simples

--> 2 + 6 / 2       // division prioritaire sur addition
ans =
   5.

--> (2 + 6) / 2     // parenthèses pour forcer l'ordre
ans =
   4.

--> 3 ^ 2           // puissance
ans =
   9.
Sortie
ans = 5.
ans = 4.
ans = 9.
Remarque — Variable ans Scilab stocke automatiquement le dernier résultat non affecté dans la variable ans (answer). Cette variable est réécrite à chaque nouvelle évaluation sans affectation explicite.

Opérateurs arithmétiques

OpérateurDescriptionNotation mathématiqueExemple Scilab
+Additiona + b2 + 3 → 5
-Soustractiona − b5 - 2 → 3
*Multiplication matricielleA × B2 * 3 → 6
/Division à droiteX · Y⁻¹6 / 2 → 3
\Division à gaucheX⁻¹ · YA \ b résout Ax = b
^Puissanceaⁿ3 ^ 2 → 9
modulo(n,m)Reste de la division euclidiennen mod mmodulo(7,3) → 1
Astuce — Division à gauche \ L'opérateur \ est particulièrement utile pour résoudre des systèmes linéaires Ax = bsans calculer explicitement l'inverse de A :
A = [2 1 ; 1 3]
b = [5 ; 10]
x = A \ b       // résout le système — plus stable que inv(A)*b
disp(x)         // x = [1. ; 3.]
Attention — Priorité des opérateurs Scilab respecte les priorités mathématiques standards : ^ > * / > + -. Utiliser des parenthèses pour lever toute ambiguïté :
2 + 6 / 2    // → 5.  (division d'abord)
(2 + 6) / 2  // → 4.  (addition d'abord)

2. Variables et nommage

Définition — Règles de nommageUn nom de variable Scilab peut contenir :
  • Lettres ASCII : a–z, A–Z
  • Chiffres : 0–9 (pas en première position)
  • Caractères spéciaux : %, _, #, !, $, ?
Les variables commençant par % ont une signification spéciale réservée (%pi, %e, %i, %t, %f…).
RègleExemple valideExemple invalide
Commence par une lettre ou %vitesse, %pi2x, 123abc
Sensible à la casseAa
Longueur illimitéemoyenne_generale
Pas d'espace dans le nomnb_elevesnb eleves

Exemple n°2 — Sensibilité à la casse

A = 2       // variable A (majuscule)
a = 1       // variable a (minuscule) — différente !

disp(A)     // 2
disp(a)     // 1
disp(A + a) // 3 — ce sont deux variables distinctes
Sortie
A = 2.
a = 1.
Danger — Ne pas écraser les constantes prédéfinies Les variables préfixées par %sont des constantes système. Les redéfinir provoque des comportements inattendus dans toute la session :
// ❌ À ne jamais faire
%pi = 3    // écrase la vraie valeur de π !
%e  = 2    // écrase la constante d'Euler !

// ✅ Utiliser des noms différents
mon_pi = 3.14159
valeur_e = 2.718

3. Commentaires et lignes de continuation


Syntaxe — Commentaires et continuation Scilab
// Commentaire sur une ligne entière

x = 1 + 2   // commentaire en fin de ligne

// Ligne de continuation avec ".." (deux points)
x = 1 ..
  + 2 ..
  + 3 ..
  + 4       // x = 10

Exemple n°3 — Commentaires et continuation de ligne

// Calcul de la somme 1+2+3+4 sur plusieurs lignes
x = 1 ..
  + 2 ..
  + 3 ..
  + 4
disp(x)     // 10

// Matrice définie sur plusieurs lignes pour la lisibilité
A = [1 2 3; ..
     4 5 6; ..
     7 8 9]
Sortie
x = 10.
A =
   1.  2.  3.
   4.  5.  6.
   7.  8.  9.
Astuce — Supprimer l'affichage avec ; Terminer une instruction par un point-virgule ;supprime l'affichage du résultat dans la console — indispensable pour les calculs intermédiaires ou les grandes matrices :
A = rand(100, 100);    // aucun affichage — matrice silencieuse
B = A * A;             // calcul silencieux
disp(B(1,1))           // affiche seulement ce qu'on veut

4. Fonctions mathématiques

Scilab dispose d'un large ensemble de fonctions mathématiques vectorisées : elles acceptent une matrice en entrée et appliquent le calcul à chaque élément, sans boucle.

CatégorieFonctionsDescription
Exponentielle / Logarithmeexp, expm, log, log2, log10, log1p, logmexp et log : élément par élément ; expm et logm : matricielles
Racine / Puissancesqrt, sqrtmRacine carrée élémentaire ou matricielle
Trigonométriesin, cos, tan, asin, acos, atanAngles en radians
Min / Maxmin, max, mini, maximini/maxi retournent aussi les indices
Signe / Restesign, signm, modulo, pmodulomodulo(n,m) : reste de n ÷ m

Constantes prédéfinies

ConstanteValeurDescription
%pi3.14159265…Nombre π
%e2.71828182…Constante d'Euler e
%i√(−1)Unité imaginaire i
%inf+∞Infini positif
%nanNaNNot a Number (résultat indéfini)
%t / %ftrue / falseBooléens

Exemple n°4 — Identité trigonométrique cos²(x) + sin²(x) = 1

x = 2                   // angle en radians
c = cos(x)
s = sin(x)
resultat = c^2 + s^2    // doit valoir 1

disp("cos(2) = " + string(c))
disp("sin(2) = " + string(s))
disp("cos²(2) + sin²(2) = " + string(resultat))
Sortie
cos(2) = -0.4161468
sin(2) =  0.9092974
cos²(2) + sin²(2) = 1.

Exemple n°5 — Fonctions vectorisées sur une matrice

// Application de sqrt et exp sur un vecteur entier — sans boucle
v = [1 4 9 16 25]
disp(sqrt(v))          // [1. 2. 3. 4. 5.]

// Calcul de e^x pour plusieurs valeurs
x = [0 1 2 3]
disp(exp(x))           // [1. 2.718... 7.389... 20.085...]

// Vérification de ln(e^x) = x
disp(log(exp(x)))      // [0. 1. 2. 3.] — identité retrouvée

// Utilisation de %pi et %e
disp(exp(%i * %pi) + 1)  // ≈ 0 — identité d'Euler : e^(iπ) + 1 = 0
Sortie
sqrt([1 4 9 16 25]) =
   1.   2.   3.   4.   5.

exp([0 1 2 3]) =
   1.   2.7183   7.3891   20.0855

log(exp([0 1 2 3])) =
   0.   1.   2.   3.

exp(%i*%pi) + 1 ≈ 0 + 1.225e-16*i  (≈ 0 numériquement)
Remarque — Fonctions élémentaires vs matriciellesCertaines fonctions existent en deux versions :
  • exp(A) — applique e^x à chaque élément de A
  • expm(A) — calcule l'exponentielle matricielle e^A (définie par la série de Taylor)
  • Même distinction pour log/logm et sqrt/sqrtm

Récapitulatif

ConceptSyntaxe cléRemarque
Variable non définieUndefined variableToujours initialiser avant usage
Résultat sans affectation→ stocké dans ansRéécrit à chaque expression
Supprimer l'affichagex = expr ;Point-virgule en fin d'instruction
Commentaire// texteIgnoré par l'interpréteur
Continuation de ligneexpr ..Deux points en fin de ligne
CasseAaScilab est sensible à la casse
Constantes%pi, %e, %iNe jamais écraser ces variables

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.