Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Operaciones en funciones no lineales

Identificadores de funciones

Es posible crear un identificador para cualquier función de MATLAB®, y luego usar ese identificador como medio para hacer referencia a la función. Comúnmente, un identificador de función se pasa en una lista de argumentos a otras funciones, que luego pueden ejecutar o evaluar la función mediante el uso del identificador.

Para construir un identificador de función en MATLAB, utilice el signo arroba, @, antes del nombre de la función. En el siguiente ejemplo, se crea un identificador de función para la función sin y se asigna este a la variable fhandle:

fhandle = @sin;

Se puede llamar a una función por medio de su identificador de la misma forma en que se llamaría a la función mediante su nombre. La sintaxis es

fhandle(arg1, arg2, ...);

La función plot_fhandle, que se muestra a continuación, recibe datos y un identificador de función, genera los datos del eje y usando el identificador de función, y los representa:

function plot_fhandle(fhandle, data)
plot(data, fhandle(data))

Cuando se llama a plot_fhandle con un identificador para la función sin y el argumento que se muestra a continuación, la evaluación resultante produce un diagrama de onda sinusoidal:

plot_fhandle(@sin, -pi:0.01:pi)

Funciones de funciones

Una clase de funciones llamada “funciones de funciones” opera con funciones no lineales de una variable escalar. Es decir, una función opera sobre otra función. Las funciones de funciones incluyen

  • Búsqueda de ceros

  • Optimización

  • Cuadratura

  • Ecuaciones diferenciales ordinarias

MATLAB representa la función no lineal mediante el archivo que la define. Por ejemplo, esta es una versión simplificada de la función humps de la carpeta matlab/demos:

function y = humps(x)
y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

Evalúe esta función en un conjunto de puntos en el intervalo 0 ≤ x ≤ 1 con

x = 0:.002:1;
y = humps(x);

Luego, represente la función con

plot(x,y)

La gráfica muestra que la función tiene un mínimo local cerca de x = 0.6. La función fminsearch busca el minimizador, el valor de x donde la función toma este mínimo. El primer argumento para fminsearch es un identificador de función para la función que se está minimizando y el segundo argumento es un cálculo aproximado de la ubicación del mínimo:

p = fminsearch(@humps,.5)
p =
    0.6370

Para evaluar la función en el minimizador,

humps(p)

ans =
   11.2528

Los analistas numéricos usan los términos cuadratura e integración para distinguir entre la aproximación numérica de integrales definidas y la integración numérica de ecuaciones diferenciales ordinarias. Las rutinas de cuadratura de MATLAB son quad y quadl. La instrucción

Q = quadl(@humps,0,1)

calcula el área bajo la curva de la gráfica y produce

Q =
   29.8583

Finalmente, la gráfica muestra que la función nunca es cero en este intervalo. Por lo tanto, al buscar un cero con

z = fzero(@humps,.5)

se encuentra uno fuera del intervalo

z =
   -0.1316