• Funciones

    Las funciones se definen en el apartado de Definiciones. Las funciones asignan un número real a cada valor de su variable (o a cada conjunto de valores de sus variables). Las funciones tienen un identificador (o nombre), una o más variables (que no son más que una lista de identificadores) y  una expresión en términos de esas variables.

    Estos son ejemplos de funciones de una variable con sus identificadores y sus variables:

    Expresión

    Identificador

    Variable

    f(x)=sen(3*x+2)

    f

    x

    g(y)=A*exp(-(y^2)/(s^2))

    g

    y

    Area(radio)=(pi*radio^2)/2

    Area

    radio

    Estos son ejemplos de funciones de dos o más variables con sus identificadores y sus variables:

    Expresión

    Identificador

    Variables

    f(x,y)=raíz(x^2+y^2)

    f

    x, y

    Fun(x,y,z)

    Fun

    x, y, z

    Volumen(a,b,c)=4*pi*a*b*c/3

    Volumen

    a, b, c

    Los nombres específicos de las variables de una función no son importantes, sólo sirven para identificar las variables dentro de la expresión y asignarles allí un papel. Las funciones se evalúan nada más cuando son llamadas explícitamente (por ejemplo por un algoritmo, por un gráfico, por la animación o por la constricción de un control gráfico que se mueve). El panel de configuración de una función tiene este aspecto:

    panel_funcion

    En las siguientes escenas, podemos verificar el funcionamiento de algunas funciones y la forma como fueron creadas en el panel de configuración.

    Escena con funciones de una sola variable.

    (Todas las escenas de este artículo puede descargarlas desde este enlace)

    Escena con funciones de dos o más variables:

    Cada uno de los elementos del panel de configuración, se explican en la siguiente tabla:

    id

    Consta de dos campos de texto. En el primero se especifica el identificador de la función y debe incluir los parámetros de los que dependa escritos entre paréntesis y separados por comas. Por ejemplo: f(x, y, z). En el segundo se detalla una expresión que será el valor a asignara como imagen a esa función.

    dominio

    Es una expresión booleana que determina el dominio de la función. Cualquier intento de evaluar la función fuera de su dominio lanzará una excepción, con lo cual, por ejemplo, su gráfica no se dibuja en los puntos que no están en el dominio.El valor por defecto es vacío, lo cual se interpreta como que el dominio no está restringido.

    algoritmo

    Selector que indica si la función, para evaluarse, debe usar un algoritmo, es decir, si necesita los cálculos indicados en “inicio”, “hacer” y “mientras” (ver, al final, un ejemplo para el cálculo del factorial).

    inicio

    En el campo “inicio” pueden escribirse una serie de asignaciones y llamadas a funciones separadas por punto y coma “;”. Todo lo que haya en este campo se ejecuta al inicio del cálculo.

    hacer

    En el campo “hacer” puede escribirse una serie de asignaciones y llamadas a funciones separadas por saltos de línea. Lo que hay en “hacer” se ejecuta repetidamente mientras la condición “mientras” sea válida.

    mientras

    En el campo “mientras” se debe escribir una expresión booleana. Lo que hay en “hacer” se ejecuta repetidamente mientras la condición “mientras” sea válida.

    El campo donde aparece el identificador de la función (a la izquierda del signo = ) debe incluir los identificadores de las variables entre paréntesis y separados por comas, para dar sentido a la expresión que aparece al lado derecho. La expresión que aparece a la derecha del signo = puede ser, o incluir, un término condicional, por ejemplo:

         func(x)=(x<0)?0:1

    es la función que vale 0 para x<0 y 1 para x>=0. Una expresión booleana vale 1 cuando es verdadera y 0 cuando es falsa por lo cual la función anterior también podría escribirse como

    func(x)=(x>=0),

    o bien usando la función indicadora ind, también podría escribirse como:

         func(x)=ind(x>=0),

    Aparte de las funciones que se definen explícitamente en cada escena por parte del desarrollador de la misma, Descartes incluye una serie de funciones matemáticas básicas, un conjunto de operadores y palabras reservadas que son reconocidas por el analizador de expresiones. Estas funciones, operadores y palabras reservadas pueden usarse en cualquier sitio donde Descartes espera una expresión, incluyendo el campo de texto de un control numérico.

    El dominio puede ser una expresión booleana en términos de las variables de la función. El programa utiliza el dominio para decidir si intenta evaluar la función. Si en un punto la expresión del dominio no se cumple, la evaluación no se intenta y el programa genera una excepción, con lo cual, si se está dibujando por ejemplo la gráfica de esta función, el dibujo que corresponde a este punto no se realiza  y se pasa al siguiente. Cuando el campo del domino está vacío se considera que el dominio de la función no tiene restricciones, es decir, cualquier conjunto de valores de sus variables está en el dominio.

    Cuando el programa intenta evaluar una función en un punto donde tiene una singularidad, se genera una interrupción, igual que si el punto no estuviera en el dominio. Por lo tanto no es necesario excluir del dominio de una función sus puntos singulares, el programa ya lo hace automáticamente. Sólo hay que especificar el dominio si se desea restringir el dominio natural de una función.

    A veces no se puede definir una función solamente mediante una expresión, sino que su evaluación requiere un proceso más complicado. En estos casos el autor puede marcar algoritmo, con lo cual la evaluación de la función realiza antes el algoritmo definido en los campos de texto etiquetados con iniciohacer y mientras (consultar Algoritmos para el significado de estos términos).  En estos campos el autor puede describir el algoritmo de evaluación de la función. El siguiente ejemplo muestra cómo puede una función utilizar un algoritmo. Se trata de una función Fact(x) que calcula el factorial del mayor entero menor o igual que x, para x>=0.

    En la siguiente escena, podemos calcular el factorial de un número entero positivo. Si intentamos con un número negativo, nos dirá que la función no está definida, que confirma la restricción del dominio (ver la siguiente imagen con el algoritmo de la función).

    Funcion_algoritmo

    El algoritmo que se define en este panel se ejecuta cada vez que se quiere evaluar la función, por lo cual los valores calculados en el algoritmo pueden utilizarse para definir el valor de la función.

    Las funciones pueden tener cualquier número de variables, incluso cero. Para evaluar una función sin variables se debe escribir un par de paréntesis después de su nombre (por ejemplo func()).   Las funciones sin variables pueden servir como algoritmos de cálculo que devuelven un valor real. También puede haber funciones que no devuelven ningún valor, las cuales pueden usarse como algoritmos que admiten parámetros.

  • Funciones matemáticas

    Las funciones matemáticas que reconoce el analizador de expresiones de Descartes, aparte de las que estén explícitamente definidas en una escena, son las siguientes:

    Funciones de una variable (x):

    sqr sqr(x)=x*x
    sqrt sqrt(x)=raíz cuadrada de x
    raiz sqrt(x)=raíz cuadrada de x
    exp exp(x)=exponencial natural de x=e^x
    log log(x)=logaritmo natural de x
    log10 log10(x)=logaritmo base 10 de x
    abs  abs(x)=valor absoluto de x
    ent ent(x)=mayor entero n tal que n<x
    sgn  sgn(x)=signo de x (1 si x>0,-1 si x<0,0 si x=0)
    ind ind(b)=indicadora de b (1 si b=true, 0 si b=false)
    sin  sin(x)=seno de x
    sen  sin(x)=seno de x
    cos cos(x)=coseno de x
    tan tan(x)=tangente de x
    cot cot(x)=cotangente de x
    sec sec(x)=secante de x
    csc  csc(x)=cosecante de x
    sinh  sinh(x)=seno hiperbólico de x=(exp(x)-exp(-x))/2
    senh  senh(x)=seno hiperbólico de x=(exp(x)-exp(-x))/2
    cosh  cosh(x)=coseno hiperbólico de x=(exp(x)+exp(-x))/2
    tanh  tanh(x)=tangente hiperbólica de x=sinh(x)/cosh(x)
    coth  cot(x)=cotangente hiperbólica de x=cosh(x)/sinh(x)
    sech  sech(x)=secante hiperbólica de x=1/cosh(x)
    csch  csch(x)=cosecante hiperbólica de x=1/senh(x)
    asin  asin(x)=ángulo cuyo seno es x
    asen  asen(x)=ángulo cuyo seno es x
    acos  acos(x)=ángulo cuyo coseno es x
    atan atan(x)=ángulo cuyo coseno es x
    (Puede descargar esta escena desde este enlace)

    Funciones de dos variables (x, y):

    min min(x,y)=mínimo de x e y
    max max(x,y)=máximo de x e y

    También hay un número aleatorio con distribución uniforme en el intervalo [0,1]: rnd