http://www.saphir-control.fr/
|
function [y]=bisq(x,a,b,c)
xx=x.*x;
y=a*xx**2+b*xx+c;
return
--> a=1;b=2;c=-4;
-->xres=fsolve(100,bisq)
xres =
1.1117859
La première fonctionalité consiste à interrompre
l'exécution d'une fonction écrite en langage Scilab. Il y a pour
cela 3 possibilités : une commande clavier et deux commandes
programmées. La commande clavier est Ctrl-c et les commandes
programmées sont setbpt et pause. La commande
pause doit être insérée dans le code de la
fonction (ce qui nécessite un nouveau chargement de la fonction)
à l'endroit souhaité alors que la commande setbpt (place
un point d'arrêt ou breakpoint) est une commande extérieure
à la fonction qui ne modifie pas son code source.
a=1;b=2;c=-4;x=10;
-->bisq(x,a,b,c)
ans =
10196.
-->setbpt('bisq',2)
-->bisq(x,a,b,c)
Stop after row 2 in function bisq :
-1->
Le prompt -1-> signifie que nous sommes
maintenant au niveau 1 d'interruption (on peut donc avoir plusieurs niveaux). A
ce niveau on se trouve dans la situation de départ d'une nouvelle
session de Scilab. On peut faire toutes les manipulations souhaitées
sans affecter le niveau inférieur. Ce qui est essentiel c'est que l'on a
accès ``en lecture'' à toutes les variables du niveau
inférieur. La commande setbpt('bisq',2) a eu le même
effet que l'insertion de la commande pause après la
deuxième ligne de la fonction bisq.-1->a;On redescend au niveau inférieur et on reprend l'exécution interrompue par la commande resume (ou return ) :
-1->resume
ans =
10196.
Mais on peut modifier des variables du niveau inférieur à partir
du niveau d'interruption par la commande resume en lui donnant comme
paramètre les noms des variables modifiées; dans le cas
précédent on peu faire :
-->y=bisq(x,a,b,c)
Stop after row 2 in function bisq :
-1->a=5;b=0.;
-1->[a,b]=resume(a,b)
y =
49996.
On peut revenir directement au niveau 0 par la commande abort.
-->dispbpt()
breakpoints of function :bisq
2
-->delbpt('bisq',2)
Lorsqu'on utilise Ctrl-c pour interrompre l'exécution de longs
programmes il est utile de localiser l'endroit où l'interruption s'est
produite par la commande whereami :-1->whereami() whereami called under pause pause called at line 3 of macro bisqou la commande where :
-1->[linenum,mac]=where() mac = !pause ! ! ! !bisq ! linenum = ! 0. ! ! 3. !Si la fonction est une fonction des librairies Scilab on peut localiser cette fonction par :
-->whereis('median')
ans =
elemlib
On peut alors connaître le chemin d'accès à cette librairie
ainsi que la liste de toutes les fonctions de la librairie en tapant simplement
le nom de la librairie :
-->elemlib
elemlib =
Functions files location :SCI/macros/elem/
and atanm atanhm atanh asinhm asinh asinm
asin acoshm acosh acosm acos cosm cothm
coth cotg coshm cosh erfcx erfc erf
fix GLoad intersect isnan isinf inttrap
intsplin integrate intc intl interpln lex_sort
logm log10 mean median modulo null or
pertrans setdiff st_deviation spones sprand spzeros
speye squarewave smooth sqrtm sinm signm
sinhm sinh toeplitz tanhm tanh tanm tan
union unique
Il y a, bien sûr, quelques commandes qui donnent des renseignements sur
les variables utilisées :
-->who
your variables are...
typeof whos y x xres c b
a bisq startup ierr MODE_X scicos_pal
%helps MSDOS home PWD TMPDIR percentlib
fraclablib soundlib xdesslib utillib tdcslib siglib
s2flib roblib optlib metalib elemlib commlib polylib
autolib armalib alglib intlib mtlblib SCI %F
%T %z %s %nan %inf old
newstacksize $ %t %f %eps %io
%i %e
using 6196 elements out of 1000000.
and 54 variables out of 1071
La commande who fournit la liste des variables et librairies
utilisées ainsi que la place mémoire utilisée dans la pile
(avec la taille de cette dernière qui peut être également
obtenue par stacksize() ). -->whos() Name Type Size Bytes typeof compiled function 3088 whos compiled function 5736 y constant matrix 1 by 1 24 x constant matrix 1 by 1 24 xres constant matrix 1 by 1 24 ................................. TMPDIR string 1 by 1 80 percentlib library 8920 fraclablib library 1504 soundlib library 272 .................................Lors de l'écriture de programmes multiples il peut être intéressant de savoir si un nom de variable est déja utilisé ou quel est le type d'une variable :
-->exists('x')
ans =
1.
-->type(x)
ans =
1.
-->typeof(x)
ans =
constant
On peut également libérer la place mémoire occupée
par un variable en la détruisant par la commande clear.This document was translated from LATEX by HEVEA.