Vous êtes sur la page 1sur 5

UNMSM-FQIQ-EAP INGENIERA QUMICA

Computacin Aplicada a la Ingeniera

Funciones Annimas
Qu son las Funciones Annimas?
Una funcin annima es una funcin que no est almacenada en un archivo de programa, sino que
est asociada con una variable cuyo tipo es function_handle. Las funciones annimas pueden
aceptar entradas y retornar salidas, tal como lo hacen las funciones estndar. Sin embargo, solo
pueden contener una sola sentencia ejecutable.
Por ejemplo, crear un handle a una funcin annima que encuentre el cuadrado de un nmero:
sqr = @(x) x.^2;

La variable sqr es una function handle. El operador @ crea el handle, y los parntesis ()
immediatamente despus del operador @ incluyen los argumentos de entrada de la funcin. Esta
funcin annima acepta una sola entrada x, e implicitamente retorna una sola salida, un arreglo del
mismo tamao de x que contiene los valores cuadrados.
Encuentre el cuadrado de un valor particular (5) pasando el valor a la function handle, tan igual como
pasara un argumento de entrada a una funcin estndar.
a = sqr(5)
a =
25

Muchas funciones MATLAB aceptan function handles como entradas, de modo tal que usted puede
evaluar funciones sobre un rango de valores. Usted puede crear handles ya sea para funciones
annimas o para funciones en archivos de programas. El beneficio del uso de las funciones annimas
es que usted no tiene que editar y mantener un archivo para una funcin que solo requiere una
descripcin breve.
Por ejemplo, encuentre la integral de 0 a 1 de la funcin sqr pasando la function handle a la funcin
integral:
q = integral(sqr,0,1);

Usted no necesita crear una variable en el espacio de trabajo (ventana workspace) para almacenar
una funcin annima. En vez de ello, usted puede crear una function handle temporal dentro de una
expresin, tal como esta llamada a la funcin integral:
q = integral(@(x) x.^2,0,1);

Variables en la Expresin
Las function handles no solo pueden almacenar una expresin, sino que tambin variables que la
expresin requiere para evaluacin
Por ejemplo, crear una function handle a una funcin annima que requiera los coeficientes a, b y c.
a = 1.3;

TRADUCCIN: PROF. HEBER HELFER

UNMSM-FQIQ-EAP INGENIERA QUMICA


Computacin Aplicada a la Ingeniera
b = .2;
c = 30;
parabola = @(x) a*x.^2 + b*x + c;

Debido a que a, b, y c estn disponibles en el momento que usted crea parabola, la function handle
incluye esos valores. Los valores persisten dentro de la function handle an si usted borra las
variables:
clear abc
x = 1;
y = parabola(x)
y =
31.5000

Para proporcionar valores diferentes a los coeficientes, usted debe crear una nueva function handle:
a = -3.9;
b = 52;
c = 0;
parabola = @(x) a*x.^2 + b*x + c;
x = 1;
y = parabola(1)
y =
48.1000

Usted puede guardar function handles y sus valores asociados en un archivo MAT y cargarlo en una
sesin siguiente de MATLAB usando las funciones save y load, por ejemplo
save myfile.matparabola

Funciones Annimas Mltiples


La expresin en una funcin annima puede incluir otra funcin annima. Esto es til para pasar
diferentes parmetros a una funcin que est evaluando sobre un rango de valores. Por ejemplo,
puede resolver la ecuacin

para diferentes valores de c combinando dos funciones annimas:


g = @(c) (integral(@(x) (x.^2 + c*x + 1),0,1));

Aqu est cmo derivar esta sentencia:


1. Escriba el integrando como una funcin annima,
@(x) (x.^2 + c*x + 1)

2. Evale la funcin desde cero a uno pasando la function handle a integral,

TRADUCCIN: PROF. HEBER HELFER

UNMSM-FQIQ-EAP INGENIERA QUMICA


Computacin Aplicada a la Ingeniera
integral(@(x) (x.^2 + c*x + 1),0,1)

3. Suministre el valor de c construyendo una funcin annima para la ecuacin entera,

g = @(c) (integral(@(x) (x.^2 + c*x + 1),0,1));

La funcin final le permite resolver la ecuacin para cualquier valor de c. Por ejemplo:
g(2)
ans =
2.3333

Funciones sin Entradas


Si su funcin no requiere ninguna entrada, use parntesis vacos cuando defina y llame a la funcin
annima. Por ejemplo:
t = @() datestr(now);
d = t()
d =
26-Jan-2012 15:11:47

Al omitir los parntesis en la sentencia de asignacin se crea otra function handle, y no se ejecuta la
funcin:
d = t
d =
@() datestr(now)

Funciones con Mltiples Entradas o Salidas


Las funciones annimas requieren que usted especifique explcitamente los argumentos de entrada
tal como lo hara para una funcin estndar, separando las entradas mltiples con comas. Por
ejemplo, esta funcin acepta dos entradas, x y y:
myfunction = @(x,y) (x^2 + y^2 + x*y);
x
y
z
z

= 1;
= 10;
= myfunction(x,y)
=
111

Sin embargo, usted no define explcitamente los argumentos de salida cuando crea una funcin
annima. Si la expresin en la funcin retorna salidas mltiples, entonces usted puede requerirlas
cuando llama a la funcin. Encierre las variables de salida mltiples entre corchetes.
Por ejemplo, la funcin ndgrid puede retornar tantas salidas como el nmero de vectores de entrada.
Esta funcin annima que llama a ndgrid tambien puede retornar mltiples salidas:
c = 10;

TRADUCCIN: PROF. HEBER HELFER

UNMSM-FQIQ-EAP INGENIERA QUMICA


Computacin Aplicada a la Ingeniera
mygrid = @(x,y) ndgrid((-x:x/c:x),(-y:y/c:y));
[x,y] = mygrid(pi,2*pi);

Puede usar la salida de mygrid para crear una grfica de grilla o superficie:
z = sin(x) + cos(y);
mesh(x,y,z)

Arreglos de FuncionesAnnimas
A pesar de que la mayora de los tipos de datos fundamentales de MATLAB dan soporte a los
arreglos multidimensionales, los function handles deben ser escalares (elementos sencillos). Sin
embargo, usted puede almacenar mltiples function handles usando un arreglo de celda o un arreglo
de estructura. La aproximacin ms comn es usar un arreglo de celda, tal como
f = {@(x)x.^2;
@(y)y+10;
@(x,y)x.^2+y+10};

Cuando crea un arreglo de celda, tenga en cuenta que MATLAB interpreta los espacios como
separadores de columnas. Omita espacios de las expresiones, tales como las mostradas en el cdigo
anterior, o coloque las expresiones dentro de parntesis tal como
f = {@(x) (x.^2);
@(y) (y + 10);
@(x,y) (x.^2 + y + 10)};

TRADUCCIN: PROF. HEBER HELFER

UNMSM-FQIQ-EAP INGENIERA QUMICA


Computacin Aplicada a la Ingeniera

Acceda a los contenidos de una celda usando llaves. Por ejemplo, f{1} retorna la primera function
handle. Para ejecutar la funcin, pase los valores de entrada dentro de parntesis, despus de las
llaves:
x = 1;
y = 10;
f{1}(x)
f{2}(y)
f{3}(x,y)
ans =
1
ans =
20
ans =
21
Fuente:
http://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html

TRADUCCIN: PROF. HEBER HELFER

Vous aimerez peut-être aussi