Funciones con Maple Luis Villamizar Facultad de Ingeniería Funciones Reales Antes de comenzar a definir funciones, tenemos que en Maple las órdenes terminan con un punto y coma. A veces será interesante terminarlas con dos puntos (:), lo que tiene como efecto que el resultado de la operación no se visualiza. Básicamente podemos manejar funciones reales de dos formas. Una de ellas, será definir una expresión dependiente de la variable correspondiente, mediante una expresión o fórmula, con una orden tal como: > g(x):=x/(x^2+1); g( x ) := x x +1 2 La otra forma sería definir realmente una función, como una regla que asigna a una variable una expresión que dependa de dicha variable, con la sintaxis: nombre de la función := variable - > expresión Para definir la función f ( x) = x 2 − 2 x + 1 , escribimos: > f:=x->x^2-2*x+1; f := x → x2 − 2 x + 1 Hay que notar que se ha definido una expresión g ( x) , pero no una función g . En cambio hemos definido una función f y f ( x) es entonces una expresión, la imagen de x . Conviene destacar también, que en la definición de una expresión pueden usarse otras expresiones y funciones definidas previamente o funciones de la librería de Maple. Por ejemplo, ejecutando la orden: > h(x):=x/g(x)-2*x+f(x); h( x ) := 2 x2 + 2 − 4 x Se ha definido una nueva expresión y con la orden: > hfun:=x->2*x^2+2-4*x; hfun := x → 2 x2 + 2 − 4 x se ha definido una función. El comando unapply Existe en Maple un comando que permite definir una función a partir de una expresión. Se trata del comando unapply, cuya sintaxis es muy simple: basta especificar, tras la expresión, cual de las letras que aparecen en ella queremos tomar como variable. Por ejemplo: > gafun:=unapply(a*x/(1+x^2),x); gafun := x → ax x2 + 1 Comportamiento de las expresiones y las funciones Observemos el comportamiento diferente al sustituir valores numéricos o simbólicos en las expresiones y las funciones. En primer lugar, una función en un punto toma un valor: > f(2/5); 9 25 > hfun(z); 2 z2 + 2 − 4 z > hfun(2/5); 18 25 En cambio, en una expresión no se puede sustituir directamente: > g(2); g( 2 ) > h(2/5); 2 h⎛⎜⎜ ⎞⎟⎟ ⎝5⎠ Hay que utilizar la orden subs: > subs(x=2/5,h(x)); 18 25 > subs(x=2,g(x)); 2 5 Con valores simbólicos: > f(u^2); u4 − 2 u2 + 1 > subs(x=u^2,g(x)); u2 u4 + 1 Función Real de dos o más variables Para definir funciones reales de dos o más variables, se escribe: > f:=(x,y)->x^2+y^2-1; f := ( x, y ) → x2 + y2 − 1 > f(2,-1); 4 > f:=(x,y,z)->x*y+y*z-2*x*z; f := ( x, y, z ) → x y + y z − 2 x z > f(1,-1,3); -10 También podemos definir una expresión de más de dos variables, usando la orden anterior: > g:=x^2+z^2+y^2; g := x2 + z2 + y2 > subs(x=2,y=1,z=1,g); 6 > h:=unapply(g,(x,y,z)); > h(2,1,1); h := ( x, y, z ) → x2 + z2 + y2 6 Funciones Vectoriales Existen varias maneras de definir funciones vectoriales con Maple, la forma más simple para definir una f : \ n → \ m , la podemos escribir con la siguiente sintaxis: f := ( x1 , x2 ,...., xn )− > [ f1 ( x1 , x2 ,...., xn ), f 2 ( x1 , x2 ,...., xn ),...., f m ( x1 , x2 ,...., xn )]; Esto es, se crea una lista ordenada de funciones contenidas entre corchetes ([ ]), lo cual es una manera de definir un vector. La función f : \2 → \3 ⎡ x2 + y2 ⎤ ⎢ ⎥ f ( x, y ) = ⎢ x + y ⎥ ⎢ x− y ⎥ ⎣ ⎦ la escribimos con Maple, como: > f:=(x,y)->[x^2+y^2,x+y,x-y]: 'f(x,y)'=f(x,y); 'f(1,-3)'=f(1,-3); f( x, y ) = [ x2 + y2, x + y, x − y ] f( 1, -3 ) = [ 10, -2, 4 ] Otra forma: > h:=vector(3); h[1]:=(x,y)->x^2+y^2; h[2]:=(x,y)->x+y; h[3]:=(x,y)->x-y; 'h(x,y)'=h(x,y); 'h(1,-3)'=h(1,-3); h := array( 1 .. 3, [ ] ) h1 := ( x, y ) → x 2 + y 2 h2 := ( x, y ) → x + y h3 := ( x, y ) → x − y h( x, y ) = [ x2 + y2, x + y, x − y ] h( 1, -3 ) = [ 10, -2, 4 ] Esta forma es conveniente algunas veces ya que se pueden realizar operaciones con las funciones componentes por separado.