Manual de Scilab/Xcos/Programación en Scilab

← Cálculo simbólico con SciMax Programación en Scilab Editor de texto (SciNotes) →
Manual de Scilab/Xcos


Para crear una función se puede consultar: [1]. Lo más común seria programar un método iterativo (por ejemplo: que busque el mínimo de una función). Para realizar estas tareas necesitamos dos herramientas muy importantes como son los condicionales y alguna forma de poder hacer iteraciones. Scilab también permite crear funciones escritas en Fortran o en C.

Condicionales

editar

Los Condicionales en Scilab se pueden implementar con "if then else". Si son varias condiciones para evaluar se puede utilizar "select"

if expr1 then
   sentencias
   ...
elseif expri then
   sentencias
   ...
else
   sentencias
   ...
end

Puede consultar la ayuda del programa para ver otro ejemplo o ver todas las opciones de este condicional. En el siguiente ejemplo vamos a utilizar un condicional dentro de una función y la vamos a evaluar desde la línea de comandos:

function f1=pcondicional(a,b)
if a>b then
    f1="a es mayor b"
elseif a>.5
    f1="a es mayor a 0.5"
else
    f1="a es menor a b"
end
endfunction

Ejecución de la función:

editar

Se muestran varias llamadas a la función con diferentes valores para a y b.

-->pcondicional(1,2)
 ans  =
 
 a es mayor a .5   
 
-->pcondicional(5,2)
 ans  =
 
 a es mayor b   
 
-->pcondicional(-1,2)
 ans  =
 
 a es menor a b

Iteraciones

editar

Para realizar Iteraciones en Scilab este cuenta con dos tipos de mecanismos el Bucle For y el Bucle while.

Ejemplo de bucle for

editar
for i=1:5
    disp(i)
end

El resultado es:

-->for i=1:5
--> disp(i)
-->end
 
    1.  
 
    2.  
 
    3.  
 
    4.  
 
    5.

Ejemplo de bucle while

editar
i=0;
while i<5
    disp(i)
    i=i+1;
end

Resultado:

-->i=0;
-->while i<5
--> disp(i)
--> i=i+1;
-->end
 
    0.  
 
    1.  
 
    2.  
 
    3.  
 
    4.

Depurando scripts

editar

Para depurar scripts es conveniente tener el sistema de esta forma por que resulta muchísimo más cómodo para ir ejecutando el código y viendo el resultado en la ventana de comandos:

 

Para producir un punto de ruptura en la ejecución de un script debemos poner la palabra "pause" en el lugar donde queremos que se produzca el punto de ruptura.

Por ejemplo en el siguiente fragmento de código:

function met_itera=met_itera(x1,x2,x3,x4,n,epsilon)
    tic();
    X=[x1,x2,x3,x4];
    i=1;
    while i<n
        gradxk=grade3(X(1,1),X(1,2),X(1,3),X(1,4));
        fx=evalfun(X(1,1),X(1,2),X(1,3),X(1,4),H,b);
        l=callambda(X(1,1),X(1,2),X(1,3),X(1,4));
        XK=X-l*gradxk;
        fxk=evalfun(XK(1,1),XK(1,2),XK(1,3),XK(1,4));
        pause
        if (fx>fxk) then...
        ...

Al ejecutar la función en la líneas de comandos, esta cambia del habitual "-->" por "-1->" esto nos indica que ingresamos al primer punto de ruptura. El resultado de esto se ve de esta forma en Scilab.

Type 'resume' or 'abort' to return to standard level prompt.

-1->

Ahora la función se ejecuto hasta el punto donde dice pause. En este punto podemos revisar variables simplemente tipeando estas en la línea de comandos, etc. Para saltar al próximo punto de ruptura solo tenemos que tipear "resume" y apretar la tecla enter. En el caso de querer salir de la ejecución de la función debemos tipear "abort" seguido de tecla enter.

Referencias

editar