PDF de programación - Uso de funciones en Maple

Imágen de pdf Uso de funciones en Maple

Uso de funciones en Maplegráfica de visualizaciones

Publicado el 18 de Abril del 2019
838 visualizaciones desde el 18 de Abril del 2019
588,2 KB
12 paginas
Creado hace 12a (10/04/2012)
Uso de funciones en Maple

José Luis Torres Rodríguez*

Enero 2011

Un elemento importantisimo en Maple son las funciones. El sistema por sí mismo ya contiene un conjunto
predefinido de éstas, pero también le proporciona al usuario varios mecanismos para poder definirlas suyas
propias.

Al igual que con las variables, las funciones permanecen en la memoria desde su definición y pueden ser

invocadas a lo largo de toda la sesión.

1. Funciones definidas por el usuario

La manera de crear funciones dadas por el usuario es por medio de la definición de operadores. Esto se

hace utilizando la siguiente sintaxis:

nom := var -> regla;

Donde nom es el nombre que se le asignará a la función, var es la variable de la cual dependerá, y regla
es la regla de correspondencia que se aplicará al invocar dicha función. Entre el nombre de la variable y la
regla de correspondencia se debe colocar el operador “->", formado por un signo menos (“-") y un mayor
que (“>"). Por ejemplo, definamos la función f:

> f := x -> x + x^2;

f := x → x + x2

Este tipo de funciones pueden ser evaluadas en la forma: f(n), donde n es una expresión aritmética,

simbólica o una función.

Antes de continuar, definamos la función g:

> g := x -> 2*x + 3*x^2;

Ahora, para evaluar f en x = 25, x =

> f(25);



g := x → 2 x + 3 x2
23 + 182 y x = g(34), procedemos de la siguiente manera:

> f(sqrt(23) + 18^2);

> f(g(34));

650



23 + 324 + (



23 + 324)2

12506832

El procedimiento que debe seguirse para funciones de varias variables es análogo. Para definir la función

procedemos de la siguiente forma:

*Coordinación de Cómputo, Facultad de Ciencias, UNAM

1

nom := (var1, var2, var3, ...) -> regla;

Nuevamente, nom es el nombre de la función, “(var1, var2, var3, ...)” son las variables de las cuales
depende (deben colocarse entre parentesis) y regla es la regla de correspondencia asignada. Por ejemplo,
definamos la siguiente función:

> h := (x, y, z) -> x^2 + y^2 + z^2;

h := (x, y, z) → x2 + y2 + z2

Para poder evaluar h en x = 3 , y = 9, z = g(x + y), procedemos de la siguiente forma:

> h(3, 9, g(3 + 9));

208026

La función se evaluará tomando el primer dato como el valor de la primer variable definida, el segundo
dato como el valor de la segunda variable y así sucesivamente. De esta manera es posible definir funciones que
dependan de una o varias variables. Este tipo de funciones también pueden ser utilizadas en instrucciones que
reciben funciones como argumento, solamente se debe indicar a Maple que se trata de una función operador
y se deben escribir explicitamente las variables de las cuales depende. Por ejemplo, la siguiente instrucción
nos dá un valor erroneo:

> diff(f, x);

Comparese con la siguiente :

> diff(f(x), x);

0

1 + 2 x

A continuación graficaremos f y g de la siguiente forma:

> plot({f(x), g(x)}, x=-10..10);

En este caso, al colocar f como argumento de plot debe expresarse como f(x), de lo contrario Maple no
podra hacer la evaluación correctamente. Lo mismo sucede con funciones de varias variables. Por ejemplo, si
tenemos una función d que depende de a, b y c, ésta debe ser siempre invocada como d(a, b, c). Veamos
el siguiente ejemplo. Primero definimos una función de dos variables:

> p := (e, h) -> e*h + h^2;

p := (e, h) → e h + h2

2

050100150200250300–10–8–6–4–2246810x A continuación graficamos p para −5 ≤ e ≤ 5, −4 ≤ h ≤ 4
> plot3d(p(e, h), e=-5..5, h=-4..4);

Existe una forma de evitar el tener que escribir explicitamente dichas variables mediante el uso de
“alias"(esto se tratará más adelante). Por último, cabe señalar que Maple no nos permite hacer una definición
recursiva de una función. Por ejemplo, no es válido hacer lo siguiente:

> F := x -> sin(x);

> F := x -> F(x) + sqrt(25);

F := sin

F := x → F(x) +



25

Maple nos enviara un mensaje de error al tratar de evaluar esta función :

> F(5);

Error, (in F) too many levels of recursion

2. Composición de funciones

El definir funciones como operadores es bastante útil para poder hacer composición de funciones. Existen
varias formas de hacer dicha composición. Una de ellas es simplemente anidar las funciones. Veamos un
ejemplo.

Primero definimos las funciones H y K:

> H := a -> sin(a + 1);

> K := a -> exp(1 - a);

H := a → sin(a + 1)

K := a → e(1−a)

Ahora, calcularemos las composiciones H(K(w)), K(H(w)) y H(H(H(w))).

> H(K(w));

> K(H(w));

sin(e(1−w) + 1)

3

> H(H(H(w)));

e(1−sin(w+1))

sin(sin(sin(w + 1) + 1) + 1)

Otra forma de hacer este último cálculo es utilizando el operador de composición de funciones, de la

siguiente forma:

(f1 @ f2 @ f3 @ ... @ fn)(x);

Donde f1, f2, f3, ... , fn son las funciones que se desea componer y x es el valor en el cual sera evaluada

la composición. Esta expresión nos produce el mismo resultado que si emplearamos lo siguiente:

f1( f2( f3( ...( fn(x) ) ) ) );

Sin embargo, al usar la primera forma nos evitamos el tener que anidar todas las funciones con paréntesis.

Utilizando esta notación, calculemos nuevamente las composiciones anteriores:

> (H@K)(w);

> (K@H)(w);

> (H@H@H)(w);

sin(e(1−w) + 1)

e(1−sin(w+1))

En este último caso, estamos haciendo una composición de la misma función tres veces. Este tipo de
operaciones también las podemos realizar utilizando el operador de composición repetida de funciones, cuya
notación es:

sin(sin(sin(w + 1) + 1) + 1)

(f @@ n)(x);

Donde f es el nombre de la función, n es el número de veces que se desea componer consigo misma y x el
valor en el cual se evaluará dicha composición. Por ejemplo, para hacer la composición de H consigo misma
tres veces:

> (H@@3)(w);

Este último resultado es el mismo que obtenemos al usar (H@H@H)(w) o bien H(H(H(w))), solo que

se trata de una forma más breve y sencilla. Utilizando esta notación, definiremos la siguiente función:

sin(sin(sin(w + 1) + 1) + 1)

> Q := w -> (H@@3)(w);

A continuación graficamos esta función para −π ≤ w ≤ π.

Q := H (3)

4

> plot(q, w=-Pi..Pi);

De hecho, todas estas formas de composición pueden ser utilizadas con las mismas funciones que propor-

ciona Maple al usuario. Por ejemplo, calculemos el valor numérico de:

cos(cos(cos(π2))).



Una forma de hacerlo es la siguiente:

> evalf(sqrt(cos(cos(cos(Pi^2)))));

Otra manera es:

> (evalf@sqrt@cos@cos@cos)(Pi^2);

Y existe una opción más:

> (evalf@sqrt@cos@@3)(Pi^2);

0,9023117120

0,9023117120

0,9023117120

Notese que en esta última instrucción utilizamos, además del operador de composición, el operador de

composicición repetida.

En general, Maple nos permite hacer cualquier composición de funciones, siempre y cuando los datos
de salida y entrada de éstas sean compatibles. Por ejemplo, no podemos hacer una composición con las
funciones plot y evalf, pues los datos que manejan son diferentes. Téngase esto siempre en cuenta al hacer
composiciones.

3. Transformación de expresiones en funciones operador

Considerese la siguiente asignación:

> g := x + sin(x);

¿Cómo podemos, usando g, obtener una función operador con la misma regla de correspondencia y de

tal manera que también dependa de la variable x?

g := x + sin(x)

5

0.860.880.90.920.940.960.981–3–2–10123w Una posible opción es hacer lo siguiente:
Asignamos el argumento x a la expresión g (la regla de correspondencia) de la siguiente forma:

> G := x -> g;

Intentemos evaluar para x = 5 :

> G(5);

G := x → g

x + sin(x)

Esto nos genera un resultado erroneo, por lo cual se ve inmediatamente que este no es un método

apropiado.

Maple nos proporciona un mecanismo a través del cual podemos transformar cualquier expresión en una
función operador con la misma regla de correspondencia y que dependa de la misma variable (o variables,
según sea el caso), por medio de la instrucción unapply (consúltese su página de ayuda). La notación es la
siguiente:

unapply(E, x1, x2, x3,...xn);

Donde E es la expresión que se desea convertir y x1, x2, x3, ... ,xn son las variables de las cuales
dependerá la función operador generada (deben ser las mismas variables que aparecen en la expresión E).
Esta instrucción devuelve una función operador con las características antes descritas. Por ejemplo, podemos
convertir g en operador de la siguiente forma:

> G := unapply(g, x);

G := x → x + sin(x)

Desde este momento, G es considerada una función operador con regla de correspondencia equivalente a

la de g. Probemos evaluando en x = Pi/2:

> G(Pi/2);

Incluso, podemos hacer composiciones usando esta función:

π
2

+ 1

> (evalf@G@@4)(Pi^3);

28,31175398

El caso de funciones de dos o más variables es equivalente. Veamos el siguiente ejemplo:

> d := 4*x + 5*y + x*y;

Convertimos d a operador de la siguiente forma:

d := 4 x + 5 y + x y

> funcion := unapply(d, x, y);

funcion := (x, y) → 4 x + 5 y + x y

y a continuación la evaluamos para datos particulares:

> funcion(6, sqrt(24));



6

24 + 22

También podemos usar esta función para hacer composición con otras funciones:

> (evalf@funcion)(6, sqrt(24));

77,88877435

Otra de las ventajas de estas conversiones es que Maple nos permite definir operadores a partir de
cualquier expresión, en particular a partir de resultados generados por otras instrucciones. Por ejemplo,
calculemos la siguiente integral con respecto a x :

6

> int(1/(a^3 + x^3), x);

−1
6

ln(a2 − a x + x2)

a2

+

1
3



3 arctan(

(−a + 2 x)

3 a



3

)

a2

+

1
3

ln(a + x)

a2

Este resultado lo asignaremos a la variable res pero en forma de operador y evaluaremos en:

a = .32, x = 2.1

> res := unapply( %, a, x);

res := (a, x) → −1
6

ln(a2 − a x + x2)

a2

+

1
3

> res(.32, 2.1);

0,686781499 + 3,255208333



3 arctan(

1
3

(−a + 2 x)

a

a2



3 arctan(4,041666667



3

)



3)

+

1
3

ln(a + x)

a2

Esta es una forma en la cual podemos retener expresiones generadas como resultado de alguna operación,

para poder evaluarlas o manipularlas posteriormente.

4. Funciones predefinidas

Existen varias funciones de Maple que se encuentran disponibles automáticamente cada vez que iniciamos
u
  • Links de descarga
http://lwp-l.com/pdf15746

Comentarios de: Uso de funciones en Maple (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad