funciones_anonimas

5
1 UNMSM-FQIQ-EAP INGENIERÍA QUÍMICA Computación Aplicada a la Ingeniería TRADUCCIÓN: PROF. HEBER HELFER Funciones Anónimas ¿Qué son las Funciones Anónimas? Una función anónima es una función que no está almacenada en un archivo de programa, sino que está asociada con una variable cuyo tipo es function_handle. Las funciones anónimas pueden aceptar entradas y retornar salidas, tal como lo hacen las funciones estándar. Sin embargo, solo pueden contener una sola sentencia ejecutable. Por ejemplo, crear un handle a una función anónima que encuentre el cuadrado de un número: sqr = @(x) x.^2; La variable sqr es una function handle. El operador @ crea el handle, y los paréntesis () immediatamente después del operador @ incluyen los argumentos de entrada de la función. Esta función anónima acepta una sola entrada x, e implicitamente retorna una sola salida, un arreglo del mismo tamaño 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 pasaría un argumento de entrada a una función estándar. 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 anónimas o para funciones en archivos de programas. El beneficio del uso de las funciones anónimas es que usted no tiene que editar y mantener un archivo para una función que solo requiere una descripción breve. Por ejemplo, encuentre la integral de 0 a 1 de la función sqr pasando la function handle a la función integral: q = integral(sqr,0,1); Usted no necesita crear una variable en el espacio de trabajo (ventana workspace) para almacenar una función anónima. En vez de ello, usted puede crear una function handle temporal dentro de una expresión, tal como esta llamada a la función integral: q = integral(@(x) x.^2,0,1); Variables en la Expresión Las function handles no solo pueden almacenar una expresión, sino que también variables que la expresión requiere para evaluación Por ejemplo, crear una function handle a una función anónima que requiera los coeficientes a, b y c. a = 1.3;

Upload: elizabethvargas

Post on 13-Apr-2016

214 views

Category:

Documents


0 download

DESCRIPTION

computacion aplicada a la ingenieria

TRANSCRIPT

Page 1: funciones_anonimas

1

UNMSM-FQIQ-EAP INGENIERÍA QUÍMICA Computación Aplicada a la Ingeniería

TRADUCCIÓN: PROF. HEBER HELFER

Funciones Anónimas

¿Qué son las Funciones Anónimas?

Una función anónima es una función que no está almacenada en un archivo de programa, sino que

está asociada con una variable cuyo tipo es function_handle. Las funciones anónimas pueden

aceptar entradas y retornar salidas, tal como lo hacen las funciones estándar. Sin embargo, solo

pueden contener una sola sentencia ejecutable.

Por ejemplo, crear un handle a una función anónima que encuentre el cuadrado de un número:

sqr = @(x) x.^2;

La variable sqr es una function handle. El operador @ crea el handle, y los paréntesis ()

immediatamente después del operador @ incluyen los argumentos de entrada de la función. Esta

función anónima acepta una sola entrada x, e implicitamente retorna una sola salida, un arreglo del

mismo tamaño 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

pasaría un argumento de entrada a una función estándar.

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

anónimas o para funciones en archivos de programas. El beneficio del uso de las funciones anónimas

es que usted no tiene que editar y mantener un archivo para una función que solo requiere una

descripción breve.

Por ejemplo, encuentre la integral de 0 a 1 de la función sqr pasando la function handle a la función

integral:

q = integral(sqr,0,1);

Usted no necesita crear una variable en el espacio de trabajo (ventana workspace) para almacenar

una función anónima. En vez de ello, usted puede crear una function handle temporal dentro de una

expresión, tal como esta llamada a la función integral:

q = integral(@(x) x.^2,0,1);

Variables en la Expresión

Las function handles no solo pueden almacenar una expresión, sino que también variables que la

expresión requiere para evaluación

Por ejemplo, crear una function handle a una función anónima que requiera los coeficientes a, b y c.

a = 1.3;

Page 2: funciones_anonimas

2

UNMSM-FQIQ-EAP INGENIERÍA QUÍMICA Computación Aplicada a la Ingeniería

TRADUCCIÓN: PROF. HEBER HELFER

b = .2;

c = 30;

parabola = @(x) a*x.^2 + b*x + c;

Debido a que a, b, y c están disponibles en el momento que usted crea parabola, la function handle

incluye esos valores. Los valores persisten dentro de la function handle aún 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

sesión siguiente de MATLAB usando las funciones save y load, por ejemplo

save myfile.matparabola

Funciones Anónimas Múltiples

La expresión en una función anónima puede incluir otra función anónima. Esto es útil para pasar

diferentes parámetros a una función que esté evaluando sobre un rango de valores. Por ejemplo,

puede resolver la ecuación

para diferentes valores de c combinando dos funciones anónimas:

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

Aquí está cómo derivar esta sentencia:

1. Escriba el integrando como una función anónima,

@(x) (x.^2 + c*x + 1)

2. Evalúe la función desde cero a uno pasando la function handle a integral,

Page 3: funciones_anonimas

3

UNMSM-FQIQ-EAP INGENIERÍA QUÍMICA Computación Aplicada a la Ingeniería

TRADUCCIÓN: PROF. HEBER HELFER

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

3. Suministre el valor de c construyendo una función anónima para la ecuación entera,

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

La función final le permite resolver la ecuación para cualquier valor de c. Por ejemplo:

g(2)

ans =

2.3333

Funciones sin Entradas

Si su función no requiere ninguna entrada, use paréntesis vacíos cuando defina y llame a la función

anónima. Por ejemplo:

t = @() datestr(now);

d = t()

d =

26-Jan-2012 15:11:47

Al omitir los paréntesis en la sentencia de asignación se crea otra function handle, y no se ejecuta la

función:

d = t

d =

@() datestr(now)

Funciones con Múltiples Entradas o Salidas

Las funciones anónimas requieren que usted especifique explícitamente los argumentos de entrada

tal como lo haría para una función estándar, separando las entradas múltiples con comas. Por

ejemplo, esta función acepta dos entradas, x y y:

myfunction = @(x,y) (x^2 + y^2 + x*y);

x = 1;

y = 10;

z = myfunction(x,y)

z =

111

Sin embargo, usted no define explícitamente los argumentos de salida cuando crea una función

anónima. Si la expresión en la función retorna salidas múltiples, entonces usted puede requerirlas

cuando llama a la función. Encierre las variables de salida múltiples entre corchetes.

Por ejemplo, la función ndgrid puede retornar tantas salidas como el número de vectores de entrada.

Esta función anónima que llama a ndgrid tambien puede retornar múltiples salidas:

c = 10;

Page 4: funciones_anonimas

4

UNMSM-FQIQ-EAP INGENIERÍA QUÍMICA Computación Aplicada a la Ingeniería

TRADUCCIÓN: PROF. HEBER HELFER

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 gráfica de grilla o superficie:

z = sin(x) + cos(y);

mesh(x,y,z)

Arreglos de FuncionesAnónimas

A pesar de que la mayoría 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 múltiples function handles usando un arreglo de celda o un arreglo

de estructura. La aproximación más común 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 código

anterior, o coloque las expresiones dentro de paréntesis tal como

f = {@(x) (x.^2);

@(y) (y + 10);

@(x,y) (x.^2 + y + 10)};

Page 5: funciones_anonimas

5

UNMSM-FQIQ-EAP INGENIERÍA QUÍMICA Computación Aplicada a la Ingeniería

TRADUCCIÓN: PROF. HEBER HELFER

Acceda a los contenidos de una celda usando llaves. Por ejemplo, f{1} retorna la primera function

handle. Para ejecutar la función, pase los valores de entrada dentro de paréntesis, después 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