Scilab Function

external - Objet Scilab, fonction externe ou routine

### Description

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. Des exemples sont donnés dans le répertoire `routines/default` (voir le fichier `README`).

Les routines externes Fortran ou C peuvent aussi être liées dynamiquement (voir `link`).

### Voir aussi

`ode` `optim` `impl` `dassl` `intg` `schur` `gschur`