external — Objet Scilab, fonction externe ou routine
Fonction ou routine externe nécessitée par des commandes particulières.
Un "external" est une fonction ou une routine qui est utilisée comme argument d'une
"primitive de haut niveau", telle que ode
, optim
, schur
...
La séquence d'appel de la fonction ou de la routine est en général imposée par la primitive de haut niveau qui impose en particulier les arguments d'entrée.
Par exemple la fonction externe costfunc
est un argument de la primitive optim
.
Sa séquence d'appel doit être de la forme : [f,g,ind]=costfunc(x,ind)
et
optim
(primitive permettant de résoudre des problèmes d'optimisation) est invoquée ainsi :
optim(costfunc,...)
Ici costfunc
(la fonction coût à minimiser avec optim
)
calcule f=f(x)
et g=
le gradient de f
en x
(ind
est un entier dont l'usage est précisé dans l'aide de optim
).
Si d'autres variables sont nécessaires à la fonction externe, ces variables peuvent être définies dans son environnement. Elles peuvent aussi être stockées dans une liste : par exemple
[f,g,ind]=costfunc(x,ind,a,b,c)
est valide pour optim
si costfunc
est remplacé par list(costfunc,a,b,c)
.
La séquence d'appel à optim
est donc maintenant :
optim(list(costfunc,a1,b1,c1),....
Un "external" peut aussi être une routine Fortran ou C : cela peut permettre d'accélérer les calculs.
Le nom de la routine est donné comme argument à la primitive de haut niveau sous forme d'une chaîne de caractères. La séquence d'appel est aussi imposée.
Les routines externes Fortran ou C peuvent aussi être liées dynamiquement (voir link
).