Section : Vecteurs et matrices
Précédent : Types de données
Suivant : Graphiques


Fonctions

Scilab propose beaucoup de fonctions dans des domaines très variés. On peut en obtenir la description par help. On peut retrouver une fonction avec apropos, qui retourne les rubriques d'aide dont le titre contient une chaîne de caractères donnée. De très nombreux exemples sont disponibles en démonstration (bouton demo du menu file ou ligne de commande).
help sin
apropos sin
exec("SCI/demos/alldems.dem");
Les fonctions numériques s'appliquent en général à chaque terme d'un vecteur ou d'une matrice. Il ne faut pas oublier que la multiplication, la puissance, la division doivent être précédées par un point pour s'appliquer terme à terme.
x=1:10
y=sin(x)
y=x*sin(x)       // erreur
y=x.*sin(x)
y=1./x.*sin(x)   // erreur
y=(1)./x.*sin(x)
y=sin(x)./x
Fonctions mathématiques
sqrt exp log
sin cos tan
asin acos atan
round floor ceil
Les fonctions vectorielles s'appliquent à l'ensemble d'un vecteur ou d'une matrice, et retournent un scalaire. Pour appliquer une telle fonction colonne par colonne ou ligne par ligne, il faut rajouter l'option "r" ou "c". Il n'est pas toujours évident de décider laquelle des deux options choisir. Il faut se souvenir qu'avec l'option "r", la fonction retournera un vecteur ligne (row), et donc s'appliquera aux colonnes. Par exemple, sum(A,"r") retourne un vecteur ligne, qui est formé des sommes des coefficients dans chaque colonne.
Fonctions vectorielles
max maximum
min minimum
sort tri par ordre décroissant
gsort tri, ordres particuliers
sum somme
prod produit
cumsum sommes cumulées
cumprod produits cumulés
mean moyenne
median médiane
st_deviation écart-type
A=[1,2,3;4,5,6]
sum(A)
sum(A,"r")
sum(A,"c")
cumsum(A,"r")
cumsum(A,"c")
cumsum(A)
x=rand(1,5)
mean(x)
st_deviation(x)
median(x)
sort(x)
gsort(x,"c","i")
L'utilisation de Scilab consiste en général à étendre le langage par de nouvelles fonctions, définies par des séquences d'instructions. Nous avons vu l'utilisation de deff, nous verrons plus loin la syntaxe des fichiers de fonctions. Il est important de choisir des noms différents pour ces nouvelles fonctions, sans quoi les définitions se superposeront, y compris à celles des fonctions prédéfinies.
deff("y=sin(x)","y=2*x")      // message d'avertissement
sin(2)
Les nouvelles fonctions sont traitées comme des variables, à la différence des fonctions prédéfinies (primitives) : une fonction définie par deff peut être utilisée comme argument dans une nouvelle fonction mais une primitive ne peut pas.
deff("y=pente_secante(f,x,y)","y=(f(y)-f(x))/(y-x)")
x=%pi; y=%pi+0.01;
pente_secante(cos,x,y)        // erreur
deff("y=f(x)","y=cos(x)")  
pente_secante(f,x,y)
z=[0:0.01:%pi];
fplot2d(z,cos)                // erreur
fplot2d(z,f)
Quand on définit une nouvelle fonction numérique, on a toujours intérêt à faire en sorte qu'elle puisse s'appliquer correctement à une matrice, ce qui impose de veiller aux multiplications terme à terme. On peut aussi utiliser aussi feval, qui distribue l'évaluation d'une fonction sur l'ensemble des éléments d'un vecteur.
deff("y=f(x)","y=x*sin(x)")
f(1)
f([1:5])                      // erreur
help feval
feval([1:5],f)
deff("y=g(x)","y=x.*sin(x)") 
g(1)
g([1:5])
Certaines fonctions peuvent retourner plus d'un argument. Par exemple les fonctions de tri sort et gsort retournent par défaut le vecteur trié, mais peuvent aussi donner la permutation des coordonnées qui a été effectuée.
v=rand(1,5)
sort(v)
[vtrie,perm]=sort(v)


Section : Vecteurs et matrices
Précédent : Types de données
Suivant : Graphiques

© B. Ycart (2001)