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)