1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
<?xml version="1.0" encoding="UTF-8"?>
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="fr" xml:id="external">
<info>
<pubdate>$LastChangedDate$</pubdate>
</info>
<refnamediv>
<refname>external</refname>
<refpurpose> Objet Scilab, fonction externe ou routine </refpurpose>
</refnamediv>
<refsection>
<title>Description</title>
<para>
Fonction ou routine externe nécessitée par des commandes particulières.
</para>
<para>
Un "external" est une fonction ou une routine qui est utilisée comme argument d'une
"primitive de haut niveau", telle que <literal>ode</literal>, <literal>optim</literal>, <literal>schur</literal>...
</para>
<para>
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.
</para>
<para>
Par exemple la fonction externe <literal>costfunc</literal> est un argument de la primitive <literal>optim</literal>.
Sa séquence d'appel doit être de la forme : <literal>[f,g,ind]=costfunc(x,ind)</literal> et
<literal>optim</literal> (primitive permettant de résoudre des problèmes d'optimisation) est invoquée ainsi :
</para>
<programlisting><![CDATA[
optim(costfunc,...)
]]></programlisting>
<para>
Ici <literal>costfunc</literal> (la fonction coût à minimiser avec <literal>optim</literal>)
calcule <literal>f=f(x)</literal> et <literal>g=</literal> le gradient de <literal>f</literal> en <literal>x</literal> (<literal>ind</literal> est un entier dont l'usage est précisé dans l'aide de <literal>optim</literal>).
</para>
<para>
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
</para>
<programlisting><![CDATA[
[f,g,ind]=costfunc(x,ind,a,b,c)
]]></programlisting>
<para>
est valide pour <literal>optim</literal> si <literal>costfunc</literal> est remplacé par <literal>list(costfunc,a,b,c)</literal>.
La séquence d'appel à <literal>optim</literal> est donc maintenant :
</para>
<programlisting><![CDATA[
optim(list(costfunc,a1,b1,c1),....
]]></programlisting>
<para>
Un "external" peut aussi être une routine Fortran ou C : cela peut permettre d'accélérer les calculs.
</para>
<para>
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.
</para>
<para>
Les routines externes Fortran ou C peuvent aussi être liées dynamiquement (voir <literal>link</literal>).
</para>
</refsection>
<refsection>
<title>Voir Aussi</title>
<simplelist type="inline">
<member>
<link linkend="ode">ode</link>
</member>
<member>
<link linkend="optim">optim</link>
</member>
<member>
<link linkend="impl">impl</link>
</member>
<member>
<link linkend="dassl">dassl</link>
</member>
<member>
<link linkend="intg">intg</link>
</member>
<member>
<link linkend="schur">schur</link>
</member>
<member>
<link linkend="gschur">gschur</link>
</member>
</simplelist>
</refsection>
</refentry>
|