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.
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.ans = 5. ans = 4. ans = 9.
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érateur | Description | Notation mathématique | Exemple Scilab |
|---|---|---|---|
+ | Addition | a + b | 2 + 3 → 5 |
- | Soustraction | a − b | 5 - 2 → 3 |
* | Multiplication matricielle | A × B | 2 * 3 → 6 |
/ | Division à droite | X · Y⁻¹ | 6 / 2 → 3 |
\ | Division à gauche | X⁻¹ · Y | A \ b résout Ax = b |
^ | Puissance | aⁿ | 3 ^ 2 → 9 |
modulo(n,m) | Reste de la division euclidienne | n mod m | modulo(7,3) → 1 |
\ 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.]^ > * / > + -. 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
- Lettres ASCII :
a–z,A–Z - Chiffres :
0–9(pas en première position) - Caractères spéciaux :
%,_,#,!,$,?
% ont une signification spéciale réservée (%pi, %e, %i, %t, %f…).| Règle | Exemple valide | Exemple invalide |
|---|---|---|
Commence par une lettre ou % | vitesse, %pi | 2x, 123abc |
| Sensible à la casse | A ≠ a | — |
| Longueur illimitée | moyenne_generale | — |
| Pas d'espace dans le nom | nb_eleves | nb 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 distinctesA = 2. a = 1.
%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.7183. Commentaires et lignes de continuation
// 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 = 10Exemple 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]x = 10. A = 1. 2. 3. 4. 5. 6. 7. 8. 9.
; 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 veut4. 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égorie | Fonctions | Description |
|---|---|---|
| Exponentielle / Logarithme | exp, expm, log, log2, log10, log1p, logm | exp et log : élément par élément ; expm et logm : matricielles |
| Racine / Puissance | sqrt, sqrtm | Racine carrée élémentaire ou matricielle |
| Trigonométrie | sin, cos, tan, asin, acos, atan | Angles en radians |
| Min / Max | min, max, mini, maxi | mini/maxi retournent aussi les indices |
| Signe / Reste | sign, signm, modulo, pmodulo | modulo(n,m) : reste de n ÷ m |
Constantes prédéfinies
| Constante | Valeur | Description |
|---|---|---|
%pi | 3.14159265… | Nombre π |
%e | 2.71828182… | Constante d'Euler e |
%i | √(−1) | Unité imaginaire i |
%inf | +∞ | Infini positif |
%nan | NaN | Not a Number (résultat indéfini) |
%t / %f | true / false | Boolé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))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 = 0sqrt([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)
exp(A)— applique e^x à chaque élément de Aexpm(A)— calcule l'exponentielle matricielle e^A (définie par la série de Taylor)- Même distinction pour
log/logmetsqrt/sqrtm
Récapitulatif
| Concept | Syntaxe clé | Remarque |
|---|---|---|
| Variable non définie | → Undefined variable | Toujours initialiser avant usage |
| Résultat sans affectation | → stocké dans ans | Réécrit à chaque expression |
| Supprimer l'affichage | x = expr ; | Point-virgule en fin d'instruction |
| Commentaire | // texte | Ignoré par l'interpréteur |
| Continuation de ligne | expr .. | Deux points en fin de ligne |
| Casse | A ≠ a | Scilab est sensible à la casse |
| Constantes | %pi, %e, %i | Ne jamais écraser ces variables |
Discussion (0)
Soyez le premier à laisser un commentaire !
Laisser un commentaire
Votre commentaire sera visible après modération.