You are on page 1of 155

CLCULO DIFERENCIAL

CON MATHEMATICA
Una y varias variables
Ejercicios resueltos

CSAR PREZ LPEZ

1.12 MATHEMATICA Y LAS COMUNICACIONES


VARIABLES Y FUNCIONES
2.1 VARIABLES
2.2 VARIABLES GLOBALES
2.3 FUNCIONES
2.4 DEFINICION DE FUNCIONES
2.5 FUNCIONES RECURSIVAS
2.6 FUNCIONES CONDICIONALES
2.7 OPERACIONES FUNCIONALES
LMITES DE SUCESIONES Y FUNCIONES. CONTINUIDAD. UNA Y VARIAS
VARIABLES
3.1 FUNCIONES PARA LMIES
3.2 LMITES DE SUCESIONES
3.3 LMITES DE FUNCIONES. LMITES LATERALES
3.4 CONTINU DAD
3.5 VARIAS VARIABLES: LMITES Y CONT NUIDAD.
3 5.1 Teoremas de Caracterizacin
3 5.2 Lmites terados y Direccionales
3.6 CONTINU DAD EN VARIAS VARIABLES
DERIVABILIDAD EN VARIAS VARIABLES. APLICACIONES
4.1 DERIVAB LIDAD EN VARIAS VARIABLES
4.2 MX MOS Y MN MOS DE FUNCIONES DE VARIAS VARIABLES
4.3 MX MOS Y MN MOS CONDICIONADOS. EL MTODO DE LOS
MULT PLICADORES DE LAGRANGE
4.4 ALGUNAS APLICACIONES DE LOS MX MOS Y MN MOS EN VARIAS
VARIABLES.
CLCULO DIFERENCIAL VECTORIAL Y CAMPOS VECTORIALES
5.1 CONCEPTOS DE CLCULO D FERENCIAL VECTORIAL
5.2 LA REGLA DE LA CADENA
5.3 EL TEOREMA DE LA FUNCIN MPLCITA.
5.4 EL TEOREMA DE LA FUNCIN NVERSA.
5.5 EL TEOREMA DEL CAMBIO DE VARIABLE.
5.6 EL TEOREMA DE TAYLOR PARA N VARIABLES.
5.7 CAMPOS VECTORIALES: ROTACIONAL, DIVERGENCIA Y LAPLACIANO

5.8 TRANSFORMACIN DE COORDENADAS

1.1 CLCULO NUMRICO CON MATHEMATICA


Podemos usar Mathematica como una computadora numrica de gran potencia.
La mayora de las calculadoras manejan nmeros slo con un grado de precisin
prefijado, sin embargo Mathematica realiza clculos exactos con la precisin que sea
necesaria. Adems, a diferencia de las calculadoras, podemos realizar operaciones no
slo con nmeros individuales, sino tambin con objetos tales como las matrices.
La mayora de los temas del clculo numrico clsico, son tratados en este
software. Soporta clculo matricial, estadstica, interpolacin, ajuste por mnimos
cuadrados, integracin numrica, minimizacin de funciones, programacin lineal,
resolucin numrica de ecuaciones algebraicas y diferenciales y un largo etctera de
procesos de anlisis numrico que iremos viendo al tratar los sucesivos temas de este
libro.
Veamos algunos ejemplos de clculo numrico con Mathematica. (Como ya
sabemos, para obtener los resultados es necesario teclear Maysculas+Enter una vez
escritas las expresiones correspondientes)
1) Podemos calcular sencillamente 4+3 y obtener como resultado 7, para ello,
basta teclear 4+3 (y posteriormente maysculas + Enter).
In[1] = 4 + 3
Out[1] = 7
2) Tambin podemos obtener el valor exacto de 3 elevado a 100, sin haber fijado
antes la precisin, basta para ello teclear 3^100.
In[2] = 3^100
Out[2] = 515377520732011331036461129765621272702107522001
3) Tambin podemos utilizar la funcin N para pasar el resultado de la
operacin inmediatamente anterior a notacin cient fica. Para ello teclearemos N[%]
(el smbolo % lo usamos para hacer referencia al clculo inmediatamente anterior).
In[3] = N[% ]
47
Out[3] = 5.153775207320114 10
4) Tambin podemos realizar operaciones con un grado de precisin fijado. Si
hallamos la raz cuadrada de 5 con 25 dgitos, bastar teclear la expresin N[ Sqrt[5],
25 ].
In[4] = N[Sqrt[5], 25]
Out[4] = 2.2360679774997896964091737
5) Tambin podemos trabajar con nmeros complejos. Obtendremos el
resultado de la operacin (2+3i) elevado a 10, tecleando la expresin (2+3I)^10.

In[5] = (2 + 3*I)^10
Out[5] = 341525 145668 I
6) Tambin podemos calcular el valor de la funcin de Bessel en el punto 13 5 .
Para ello teclearemos BesselJ[0,13.5].
In[6] = BesselJ[0, 13.5]
Out[6] = 0.2149891658804008
7) Tambin podemos calcular el valor de la funcin Z de Rieman en el punto
(1/2 + 13i) con 15 dgitos. Basta teclear N[ Zeta[ 1/2 + 13I ], 15].
I In[7] = N[Zeta[1/2 + 13*I], 15]
Out[7] = 0.4430047825053677 0.6554830983211705
8) Tambin podemos realizar integrales numricas. Para calcular la integral
entre 0 y p de la funcin Seno(Seno(x)) teclearemos la expresin NIntegrate[
Sin[Sin[x]], {x, 0, Pi} ].
In[8] = NIntegrate[Sin[Sin[x]], {x, 0, Pi}]
Out[8] = 1.78648748195006.
Estos temas sern tratados ms a fondo en sucesivos cap tulos a lo largo del
libro.

1.2 CLCULO SIMBLICO CON MATHEMATICA


Mathematica maneja perfectamente el clculo matemtico simblico, manipula
con facilidad y rapidez las frmulas y expresiones algebraicas y puede realizar la
mayora de operaciones algebraicas. Puede expandir, factorizar y simplificar
polinomios y expresiones racionales y trigonomtricas, puede encontrar soluciones
algebraicas de ecuaciones polinmicas y sistemas de ecuaciones, puede evaluar
derivadas e integrales simblicamente y encontrar funciones solucin de ecuaciones
diferenciales, puede manipular series de potencias, lmites y muchas otras facetas de
la matemtica algebraica.
Veamos algunos ejemplos de clculo simblico con Mathematica.
1) Podemos elevar al cubo la siguiente expresin algebraica: (x+1)
(x+2)(x+2)^2. Esto se consigue tecleando la siguiente expresin: Expand[((x+1)
(x+2)(x+2)^2)^3]. El resultado ser otra expresin algebraica:
In[1] = Expand[((x + 1)*(x + 2) (x + 2)^2)^3]
2 3
Out[1] = 8 12 x 6 x x
2) Podemos factorizar el resultado del clculo del ejemplo anterior tecleando
Factor[ % ]
In[2] = Factor[% ]
3
Out[2] = (2 + x)
3) Podemos resolver la integral indefinida de la funcin (x^2)Seno(x)^2
tecleando Integrate[ x^2 Sin[x]^2, x ]
In[3] = Integrate[x^2*Sin[x]^2, x]
Out[3]=
3
2
x x Cos[2 x] (1 2 x ) Sin[2 x]
--- + ----6
4
8
4) Podemos hallar la derivada del resultado de la integral anterior tecleando D[
%, x ]
In[4] = D[% , x]
Out[4] =

2
2
x Cos[2 x] (1 2 x ) Cos[2 x]
--- +----
2
4
4
5) Podemos simplificar el resultado de la derivada anterior tecleando Simplify[
%]
In[5] = Simplify[% ]
2
2
Out[5] = x Sin[x]
6) Podemos desarrollar en serie de potencias de orden 14 el resultado del
ejemplo anterior tecleando Series[ %, {x, 0,14}]
In[6] = Series[% , {x, 0, 14}]
Out[6] =
6 8 10
12
14
4 x 2x x
2x 2x
15
x + -- +---- ---- + O[x]
3 45 315 14175 467775
7) Podemos resolver la ecuacin 3ax7x^2+x^3=0 (a, es un parmetro)
tecleando Solve[ 3ax 7x^2 + x^3 = 0 ]
In[7] = Solve[3*ax 7*x^2 + x^3 == 0, x]
Out[7] =
1/3
7
49 2
{{x >- + -------------------- +
3
2 1/3
3 (686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )
2 1/3
(686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )
+ -------------------},
1/3
32
1/3
7 I
49 2
{x > + Sqrt[3] (------------------------ +
3 2
2 1/3
3(68681ax+9Sqrt[1372ax+81ax ] )

10

2 1/3
(686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )
+ ---------------------)
1/3
32
1/3
49 2
- (----------------------- +
2 1/3
3 (686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )

2 1/3
(686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )
+ ----------------------) / 2},
1/3
32
1/3
7 I
49 2
{x > Sqrt[3] (------------------- +
3 2
2 1/3
3 (68681ax+9 Sqrt[1372ax+81ax ] )
2 1/3
(686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )
+ ----------------------)
1/3
32
1/3
49 2
(------------------------- +
2 1/3
3 (686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )
2 1/3
(686 81 ax + 9 Sqrt[1372 ax + 81 ax ] )
+ ---------------------) / 2}}
1/3
32
8) Podemos encontrar cinco soluciones complejas de la ecuacin
x^5+2x+1=0 tecleando NSolve[ x^5 + 2x + 1 = 0, x ]
In[8] = NSolve[x^5 + 2*x + 1 == 0, x]

11

Out[8] = {{x > 0.7018735688558619 0.879697197929824 I},


{x > 0.7018735688558619 + 0.879697197929824 I},
{x > 0.486389035934543},
{x > 0.945068086823133 0.854517514439046 I},
{x > 0.945068086823133 + 0.854517514439046 I}}
9) Podemos generar una matriz 3x3 cuyo elemento (i,j) es 1/(i+j+1) tecleando
m = Table[ 1 / (i + j + 1), {i,3}, {j,3} ]
In[9] = m = Table[1/(i + j + 1), {i, 3}, {j, 3}]
Out[9] = {{1/3, 1/4, 1/5}, {1/4, 1/5, 1/6}, {1/5, 1/6, 1/7}}
10) Podemos invertir la matriz anterior, tecleando Inverse[ m ]
In[10] = Inverse[m]
Out[10] = {{300, 900, 630}, {900, 2880, 2100}, {630, 2100, 1575}}
11) Podemos hallar el determinante de la matriz mxIdentidad(3,3)
tecleando Det[ m x IdentityMatrix[3] ]
In[11] = Det[m x*IdentityMatrix[3]]
2
3
Out[11] = (1 4755 x + 255600 x 378000 x )/378000
12) Podemos hallar las permutaciones de los tres elementos {e,f,g}
tecleando Permutations[{e, f, g}]
In[12] = Permutations[{e, f, g}]
Out[12] = {{e, f, g}, {e, g, f}, {f, e, g}, {f, g, e}, {g, e, f}, {g, f, e}}
13) Podemos definir la funcin f(x)=x^2, de variable x, mediante la forma
explcita:
In[13] = f[x ] = x^2
14) Podemos crear funciones puras que no tengan definiciones explcitas
tecleando por ejemplo, Map[Function[x, 1+x^2], {a,b, c, d}]
In[14] = Map[Function[x,1+x^2], {a,b,c,d}]
Out[14] =
2
2
2
2
{1 + a , 1 + b , 1 + c , 1 + d }
Todos estos conceptos sern ampliados en los cap tulos correspondientes.

12

En el correspondiente captulo de grficos ampliaremos estos conceptos.

17

1.4 NOTACIN GENERAL Y USO DE RESULTADOS


PREVIOS
Siempre que se utiliza un programa, es necesario conocer las caractersticas
generales sobre notacin, con la finalidad de introducirnos en la prctica con el
mismo. La mejor forma de aprender Mathematica es utilizar el programa. Cada
ejemplo consiste en el input del usuario encabezado con In[n] y la respuesta de
Mathematica encabezada con Out[n].
Es necesario poner atencin en la diferencia entre maysculas y minsculas, el
tipo de parntesis o llaves, la cantidad de espacios y en la puntuacin (comas, puntos y
comas).
Como el lenguaje C de programacin, Mathematica es sensible a la diferencia
entre maysculas y minsculas, por ejemplo, Sin[x] es distinto que sin[x]. Los nombres
de todas las funciones incorporadas empiezan con mayscula. Cada tipo de parntesis
tiene su propio sentido, como se ver ms adelante en este cap tulo.
Hay que poner espacios entre variables que deben ser multiplicadas, y no debe
haber espacios en los nombres de las rdenes, ni en smbolos de ms de una letra ni
en los nombres de las funciones. En los dems casos, los espacios no se tienen en
cuenta. Se pueden poner algunos para hacer ms legibles su input.
Ya se ha dicho que los nombres de todas las funciones, variables, opciones y
constantes incorporadas en Mathematica empiezan con letras maysculas, por
ejemplo, Integrate, Plot. Si un nombre consiste de dos o ms palabras, la primera letra
de cada palabra va en maysculas, por ejemplo, ContourPlot, InterpolatingPolymial y
MapAt.
La mayora de objetos incorporados en Mathematica son palabras completas. A
diferencia de Unix, MS-DOS y otros sistemas, Mathematica raramente utiliza
abreviaturas. Slo se usan abreviaturas cuando son muy conocidas (Abs, Cos, D, Det,
GCD, etc.).
Usar Mathematica es como mantener una conversacin. Haga una pregunta y
Mathematica responder con un resultado. Mathematica asigna un nmero secuencial
para cada par input/output.
El ensimo input del usuario lleva el rtulo In[n] y el correspondiente output del
ordenador lleva Out[n]. Es posible referirse a inputs y outputs anteriores gracias a
estos rtulos.
El smbolo % se usa para referirse al resultado inmediatamente
anterior.
El smbolo % % se usa para referirse al resultado 2 veces anterior.
El smbolo % % ...% (k veces) se usa para referirse al resultado k

18

veces anterior.
El smbolo % n se usa para referirse al output nmero n ( Out[n] ).
Veamos algunos ejemplos al respecto.
10
En primer lugar, se propone a Mathematica que calcule 5.
In[1] = 5^10
Out[1]=9765625
El nmero asignado a una salida se puede usar luego para referenciar
cualquier resultado anterior. Podemos comprobar el resultado anterior tomando la raz
de orden 10 del resultado Out[1], que se puede abreviar con %1.
In[2] = % 1^(1/10)
Out[2]=5
Lo ms frecuente ser que el usuario quiera referirse a su ms reciente
resultado. El carcter % se refiere al resultado ms reciente. En el siguiente
ejemplo,% queda reemplazado por el ltimo resultado calculado, o sea, 5.
In[3] = % +a
Out[3]=5+a
Se puede referir a un resultado anterior mediante uno o ms signos de
porcentaje; o sea, % se refiere al ltimo resultado,, %% al penltimo, %%% al
antepenltimo, y as sucesivamente. Tambin es posible referirse a un resultado
anterior en concreto mediante %n, donde n es el nmero de la lnea de output.
Otros ejemplos se presentan a continuacin
In[4] = 77 ^ 2
Out[4]= 5929
In[5] = % + 1
Out[5]= 5930
In[6] = 3 % + % ^ 2 + % %
Out[6]= 35188619
In[7] = % 2 + % 3
Out[7]= 35194549
Nota Cuando se vuelva a arrancar Mathematica, ya no podr referirse a los
resultados obtenidos en la sesin anterior.

19

Se pueden asociar unidades a los valores. Asegrese de dejar un espacio entre


el valor y el smbolo de las unidades. Mathematica evala combinando los trminos
cuando sea posible.
In[8] = 2 m + 3 m
Out[8]=5 m

20

1.5 AYUDAS CON COMANDOS


Es posible obtener ayuda utilizando los mens desplegables de Mathematica.
Pero adems, la ayuda tambin puede obtenerse a travs de comandos
(instrucciones o funciones), implementados como objetos de Mathematica.
Se puede utilizar la ayuda de acceso inmediato para acceder a diversa
informacin, incluso los nombres de las rdenes. El operador ? permite acceder a
informacin sobre un determinado objeto (comando, funcin, etc.). El signo de
interrogacin debe situarse en primer lugar en la lnea. El smbolo * combinado con el
operador ? acta de comodn, es decir, puede encajar con cualquier carcter
alfanumrico o secuencia de ellos. Si ms de una orden encaja con la peticin,
Mathematica lista los nombres de todas ellas. El operador ?? ampla la informacin
sobre un objeto.
Dado ?Factor* como input, Mathematica lista las rdenes que empiezan con la
palabra Factor.
In[1] = ?Factor*
Factor
FactorInteger FactorSquareFreeList
FactorComplete
FactorList
FactorTerms Factorial
FactorSquareFree Factorial2
FactorTermsList
Si nicamente una orden se ajusta a la peticin (no contiene el smbolo *),
Mathematica muestra la instruccin de uso asociada con la orden. Esta instruccin
consiste, tpicamente, de una plantilla que muestra cmo invocar la orden, es decir,
qu es lo que espera la orden como argumento. He aqu lo que obtengo si pido
informacin sobre la orden FactorInteger.
In[2] = ?FactorInteger
FactorInteger[n] gives a list of the prime factors of the integer n, together with their
exponents.
(FactorInteger[n] da una lista de los factores primos del entero n, junto a sus
exponentes)
Esta frase indica que, esta funcin espera un argumento de valor entero. Por
ejemplo, con FactorInteger, puedo encontrar los factores primos de 75.
In[3] = FactorInteger[75]
Out[3]={{3, 1}, {5, 2}}
Este resultado indica que 75 es igual a 3^1*5^2.
Luego, podemos, gracias a esta ayuda, obtener informacin sobre una
determinada funcin sin ms que escribir el signo de cierre de interrogacin y
seguidamente su nombre.

21

El carcter comodn (*) es particularmente til para hojear entre las rdenes
incorporadas. Por ejemplo, para saber los nombres de algunas de las rdenes
grficas, se puede pedir los nombres de las rdenes que contengan las palabras
Graphic o Plot.
In[4] = ?*Graphics*
ContourGraphics
Graphics
Graphics3D
DensityGraphics
GraphicsArray
SurfaceGraphics
FullGraphics
GraphicsSpacing
In[5] = ?*Plot*
ContourPlot ParametricPlot3D
PlotPoints
DensityPlot Plot
PlotRange
PlotColor
ListContourPlot
PlotRegion
PlotDivision ListDensityPlot
PlotDivision
ListPlot
PLotJoined
Plot3D
ListPlot3D
PlotLabel
Plot3Matrix
PlotStyle
ParametricPlot
Luego, para obtener informacin de aquellas funciones cuyo nombre contenga
a una determinada secuencia, se debe escribir la misma entre dos smbolos "*"
(comodn), y pedir informacin con el smbolo ?. Utilizaremos la doble interrogacin
"??" para obtener informacin adicional sobre una funcin, variable, opcin u otro
objeto.
In[6] = ??Plot
Plot[f, {x, xmin, xmax}] generates a plot of f as a function of x from xmin to salt
Se obtendrn los valores por defecto de las opciones de Plot. Estas opciones
especifican el mnimo nmero de puntos que muestra Mathematica para determinar la
forma de un grfico, la posicin de los ejes, el tamao del grfico, entre otras cosas.
Veamos algunos ejemplos ms.
In[7] = ?Graphics*
Graphics GraphicsSpacing Graphics3DGraphicsArray
Devuelve los tres comandos que empiezan por Graphics.
In[8] = ?GraphicsArray
GraphicsArray[g1,g2,...] represents a row of graphic objects.
GraphicsArray[g11,g12,...,...] represents a two - dimensional array o graphic objects.
Devuelve tanto la estructura de la funcin como una breve explicacin de su
cometido.
In[9] = ??GraphicsArray
GraphicsArray[{g1,g2,...}]represents a row graphic objects.

22

GraphicsArray[{{g11,g12,...},...}]represents a two-dimensional array of graphic objects.


Attributes[GraphicsArray] = {Protected}
{AspectRatio -> Automatic, Axes -> False,
AxesLable -> None, AxesOrigin -> Automatic,
AxesStyle -> Automatic, Background -> Automatic,
ColorOutput -> Automatic, DefaultColor -> Automatic,
Epilog -> {}, Frame -> False, FrameLAbel -> none,
FrameStyle -> Automatic, FrameTicks -> None,
GraphicsSpacing -> 0.1, GriLines -> None,
PlotLabel -> None, PlotRange -> Automatic,
PlotRegion -> Automatic, Prolog -> {},
RotateLabel -> True, Ticks -> None,
DefaultFont :> $DefaultFont,
DisplayFunction :> $DisplayFunction}
Devuelve, adems de la estructura de la funcin y su explicaciin, las opciones
de la funcin y sus valores por defecto.
Como ya hemos visto, en Mathematica los nombres de las funciones y objetos
que vienen definidas en el programa, comienzan con letra mayscula. Pero el usuario
puede definir sus propios objetos, que normalmente deben de comenzar con letra
minscula para no crear conflictos con los ya definidos en el programa.
Para saber en un momento determinado los objetos que empiezan con letra
minscula se usa la funcin ?@.
Analizaremos, por ltimo, dos nuevos comandos de ayuda. El comando
"Options" permite obtener todas las opciones de un determinado objeto y el comando
"Information" permite obtener adems informacin adicional sobre dichas opciones,
como se ve en los ejemplos siguientes.
In[10] = Options[Plot]
Out[10] = {AspectRatio > GoldenRatio^(1), Axes > Automatic,
AxesLabel > None, AxesOrigin > Automatic, AxesStyle > Automatic,
Background > Automatic, ColorOutput > Automatic, Compiled > True,
DefaultColor > Automatic, Epilog > {}, Frame > False,
FrameLabel > None, FrameStyle > Automatic, FrameTicks > Automatic,
GridLines > None, MaxBend > 10., PlotDivision > 20., PlotLabel > None,
PlotPoints > 25, PlotRange > Automatic, PlotRegion > Automatic,
PlotStyle > Automatic, Prolog > {}, RotateLabel > True,
Ticks > Automatic, DefaultFont :> $DefaultFont,
DisplayFunction :> $DisplayFunction}
In[11] = Information[Plot]
Out[11] = {"ContourPlot[f, {x, xmin, xmax}, {y, ymin, ymax}] generates a\ contour plot of f
as a function of x and y.", "DensityPlot[f, {x, xmin,\

23

xmax}, {y, ymin, ymax}] makes a density plot of f as a function of x and\


y.", "ListContourPlot[array] generates a contour plot from an array of\
height values.", "ListDensityPlot[array] generates a density plot from an\
array of height values.", "ListPlot[{y1, y2, ...}] plots a list of\
values. The x coordinates for each point are taken to be 1, 2, ....\
ListPlot[{{x1, y1}, {x2, y2}, ...}] plots a list of values with specified\
x and y coordinates.", "ParametricPlot[{fx, fy}, {t, tmin, tmax}]\
produces a parametric plot with x and y coordinates fx and fy generated\
as a function of t. ParametricPlot[{{fx, fy}, {gx, gy}, ...}, {t, tmin,\
tmax}] plots several parametric curves.", "Plot[f, {x, xmin, xmax}]\
generates a plot of f as a function of x from xmin to xmax. Plot[{f1, f2,\
...}, {x, xmin, xmax}] plots several functions fi."}
Veamos un resumen de las distintas formas de pedir ayuda mediante comandos,
en el que se presenta cada comando y la descripcin de sus funciones.

Comando
Descripcin
--------------------------------------------------------------------------------------------?var

Mostrar informacin sobre var

??var

Mostrar ms informacin sobre var

?xyz*

Listar los objetos cuyo nombre empieza con


xyz

?*xyz*
?@

Listar los objetos cuyo nombre contiene xyz


Listar los objetos cuyo nombre empieza con
no mayscula

Options

Lista las opciones de un objeto

Information

Ofrece informacin adicional sobre las


opciones de un objeto.

24

1.6 NOTACIN MATEMTICA


Mathematica utiliza los smbolos convencionales usados en el clculo
matemtico. Normalmente, Mathematica utiliza palabras inglesas, pero permite
referirse a las funciones matemticas estndar mediante smbolos en lugar de
palabras, es decir, smbolos como +,-,*,/,>,o> en lugar de las palabras Plus, Minus,
Times, Divide, Less, o Greater.
Smbolo matemtico
Funcin
------------------------------------------------------------------------+
Plus(ms)
-

Minus,Subtract (menos)

Times (veces)

Divide(dividir)

Power (potencia)
Factorial

<

Less (menor)

<=

LessEqual (menor igual)

>

Greater (mayor)

>=

GreaterEqual (mayor igual)

Tambin Mathematica ofrece smbolos para denotar las operaciones lgicas,


relacionales, condicionales y de estructura.
Smbolo matemtico
Funcin
--------------------------------------------------------------------------------------------x == y

Igualdad

x=y

Desigualdad

Not (No)

p && q && ....


p

....

Xor[p, q, ..]

And (Y)
Or (O)
Or exclusive (O exclusivo)

25

LogicalExpand[expr]
If[p, then, else]

W hile[cond, expr]

Expande expresiones lgicas


Se ejecuta then si p es verdadero y se
ejecuta else si p es falso
Se evala expr mientras la condicin
cond es cierta

W hich[cond1,expr1,...,condn,exprn]
Evala consecutivamente las
condiciones cond1,...,condn hasta
que encuentra una que es verdadera y
devuelve el valor de la expresin
asociada
Do[expr, {n}]

Evala n veces la expresin expr

Do[expr, [i, imin, imax, di}] Evala repetidas veces la expresin


para valores de i variando desde imin
hasta imax con incrementos
sucesivos de valor di.
For[expr1, condicin, incremento, expr2]
Evala expr1 y sigue evaluando
consecutivamente expr2 e
incremento hasta que la condicin
sea cierta.
De la misma forma como se puede pedir informacin sobre una funcin, se
puede pedir a Mathematica informacin sobre un smbolo matemtico u otras formas
especiales.
In[1] = ?<
x < y yields True if x is determined to be less than y. x1 < x2 < x3 yields True if the xi
form a strictly increasing sequence.
(x < y da True, verdadero, si se determina que x es menor que y. x1 < x2 < x3 da True si
las xi forman una secuencia estrictamente creciente).
Los smbolos matemticos y otras formas especiales son alias de funciones
includas en Mathematica.
La funcin Alias devuelve la funcin que corresponde a una forma especial.
In[2] = Alias["<"]
Out[2] = Less

26

In[3] = Alias["="]
Out[3] = Set
Otros smbolos usados en Mathematica son los corchetes (brackets),
parntesis (parentheses) y llaves (braces) se utilizan con propsitos diferentes. Cada
uno de ellos tiene significado distinto.
Los parntesis (patentheses) se utilizan para agrupar. Sin parntesis, los
productos y las divisiones tienen prioridad sobre las sumas y diferencias.
In[4] = 1 + 2 * 3
Out[4]= 7
In[5] = 1 / 2 - 5
Out[5]= -(9/2)
Ntese que, con el uso de parntesis, se cambia la agrupacin de los
argumentos.
In[6] = (1 + 2) * 3
Out[6]= 9
In[7] = 1 / (2 - 5)
Out[7]= -(1/3)
Los corchetes (brackets) se utilizan para especificar argumentos de
funciones. Por ejemplo, la funcin Divisors requiere un nico argumento, un entero,
como puede ver en su mensaje de ayuda inmediata.
In[8] = ?Divisors
Divisors[n] gives a list of the integers that divide n.
(Divisors[n] da una lista de los enteros que dividen a n.)
Cuando invocamos Divisors con un nmero, Mathematica devuelve una lista de
enteros que dividen al nmero.
In[9] = Divisors[100]
Out[9] = {1, 2, 4, 5, 10, 20, 25, 50, 100}
El resultado indica que los enteros 1, 2, 4, 5, 10, 20, 25, 50 y 100 dividen a 100.
Algunas funciones, como Random, no requieren argumentos. Aunque no haya
ningn argumento en la funcin, hay que usar los corchetes. Si no se especifica
ningn argumento, Random devuelve un nmero real entre 0 y 1.
In[10] = ?Random
Random[ ] gives a uniformly distributed pseudrandom Real in the range 0 to 1.

27

Random[type, range] gives a pseudorandom number of the specified type, lying in the
specified range. Possible types are: Integer, Real and Complex. The default range is 0
to 1. You can give the range {min, max} explicitly; a range specification of max is
equivalent to {0, max}.
(Random[ ] da un real pseudo-aleatorio uniformemente distribuido entre 0 y 1.
Random[tipo, rango] da un nmero pseudo-aleatorio del tipo especificado, dentro del
rango especificado. Los tipos posibles son: Integer (entero), Real y Complex
(Complejo). El rango por omisin es de 0 a 1. Se puede dar el rango {min, max}
explcitamente; una especificacin de rango max es equivalente a {0, max}.)
In[11] = Random[ ]
Out[11] = 0.738551
Ntese que Random puede invocarse con un nico argumento (un tipo) o con
dos argumentos (un tipo y un rango, que es un par indicando un valor mnimo y un valor
mximo).
In[12] = Random[Integer]
Out[12] = 0
In[13] = Random[Integer, {50, 60}]
Out[13] = 52
Algunas funciones requieren una cantidad fija de argumentos, mientras que
otras pueden ser invocadas con ninguno, uno o ms argumentos.
Las llaves (braces) se utilizan para especificar listas, vectores y matrices. Una
lista o vector consiste en varias expresiones separadas por comas y encerradas entre
llaves.
In[14] = {x, x^2, x^3}
2 3
Out[14]= {x, x , x }
En Mathematica, una matriz se representa como una lista de listas. Con
Mathematica, puede construir una matriz de dimensiones cualesquiera. Debajo puede
ver una matriz 2 por 2, cuyos elementos son a[i, j], donde i especifica la fila de la matriz
y j la columna.
In[15] = {{a[1,1], a[1,2]}, {a[2,1], a[2,2]}}
Out[15]= {{a[1, 1], a[1, 2]}, {a[2, 1], a[2, 2]}}
La funcin MatrixForm presenta la matriz en una forma ms convencional.
In[16] = MatrixForm[{{a[1,1], a[1,2]}, {a[2,1], a[2,2]}}]

28

Out[16]=

a[1, 1] a[1, 2]
a[2, 1] a[2, 2]

Puesto que Mathematica hace un uso extensivo de las listas, tanto en trminos
de input como output, ampliaremos el tema en el siguiente captulo.
Los dobles corchetes se usan para indexar, es decir, para denotar un objeto o
conjunto de objetos dentro de una lista. Supongamos que tenemos un vector v como el
siguiente.
In[17] = v = {a, b, c}
Out[17]= {a, b, c}
La notacin v[[i]] devuelve el i-simo elemento del vector o lista llamado v
siempre que i sea entero adecuado. Hay que tener en cuenta que, en Mathematica, la
numeracin empieza desde 1, al contrario que en el lenguaje C en el que empieza
desde 0.
In[18] = v[[2]]
Out[18] = b
Como se ha visto anteriormente, en Mathematica una matriz se representa
como una lista de listas. Asignaremos el nombre m a una matriz 2 por 3.
In[19] = m = {{1, 2, 3}, {4, 5, 6}}
Out[19] = {{1, 2, 3}, {4, 5, 6}}
In[20] = MatrixForm[m]
Out[20]=
123
456
Ntese que puedo obtener la fila i-sima de la matriz m mediante m[[i]], si i es
un entero adecuado.
In[21] = m[[2]]
Out[21]= {4, 5, 6}
La notacin m[[i,j ] devuelve el j-simo elemento de la fila i-sima.
In[22] = m[[2, 1]]
Out[22] = 4
Mediante los dobles corchetes se puede seleccionar elementos especficos de
una lista.

29

1.7 PACKAGES
Mathematica es una aplicacin escrita en lenguaje C. Sin embargo, posee un
lenguaje con el que poder crear a su vez nuevos programas. Un fichero que contenga
definiciones escritas en el propio lenguaje de Mathematica se denomina paquete
(package). Para utilizar las definiciones contenidas en l es necesario previamente
cargarlo. Existen varias formas de cargar un paquete. Una de ellas es:
<<Contexto NombreDelPaquete
donde Contexto es el nombre de los directorios o carpetas que contengan al paquete.
Por ejemplo:
In[1] = <<Algebra'SymbolicSum'
Al ejecutar este input, se cargan en memoria de forma permanente todos los
programas adicionales que van a permitir realizar las funciones matemticas
espec ficas asociadas con las sumas simblicas del paquete lgebra.
Otra forma de cargar un paquete (package) es mediante la instruccin Needs.
La ventaja de esta ltima opcin es que si el paquete ya est cargado no se volver a
cargar, ahorrndose as memoria. En este caso deber teclear la orden
Needs["Contexto NombreDelPaquete ]
Por ejemplo:
In[2] = Needs["Algebra'SymbolicSum"]
Conviene dar una recomendacin para evitar problemas con los paquetes.
Deben cargarse los paquetes al comienzo de la sesin, ya que, en ocasiones, pueden
existir conflictos entre las funciones definidas por el usuario a lo largo de la misma y
las que define el paquete al ser cargado en memoria.
Como ya hemos visto, para poder distinguir los smbolos que defina de los que
son propios de Mathematica, es preferible asignarles nombres que empiecen con
minscula. La mayora de las funciones de Mathematica estn escritas en C. Sin
embargo, algunas funciones, como Integrate o Laplace estn escritas en el mismo
Mathematica. Las funciones escritas en Mathematica son las que se almacenan en
paquetes. Cerca de 130 paquetes se distribuyen con la versin 2.2. Cubren reas
como lgebra, clculo, matemtica discreta, geometra, grficos, lgebra lineal, teora
de nmeros, clculo numrico o estadstica.
Pero adems de los paquetes propios distribuidos con Mathematica, el usuario
puede programar y guardar sus propios paquetes.
Un paquete es un archivo que contiene definiciones de Mathematica
(programas). Los paquetes posibilitan:

30

Crear una funcin o coleccin de funciones para uso posterior.


Tapar su implementacin al usuario posterior.
Guardar una funcin o coleccin de funciones que est
desarrollando para seguir despus.
Cargar funciones sin tener que volverla a teclear cuando sea
necesario usarlas.
Guardando definiciones de Mathematica (programas) en un archivo, se puede
crear un paquete. Luego se puede cargar el paquete cuando sea necesario para
utilizar las funciones del mismo. Veamos un ejemplo en el que se definen las funciones
quadratic y cubic y posteriormente se guardan en un paquete de nombre nuevo.m, para
ser recuperadas y utilizadas despus.
In[3] = quadratic[{a , b , c }, x ] = a x^2 + b x + c
In[4] = quadratic[{22, 35, -12}, s]
Out[4]:= -12 + 35 s + 22 s^2
In[5] = cubic[{a , b , c , d }, x ] = a x^3 + b x^2 + c x + d
In[6] = cubic[{22, 35, -12, 1}, s]
Out[6]:= 1 - 12 s + 35 s^2 + 22 s^3
In[7] = Save["Nuevo.m", quadratic, cubic]
Posteriormente, cuando se quieran utilizar estas funciones, no ser necesario
volverlas a escribir. Bastar con cargar el paquete que las contiene (que ha sido
guardado en el paso anterior).
In[8] = <<nuevo.m
Al expresar la forma de cargar un paquete se ha utilizado la palabra contexto.
Los contextos protegen contra la colisin entre smbolos. Un contexto es como
un directorio en Unix o en MS-DOS. Puede haber archivos llamados con el mismo
nombre en diversos directorios distintos. El archivo al que se acceda depende de
donde se est (contexto actual) y del orden en que se busca en los directorios, lo que
se especifica en $Path (camino). Como los directorios, los contextos pueden estar
anidados. De manera similar, la funcin a la que se accede depende del contexto actual
y del orden en que se busca en los contextos.
La variable global $Context devuelve el contexto actual (current context) La
funcin Context sin argumentos tambin devuelve el contexto actual.
In[9] = $Context
Out[9]= Global`

31

In[10] = Context[ ]
Out[10] = Global`
El contexto Global es como el directorio inicial (home directory) de Unix o el
directorio raz de MS-DOS. Por defecto, el contexto actual es siempre Global . Si
definimos cualquier smbolo (variable, funcin,...), sin hacer referencia a ningn
contexto, se almacena en el contexto actual por defecto Global y siempre se puede
acceder a l por defecto.

32

1.8 FICHEROS Y OPERACIONES EXTERNAS


Ya sabemos que Mathematica puede utilizarse como un camino para la
generacin de documentos interactivos denominados "Notebooks". Estos documentos
pueden salvarse en ficheros y despus recuperarse para su ampliacin, modificacin,
impresin o ejecucin, tal y como hemos visto en el captulo anterior (utilizando
mens).
De esta forma, podemos considerar a Mathematica como una plataforma de
software.
Pero estas operaciones de salvado y recuperacin de ficheros pueden hacerse
tambin a travs de comandos.
El comando <<archivo, lee el fichero de Mathematica de nombre
archivo.
El comando expr >>archivo, manda la salida de la orden expr al
fichero de nombre archivo.
El comando expr >>>archivo, manda la salida de la orden expr al
fichero de nombre archivo, aadindola a continuacin del
contenido previo del fichero.
El comando archivo, muestra en pantalla el contenido del fichero
de nombre archivo.
El comando Save["name", f, g, ...], salva las definiciones para las
funciones o variables f, g,.. en el fichero de nombre name.
El comando Save["name", In ,Out], salva al fichero externo de
nombre name, el input y el output de una sesin.
El comando <<" command" , ejecuta un comando externo y
muestra la salida que produce. Con este comando vemos que se pueden
ejecutar desde Mathematica programas y comandos externos.
El comando Print[expr1, expr2,...], imprime en pantalla las
expresiones expr1, expr2,..., sin espacios entre ellas y sobre la misma lnea.
Se cambia de lnea cuando aparezca otro comando Print.
Veamos algunos ejemplos:
In[1] = Expand[(x+y)^3] >> tmp
El valor de la expresin desarrollada de (x+y)^3 se almacena en el fichero de
nombre tmp.

33

In[2] = tmp
Out[2]= x^3 + 3*x^2*y + 3*x*y^2 + y^3
El contenido que se haba guardado anteriormente en el fichero de nombre tmp,
es rescatado a pantalla.
In[3] = f[x ] = x^2 + c
In[4] = Save["ftmp", f]
In[5] = ftmp
f[x_]:= x^2 + c
Se ha definido la funcin f, posteriormente se ha guardado a un fichero y a
continuacin se ha recuperado a pantalla.
Existen una serie de comandos que dan una idea del entorno en que estamos
trabajando y que nos permiten operaciones de lectura y escritura en dicho entorno.
El comando Directory[ ], devuelve el directorio corriente de trabajo.
El comando SetDirectory["dir"], convierte el directorio de nombre
dir en directorio corriente de trabajo.
El comando FileNames[ ], lista los ficheros del directorio corriente
de trabajo.
El comando CopyFile["file1", "file2"], copia el fichero de nombre
file1 al fichero de nombre file2.
El comando DeleteFile["file"], borra el fichero de nombre file.
El comando FindList["file", "text"], da una lista de todas las lneas
en el fichero de nombre file que contienen el texto especificado como
text.
El comando FindList[FileNames[ ], "text"], busca el texto
especificado como text en todos los ficheros del directorio corriente.
El comando Readlist["file", Number], devuelve una lista de todos
los nmeros del fichero de nombre file.
El comando Splice["archivo"], empalma output de Mathematica en
un archivo externo.

34

1.9 OTRAS CARACTERSTICAS DE EDICIN


Cuando los resultados son demasiado amplios para caber en la pantalla o en la
pgina, se considera la posibilidad de modificar el ancho de la pgina. Con las
rdenes siguientes, se puede modificar el ancho de pgina y el nmero mximo de
caracteres en una expresin simple.
PageW idth -> n, Permite situar un mximo de n caracteres por
lnea (por defecto su valor es 78).
TotalW idth -> n, Permite situar un mximo de n caracteres en una
expresin simple.
Por ejemplo, si queremos habilitar el output de Mathematica de forma que no
se siten en una misma lnea ms de 45 caracteres, escribiremos:
In[1] = SetOptions[$Output, PageW idth -> 45]
Las funciones Edit, EditIn y EditDefinition, estn pensadas para editar
expresiones, inputs y definiciones en su editor favorito. Al salir del editor, el contenido
del editor se toma como input para Mathematica.
Estas funciones de edicin no estn disponibles desde Windows, pero s desde
Unix y otras plataformas de trabajo con Mathematica.
En sistemas Unix, Mathematica llama al editor especificado en la variable de
entorno $EDITOR, que por defecto es el editor visual vi.
La orden Edit[expr], llama al editor sobre el resultado de expr.
Por ejemplo, Edit[Expand[(x + 2y)^2]] le lleva al editor con la expresin:
x^2 + 4 x y + 4 y^2
La orden EditIn[n] llama al editor sobre la lnea de input n n.
Por ejemplo, EditIn[100] llama al editor con la expresin especificada en In[100]
en el buffer.
La orden EditDefinition[funcin], llama al editor sobre la definicin
de funcin.
Al salir del editor, su contenido se tomar como input para
Mathematica.
En la edicin de programas se usan delimitadores de comentarios,
que Mathematica ignora a la hora de procesar. Se coloca un parntesis al

35

principio de la zona de comentarios y otro al final, y entre ellos el texto del


comentario (*comentario*).
Las operaciones que van seguidas de punto y coma se realizan,
pero su output no se presenta en pantalla. Aunque se haya suprimido el
output, % se refiere igualmente al resultado.
Veamos un ejemplo referente a la ltima caracterstica comentada:
In[2] = BesselJ[0, 5.7]
In[3] = %
Out[3] = 0.05992
Usando punto y coma, se pueden poner varias rdenes en una sola lnea. En
este caso, el output de las dos primeras rdenes se suprime ( y no puede ser
recuperado con %).
In[4] = x = 5 y = x + 37 y
Out[4]= 42
Cuando estamos editando un programa, puede ser muy importante saber el
tiempo de proceso de determinadas instrucciones utilizadas. La funcin Timing
muestra la cantidad de tiempo de CPU que ha consumido la evolucin de una funcin.
Saber la duracin de un clculo puede ser til para predecir el tiempo necesario para
realizar clculos similares. Aqu, calculo pi con 500 decimales. Puesto que pongo un
punto y coma despus de la orden, el output, o sea el desarrollo de pi, se suprime, y en
su lugar Mathematica devuelve el valor Null.
In[5] = Timing[N[Pi, 500] ]
Out[5] = {4.48333 Second, Null}
Nota El clculo del tiempo de los cmputos de Mathematica puede tener sus
trucos. Por ejemplo, si se pide un desarrollo decimal de pi con 400 cifras despus de
pedir el de 500 cifras, puede no tardar nada en hacerlo, ya que Mathematica guarda el
valor ms preciso de pi calculado durante la sesin.

36

1.10 TRADUCIENDO EXPRESIONES A LOS LENGUAJES C,


FORTRAN Y TEX
Otra de las caractersticas sorprendentes y valiosas de Mathematica es su
capacidad para transformar expresiones a otros lenguajes.
El comando Cform[expr], traduce la expresin expr a su sintaxis
correspondiente en lenguaje C.
El comando FortranForm[expr], traduce la expresin expr a su
sintaxis correspondiente en lenguaje C.
El comando TeXForm[expr], traduce la expresin expr a su sintaxis
correspondiente en lenguaje TeX.
Veamos algunos ejemplos:
In[1] = x^3/5
Out[1] =x^3 / 5
In[2] = CForm[% ]
Out[2] = Power(x,3)/5
In[3] = FortranForm[% ]
Out[3] = x**3/5
La TeXForm de la expresin, tiene ms llaves de las necesarias, pero funciona.
In[4] = TeXForm[% ]
Out[4]={{{x^3}} over 5}
Al pasar esto por TeX, se obtiene x^3/5.

37

1.11 MATHEMATICA Y LA PROGRAMACIN


Combinado adecuadamente todos los objetos definidos en Mathematica,
adecuados a las reglas de trabajo definidas en el programa, se puede construir cdigo
de programacin muy til en la investigacin matemtica.
Los programas consisten habitualmente en una serie de instrucciones en las
que se calculan valores, se les asigna un nombre y se reutilizan en clculos
posteriores.
Al igual que en lenguajes de programacin como C o Fortran, en Mathematica
se pueden escribir programas con bucles, control de flujo e instrucciones
condicionales.
En Mathematica se pueden escribir programas procedimentales, es decir,
definir una secuencia de pasos standard a ejecutar. Como en C o en Pascal, se puede
realizar un clculo repetitivo mediante Do, For o While. El lenguaje de Mathematica
tambin incluye construcciones como If, Which y Swiych.
Mathematica tambin soporta diversas funciones lgicas, como And, Or, Not y
Xor.
Mathematica soporta la programacin procedimental (con precesos iterativos,
recursivos, bucles..), la programacin funcional (funciones puras, ..) y la
programacin orientada al objeto.
Veamos dos ejemplos sencillos de programas. El primero calcula el signo de
un nmero y, el segundo calcula la mediana de un conjunto de nmeros.
In[1] = sign[x ] =
W hich[
x < 0., -1,
x == 0., 0,
x > 0, 1
]
In[2] = sign[3]
Out[2] =1
In[3] = mediana[lista List] =
Block[{
lo,
long
},
long =Length[lista]
lo = Sort[lista]
If[
OddQ[long],
lo[[ (long + 1)/2]],

38

(lo[[long/2]] + lo[[long/2+1]]/2
]
]
In[4] = mediana[{76, 56, 23, 78, 34}]
Out[4] = 56

39

1.12 MATHEMATICA Y LAS COMUNICACIONES


En la mayora de los computadores mathematica soporta el estndar de
comunicaciones MathLink, el cual permite la comunicacin entre Mathematica y otros
programas externos.
Usando MathLink, se puede por ejemplo, tratar a Mathematica como una
subrutina embebida en el interior de un programa externo. Tambin se puede crear un
entorno de trabajo propio que implemente nuestro propio interface de usuario y que
comunique con el kernel de Mathematica va Mathlink.
MathLink es en general un mecanismo para comunicaciones entre Mathematica
y otros programas, que puede usarse de muy diferentes formas:
Llamadas a funciones de Mathematica desde el interior de un
programa externo.
Llamadas a un programa externo desde el interior de Mathematica.
Implementacin de nuestro propio entorno de trabajo para usar
Mathematica desde l.
Intercambio de datos entre Mathematica y programas externos.
Intercambio de datos entre procesos concurrentes de Mathematica.
En MathLink existen rutinas standard que pueden ser usadas dentro de
programas externos para construccin y decodificacin de expresiones de
Mathematica. Existen en MathLink, por ejemplo, rutinas para conversin entre las listas
de Mathematica y los vectores (arrays) de programas externos.
MathLink puede ser usado para comunicaciones entre programas que se
ejecutan en diferentes ordenadores, va red o por comunicacin en serie.
Veamos algunos comandos de MathLink:
LinkOpen[command] Abre la conexin de Mathlink a un programa
externo.
LinkClose[link] Cierra la conexin de Mathlink.
LinkInterrupt[link] Enva una interrupcin a un programa externo
va MathLink.
LinkW rite[link, expr] Escribe una expresin va Mathlink.
LinkRead[Link] Lee una expresin va MathLink.

40

Nota: Existe una publicacin de Wolfram Research "The MathLink


Communication Standard", que aporta toda la documentacin tcnica para el estndar
de comunicaciones en Mathematica.

41

2.1 VARIABLES
El concepto de variable, lo mismo que el concepto de funcin, es fundamental a
la hora de trabajar con un software matemtico. Evidentemente, el concepto terico de
variable matemtica es fijo e independiente del paquete de software. Pero la forma de
implementar y manejar las variables es muy caracterstico de cada programa en
particular. Mathematica permite definir y manejar las variables de modo muy simple. La
distincin ms fuerte es quiz la diferenciacin entre variables locales y globales.

43

2.2 VARIABLES GLOBALES


Cuando se realizan clculos extensos es conveniente dar nombres a resultados
intermedios. Estos resultados intermedios, se asignan a variables para hacer ms fcil
su uso. Por ejemplo, podemos definir la variable x y asignarle el valor 5 de la siguiente
forma:
In[1] = x = 5
Out[1] = 5
A partir de este momento, siempre que aparezca la variable x, ser sustituida
por el valor 5.
Otra forma (equivalente a la anterior) de asignar a la variable x el valor 5 es:
In[2] = Set[x,5]
Out[2] = 5
En general, el comando Set[var,value], asigna a la variable var el valor
value.
In[3] = x^2
Out[3] = 25
La variable x no cambia de valor hasta que no le asignemos expresamente otro
cualquiera.
In[4] = x = 7 + 4
Out[4] = 11
A partir de este momento la variable x pasa a tomar el valor 11.
Es muy importante remarcar que el valor asignado a una variable, es
permanente hasta que no se cambie expresamente, o hasta que no se salga de la
presente sesin de Mathematica. Es tpico olvidar las definiciones dadas a las
variables durante una sesin de Mathematica, lo que provoca errores despistantes en
posteriores usos de las variables. Por esta razn es muy conveniente eliminar la
asignacin de valor a una variable cuando ya no se prevea usarla. Esta operacin se
realiza mediante el comando Clear.
La expresin x = value, asigna el valor "value" a la variable x.
La expresin x = y = value, asigna el valor "value" a las variables x e y a la
vez.
La expresin {x, y} = {value1, value2}, asigna diferentes valores a x e y a la
vez.
La expresin {x, y} = {y, x}, intercambia los valores de x e y

44

El comando Clear[x] (o x=.), elimina el valor asignado a x

En cuanto a los nombres a dar a las variables, la nica restriccin es


que no pueden empezar por un nmero. Tambin es conveniente nombrar las variables
con palabras que empiecen por letra minscula, y en general con palabras
completamente en minsculas. Con ello se evitan colisiones con objetos propios de
Mathematica, que comienzan todos con letra mayscula. No olvidemos que
Mathematica distingue las letras maysculas de las minsculas. El nmero de
caracteres del nombre de una variable puede ser cualquiera.
Veamos algunos ejemplos ms de definiciones de variables.

In[4] = x = y = 2
Out[4] = 2
In[5] = x
Out[5]= 2
In[6] = y
Out[6] = 2
Aqu hemos visto un ejemplo en el que damos el mismo valor a dos variables
diferentes simultneamente.
In[7] = {x, y} = {5, 8}
Out[7] = {5, 8}
In[8] = {x, y} = {y, x}
Out[8] = {8, 5}
In[9] = x
Out[9] = 8
In[10] = y
Out[10] = 5
Aqu hemos visto un ejemplo en el que damos simultneamente dos valores
distintos a las variables x e y. A continuacin hemos intercambiado los valores de x e y, y
hemos comprobado que efectivamente se han cambiado.

45

2.3 FUNCIONES
El concepto de funcin, lo mismo que el concepto de variable, es fundamental a
la hora de trabajar con un software matemtico. Evidentemente, el concepto terico de
funcin matemtica es fijo e independiente del paquete de software. Pero la forma de
implementar y manejar las funciones es muy caracterstica de cada programa en
particular. Mathematica permite definir y manejar las funciones de modo muy simple.

46

2.4 DEFINICION DE FUNCIONES


Mathematica incorpora mltiples funciones para usar en el trabajo cotidiano
con el programa. Pero adems el programa ofrece la posibilidad de definir funciones a
medida. Veamos cmo definir la funcin f(x)=x^2.
In[1] = f[x ] = x^2
Ahora calculamos los valores f(a+1), f(4) y f(3x+x^2).
In[2] = f[a+1]
2
Out[2]=(1+a)
In[3] = f[4]
Out[3]= 16
In[4] = f[3x+x^2]
22
Out[4]:= (3 x + x )
Por lo tanto, vemos como la expresin "f[x ] =" define la funcin f
para la nica variable x
De la misma forma se definira una funcin de dos variables
La expresin "g[x ,y ] =" define la funcin g para las variables x e y
como argumentos.
In[5] = g[x ,y ] = Sin[x]+Cos[y]
La forma general de definicin de una funcin es
f[variable1 , variable2 , ......] = cuerpo
Para saber cmo est definida una funcin f determinada, se usa la expresin ?
f.
In[11] = ?f
Global`f
f[x_]:= x^2
Para borrar todas las definiciones de la funcin f se usa la
"Clear[f]".

47

expresin

Todas las funciones predefinidas en Mathematica comienzan con letra


mayscula y hay que asegurarse de su correcta escritura antes de utilizarlas. Adems
el usuario debe definir el nombre de sus propias funciones empezando por letra
minscula.
Existe otra forma de definir funciones, como se ve en el siguiente ejemplo:
In[12] = h[x ]=x^2+1
Out[12]= 1 + x^2
Hemos de observar que ahora hemos definido la funcin con
"h[x ]=", que difiere de la forma anterior "f[x ] =".
Se define una funcin de nombre h con un solo argumento y cuyo valor es el
cuadrado de ese argumento aumentado en una unidad. El signo "_" se utiliza para
indicar los argumentos de la funcin y despus de l puede indicarse el tipo de la
misma.
Una vez definida la funcin pueden calcularse diferentes valores para distintos
argumentos tanto numricos como simblicos.
In[13] = h[1]
Out[13]=2
In[14] = h[y]
2
Out[14]=1 + y

48

2.5 FUNCIONES RECURSIVAS


Otra de las tcnicas que pueden usarse para crear funciones, es la utilizacin
de definiciones recursivas. Aunque la funcin factorial ya se encuentra implementada
en Mathematica, se puede definir de la manera siguiente:
In[18] = fact[1]=1
In[19] = fact[n ] =n*fact[n-1]
Definicin recursiva de la funcin factorial.
In[20] = fact[40]
Out[20]=815915283247897734345611269596115894272000000000
Clculo del factorial de 40.
La funcin factorial slo tiene sentido para nmeros naturales; si se intenta
calcular, mediante la funcin anterior, el factorial de un nmero decimal se entrara en
un ciclo recursivo sin final.
In[20] = fact[6.5]
Out[20]=$RecursionLimit::reclim:
Recursion depth of 256 exceeded.
No puede calcularse el factorial del nmero 6.5 y Mathematica lo indica con un
mensaje de error.
Para evitar este problema, podra indicarse en la definicin de la funcin que su
argumento solamente puede tomar valores enteros; esto se hace indicando el tipo del
argumento a continuacin del signo "_", como se muestra a continuacin:
In[21] = fact2[1]=1
fact2[n Integer] =n*fact2[n 1]
Redefinicin de la funcin factorial, exigiendo que su argumento sea entero.
In[22] = fact2[6.5]
Out[22]=fact2[6.5]
Ahora no intenta calcular el factorial de 6 5 y devuelve la funcin sin evaluar.
En general, se pueden definir funciones recursivas, dependiendo de n valores
anteriores y conociendo n condiciones iniciales. Por ejemplo:
In[1] = f[x ] = f[x] = f[x - 1] + f[x -2]
In[2] = f[0] = f[1] = 1

49

Out[2] = 1
Si preguntamos ahora por la definicin de f tendremos:
In[3] = ?f
Global`f
f[0] = 1
f[1] = 1
f[x_] := f[x] = f[x -1] + f[x - 2]
Vamos a calcular ahora f(5).
In[3] = f[5]
Out[3] = 8
Si ahora preguntamos por la definicin de f, observamos que Mathematica nos
ofrece todos los valores intermedios hasta f(5), ya que el clculo de f(5) ha envuelto el
clculo f(2), f(3) y f(4).
In[4] = ?f
Global`f
f[0] = 1
f[1] = 1
f[2] = 2
f[3] = 3
f[4] = 5
f[5] = 8
f[x_] := f[x] = f[x - 1] + f[x - 2]

50

2.6 FUNCIONES CONDICIONALES


En la teora matemtica han jugado siempre un papel muy importante las
funciones definidas a trozos. Dichas funciones suelen estar definidas de formas
distinta para los distintos intervalos de variacin de la variable independiente.
Mathematica posibilita el trabajo correcto con este tipo de funciones, que
suelen definirse, en la mayora de los casos, apoyndose en los comandos
condicionales, como If, Which, etc.
La funcin condicional ms utilizada en la definicin de funciones es If. En
Mathematica esta funcin adopta la siguiente sintaxis:
If [condicin, expresin1, expresin2]
Cuando la condicin es cierta se evala expresin1, y cuando es
se evala expresin2.

falsa

Como ejemplo de aplicacin definimos la funcin:


In[12] = Delta[x ] = If [x==0, 1, 0]
Esta funcin vale 1 si x=0 y en cualquier otro caso vale 0.
Definimos a continuacin la siguiente funcin:
In[13] = f[x ] = If [x>0, 1, 0]
Esta funcin toma el valor 1 para todo x mayor que 0, y toma el valor 0 para todo
x menor o igual que 0.
Para representar esta funcin grficamente planteamos:
In[14] = Plot [f[x], {x, -1, 1}, Axes->{0, 0.5}]
Out[14]= ver figura 2.1

51

2.7 OPERACIONES FUNCIONALES


Normalmente, las funciones definidas en Mathematica operan sobre sus
argumentos. Sin embargo, tambin existen operadores funcionales que operan sobre
otras funciones, (los argumentos de los operadores funcionales son funciones), como
por ejemplo el operador funcin inversa.
Entre los operadores funcionales que habilita Mathematica podemos resaltar
los siguientes:
InverseFunction[f]
Define la inversa de la funcin f.
Composition[f,g,..]

Define la compuesta de f,g,...

Identity

Define la funcin identidad.

Identity[expr]

Aplica la funcin identidad a expr.

Nest[f,x,n]

Aplica la funcin f, sobre x, n veces.

NestList[f,x,n]

Genera la lista {x,f[x],f[f[x]]..n veces].

FixedPoint[f,x]

Aplica f repetidamente hasta que el


resultado no cambie aunque se siga
aplicando f (Hasta encontrar un punto
fijo para f).

FixedPointList[f,x]f,x]

Genera la lista {x,f[x],f[f[x]]...] hasta


encontrar un punto fijo par f.

Operate[p,f[x]]

Define p[f][x]

Operate[p,f[x],n]

Aplica el operador p en f n veces.

Through[p[f,g][x],q]

Distribute[f[a+b..]]
Distribute[f[arg],g]

Aplica p[f[x],g[x]] segn la operacin


denominada q.
Devuelve f[a,..]+f[b,..]+...
Distribuye f sobre todos sus
argumentos segn la definicin de la
funcin g.

Outer[f,l1,l2,..]

Genera el producto exterior.

Inner[f,l1,l2,g]

Genera el producto interior.

54

FoldList[f,x,{a,b,..}]

Crea la lista {x,f[x,a],f[f[x,a],b],..}.

Fold[f,x,{a,b,..}]
Sort[expr]

Da el ltimo elemento de FoldList.


Ordena los elementos de la expresin
expr en el orden estndar.

Flatten[expr]

Flatten[expr,n]

Aplana (recoge) lo ms posible la


expresin expr.
Aplana (recoge) hasta el nivel n la
expresin expr.

Thread[f{a,b},{c,d}]]

Da la lista {f[a,c], f[b,d]}.

Veamos algunos ejemplos:


In[1] = InverseFunction[ArcSin]
Out[1]= Sin
In[2] = % [x]
Out[2]= Sin[x]
In[3] = InverseFunction[f] [x]
Out[3]= f^(-1)[x]
In[1] = Composition[f, g, h]
Out[1]= Composition[f, g, h]
In[2] = InverseFunction[Composition[% , q]]
Out[2]= Composition[q^(-1), h^(-1), g^(-1), f^(-1)]
In[3] = % [x]
Out[3]= q^(-1)[h^(-1) [g^(-1) f^(-1)[x]]]]
In[4] = f[x ] = x^2+x
In[5] = g[x] = x^3+1
In[6] = Composition[f,g][x]
Out[6]:= 1+x^3+(1+x^3)^2
In[7] = Composition[g,f][x-1]
Out[7]= 1+(-1+(-1+x)^2+x)^3
In[8] = Composition[f,Sin][x]
Out[8]= Sin[x]+Sin[x]^2

55

In[9] = Clear[f,g]
In[1] =Nest[f, x, 4]
Out[1]= f[f[f[f[x]]]]
In[2] = NestList[f, x, 4]
Out[2]= {x, f[x], f[f[x]], f[f[f[x]]], f[f[f[f[x]]]]}
In[3] = recip[x ] = 1/(1 + x)
In[4] = Nest[recip, x, 3]

1
Out[4]=-----------------1
1 + -----------1
1 + ------1+ x
In[5] = newton3[x ] = N[ 1/2 (x + 3/x)]
In[6] = NestList[newton3, 1.0, 5]
Out[6]= {1., 2., 1.75, 1.73214, 1.73205, 1.73205}
In[7] = FixedPoint[newton3, 1.0]
Out[7]= 1.7305
In[8] = FixedPointList[newton3, 1.0]
Out[8]= {1., 2., 1.75, 1.73205, 1.73205, 1.73205}
In[10] = FoldList[f, x, {a, b, c}]
Out[10]= {x, f[x, a], f[f[x, a], b], f[f[f[x, a], b], c]}
In[11] = Fold[f, x, {a, b, c}]
Out[11]= f[f[f[x, a], b], c]
In[12] = FoldList[Plus, 0, {a, b, c}]
Out[12]= {0, a, a + b, a + b + c}
In[13] = nextdigit[ a , b ] = 10 a + b
In[14] = tonumber[digits ] = Fold[nextdigit, 0, digits]
In[15] = tonumber[{1, 3, 7, 2, 9, 1}]
Out[15]= 137291

56

In[16] = (f + g)[x]
Out[16]= (f + g)[x]
In[17] = Through[% , Plus]
Out[17]= f[x] + g[x]
In[18] = t = ((1 + a)(1 + b))[x]
Out[18] = ((1 + a) (1 + b))[x]
In[19] = Expand[% ]
Out[19] = ((1 + a) (1 + b))[x]
In[20] = Operate[p, t]
Out[20]= p[(1 + a) (1 + b)][x]
In[21] = Sort[ f[c, a, b] ]
Out[21]= f[a, b, c]
In[22] = Flatten[ f[a, f[b, c], f[f[d]]] ]
Out[22]= f[a, b, c, d]
In[23] = Flatten[ {a, f[b, c], f[a, b, d]}, 1, f ]
Out[23]= {a, b, c, a, b, d}
In[24] = Distribute[ f[a + b] ]
Out[24]= f[a] + f[b]
In[25] = Distribute[ f[a + b, c + d] ]
Out[25]= f[a, c] + f[a, d] + f[b, c] + f[b, d]
In[26] = Expand[ (a + b) (c + d) ]
Out[26] = a c + b c + a d + b d
In[27] = Distribute[ f[{a, b}, {c, d}], List ]
Out[27] = {f[a, c], f[a, d], f[b, c], f[b, d]}
In[28] = f[{a1, a2}, {b1, b2}]
Out[28]= f[{a1, a2}, {b1, b2}]
In[29] = Thread[% ]
Out[29]= {f[a1, b1], f[a2, b2]}
In[30] = Thread[ f[{a1, a2}, {b1, b2}, c, d] ]
Out[30]= {f[a1, b1, c, d], f[a2, b2, c, d]}
In[31] = Log[{a, b, c}]

57

3.1 FUNCIONES PARA LMIES


Mathematica ofrece funciones que permiten calcular prcticamente todo
tipo de lmites. Las mismas funciones se aplican para calcular lmites de sucesiones
que para calcular lmites de funciones. El anlisis para una y varias variables es
semejante.
En este captulo se presentarn mltiples ejemplos, que vienen a ilustrar la
capacidad de Mathematica para desenvolverse en este campo.
La sintaxis de las funciones que resuelven lmites se presenta a continuacin:
Limit[sucesin, n->Infinity]

NLimit[sucesin, n->Infinity]

Limit[funcin, x->a]

tiende
NLimit[funcin, x->a]

tiende

Calcula el lmite de la sucesin,


indicada por su trmino general,
cuando n tiende a infinito.
Calcula el lmite de la sucesin,
indicada por su trmino general,
cuando n tiende a infinito. Esta
funcin viene implementada en el
package NumericalMath, y se usa
cuando la funcin Limit no puede
resolver un determinado lmite.
Calcula el lmite de la funcin de
variable x, indicada por su expresin
analtica, cuando la variable x
hacia el valor a.
Calcula el lmite de la funcin de
variable x, indicada por su expresin
analtica, cuando la variable x
al valor a. Esta funcin viene
implementada en el package
NumericalMath, y se usa
cuando la funcin Limit no puede
resolver un determinado lmite.

Limit[funcin, x->a, Direction->1]

tiende

Calcula el lmite de la funcin de


variable x, indicada por su expresin
analtica, cuando la variable x
al valor a por la derecha.

Limit[funcin, x->a, Direction->-1]


Calcula el lmite de la funcin de
variable x, indicada por su expresin
analtica, cuando la variable x

64

tiende

al valor a por la derecha.

65

In[4] = Limit[(x-1)/(x^n-1),x->1]
1
n

78

>0 coinciden, y adems su valor es el valor de la funcin en x=0. Con ello se concluye
que la funcin es continua en todo el campo real.

84

0
Vemos que los lmites iterados y direccionales coinciden. Calculamos a
continuacin el lmite en coordenadas polares
In[5] = Limit[Limit[(r^2 Sin[a]^2) (r Cos[a]-1)^2/((r^2 Sin[a]^2) +
(r Cos[a]-1)^2),r->1],a->0]
0
El lmite vale cero en el punto (1,0).
El clculo de lmites n-dimensionales es esencial para tratar el tema de la
continuidad de funciones de varias variables. Como veremos a continuacin, el criterio
general sobre continuidad va a exigir el clculo del lmite de la funcin problema en el
punto considerado.

93

4.1 DERIVABILIDAD EN VARIAS VARIABLES


2
Dada la funcin f R ---> R, se define la derivada parcial de f con respecto a la
variable x en el punto (a,b) de la siguiente forma:
f
f(a+h,b) - f(a,b)
---- (a,b) = Limit --------------------------x
h->0
h
De la misma manera se define la derivada parcial de f con respecto a la variable
y en el punto (a,b) de la siguiente forma:
f
f(a,b+h) - f(a,b)
---- (a,b) = Limit --------------------------y
h->0
h
Generalizando, podemos definir la derivada parcial respecto de cualquier
variable para una funcin de n variables.
n
Dada la funcin f R ---> R, se define la derivada parcial de f con respecto a la
variable xi en el punto (a1,a2,.....,an) de la siguiente forma:
f
f(a1,a2,.....,ai+h,... an) - f(a1,a2,....,an)
---- (a1,a2,...,an) = Limit ----------------------------------------------- xi
h->0
h
i = 1,2,.....,n
La funcin f es diferenciable si existen todas las derivadas parciales
respecto de las xi (i=1,2,..,n) y son continuas.
Toda funcin diferenciable es continua, y si una funcin no es continua no puede
ser diferenciable.
Se define la derivada direccional de la funcin f segn el vector v=
(v1,v2,...,vn) como el siguiente producto escalar:
f f
f
(D f) v = ( -----, -----, ........,------) . (v1,v2,.......,vn) = ( f) . v
x1 x2
xn
f f
f
f = ( -----, -----, ........,------) se denomina vector gradiente de f
x1 x2
xn
La derivada direccional de la funcin f segn el vector v=(dx1,dx2,...,dxn) se
denomina diferencial total de f. Su valor ser:
f

97

D f = ( -----dx1+ -----dx2 + ......+ -----dxn)


x1
x2
xn
A continuacin se definen las funciones que implementa Mathematica,
referentes a los conceptos expuestos.
D[f[x,y,z,....],x]
D[f[x,y,z,....],{x,n}]
la

Define la derivada parcial de f respecto a la variable


Define la derivada parcial n-sima de f respecto a
variable x.

D[f[x,y,z,...],x,y,z...] Define la derivada parcial de f respecto a las


variables x, y, z,...
Derivative[n][f][x]

Calcula la derivada n-sima de f con respecto a x

Derivative[n][f][a]

Calcula la derivada n-sima de f con respecto a x y


sustituye x por a.

Derivative[n,m][f][x,y]
Calcula la derivada parcial n-sima de f con
respecto a x y m-sima de f con respecto a y.
Derivative[n,m][f][a,b]
Calcula la derivada parcial n-sima de f con
respecto a x y m-sima de f con respecto a y, y
sustituye en el resultado x por a e y por b.
Derivative[n,m,p,...][f][x,y,z,...]

p-

Calcula la derivada parcial n-sima de f con


respecto a x, m-sima de f con respecto a y,
sima con respecto a z........

Derivative[n,m,p,...][f][a,b,c,...]

p-

Calcula la derivada parcial n-sima de f con


respecto a x, m-sima de f con respecto a y,
sima con respecto a z........y sustituye en el
resultado x por a, y por b, z por c,........

D[f,x, NonConstants -> {c1, c2, ...}]


Calcula la derivada parcial de f respecto a x,
suponiendo c1, c2, ... funciones dependientes
de x.
Dt[f[x,y,z,..]]

Calcula la derivada total de f

98

Dt[f[x,y,z,..],x,y,z..]

Calcula la derivada implcita de f respecto a las


variables x, y, z, ....

Dt[f,x, Constants -> {c1, c2, ...}]


Calcula la derivada implcita de f respecto a x,
suponiendo c1, c2, ... constantes.
Segn las definiciones de las funciones anteriores podemos escribir:
f
D[f,x] = ----x

D[f,x,y,z,. ] = ----- ----- ------ .. f
x y z
n

D[f,{x,n}] = ----- f
n
x
Dt[f] = df
df
Dt[f,x] = ---dx
d d d
Dt[f,x,y,z,..] = ---- ---- ---- ...f
dx dy dz
(n)
Derivative[n][f][x] = f (x)
(n+m)

Derivative[n,m][f][x,y] = ------------n m
x y
(n+m+p+..)

Derivative[n,m,p,...][f][x,y,z,...] = ---------------------n m p
x y z ......

El package Calculus VectorAnalysis incorpora, entre otras funciones, que

99

La funcin ser diferenciable si admite derivadas parciales continuas en todo


punto. Vamos a considerar cualquier punto distinto del origen y a calcular la derivada
parcial respecto a la variable x
In[1] = f[x ,y ]=(2 x y)/(x^2+y^2)^(1/2)
In[2] = D[f[x,y],x]//Simplify
3
2y
-----------2 2 3/2
(x + y )
Ahora vamos a ver si esta derivada parcial es continua en el origen
In[3] = g= % /. y->m x
3 3
2m x
--------------2 2 2 3/2
(x + m x )
In[4] = Limit[g,x->0]
3
2m
----------2 3/2
(1 + m )
El lmite no existe en (0,0) porque al considerar los lmites direccionales
respecto de la familia de rectas y=mx, el resultado depende de m. Luego la derivada
parcial no es continua en el origen.
Se concluye que la funcin no es diferenciable.
Sin embargo la funcin s es continua, ya que el nico punto problemtico es el
origen, y en l, el lmite de la funcin vale 0 = f(0,0)
In[1] = Limit[Limit[f[x,y],x->0],y->0]
0
In[2] = Limit[Limit[f[x,y],y->0],x->0]
0

101

In[7] = D[f[x,y],x]//Simplify
1
-2 x Cos[-------]
2 2
x+y
1
----------------- + 2 x Sin[-------]
2 2
2 2
x+y
x+y
Esta derivada parcial es continua en todo punto. El nico punto problemtico
sera el origen
In[8] = h[x ,y ]=%
In[9] = Limit[Limit[h[x,y],x->0],y->0]
0
In[10] =Limit[Limit[h[x,y],y->0],x->0]
0
In[11] = Limit[h[x, x],x->0]
In[12] = Limit[Limit[h[(r Cos[a]),(r Sin[a])],a->0],r->0]
0
Vemos que el lmite en el origen de la parcial respecto a x existe y vale 0, lo
mismo que la parcial en (0,0). Luego la funcin derivada parcial es continua en (0,0).
Por simetra, el anlisis para la derivada parcial respecto a y sera el mismo.
Hemos estudiado la existencia y continuidad de las derivadas parciales de la
funcin inicial en cualquier punto distinto del origen. Ahora estudiaremos lo que
ocurre en el origen
Vamos a calcular ahora las derivadas parciales en el origen para la funcin
inicial
In[13] = Limit[(f[h,0]-0)/h, h->0]
0
In[14] = Limit[(f[0,k]-0)/k, k->0]
0
Las dos parciales valen cero en el origen, lo mismo que su lmite en cualquier
punto, luego son continuas.
Tenemos entonces que, en el origen, la funcin
inicial tambin tiene derivadas parciales y son continuas. Tenemos entonces que la
funcin inicial tiene, en todos sus puntos, derivadas parciales continuas, con lo que es
diferenciable. Adems, tambin hemos visto que la funcin inicial es continua en todos
sus puntos.

103

-0.839938
In[6] = Derivative[0,1][f][x,y]//Simplify
2 2
(-x - y )/8
(E
(-2 y - y Cos[2 x] + y Cos[2 y] + 8 Sin[2 y])) / 8
In[7] = Derivative[0,1][f][Pi/3,Pi/6]//N
0.674508
In[8] = Derivative[1,1][f][x,y]//Simplify
2 2
(-x - y )/8
(E
(2 x y + x y Cos[2 x] - x y Cos[2 y] +
8 y Sin[2 x] - 8 x Sin[2 y])) / 32
In[9] = Derivative[1,1][f][Pi/3,Pi/6]//N
-0.0810746
In[10] = Derivative[2,0][f][x,y]//Simplify
2 2
(-x - y )/8
2
(E
(-8 + 2 x - 68 Cos[2 x] +
2
2
x Cos[2 x] + 4 Cos[2 y] - x Cos[2 y] +
16 x Sin[2 x])) / 32
In[11] = Derivative[2,0][f][Pi/3,Pi/6]//N
1.14813
In[12] = Derivative[0,2][f][x,y]//Simplify
2 2
(-x - y )/8
2
(E
(-8 + 2 y - 4 Cos[2 x] +
2
2
y Cos[2 x] + 68 Cos[2 y] - y Cos[2 y] 16 y Sin[2 y])) / 32

109

In[13] = Derivative[0,2][f][Pi/3,Pi/6]//N
0.553409
In[14] = Derivative[1,2][f][x,y]//Simplify
2 2
(-x - y )/8
2
(E
(8 x - 2 x y + 4 x Cos[2 x] 2
2
x y Cos[2 x] - 68 x Cos[2 y] + x y Cos[2 y] +
2
32 Sin[2 x] - 8 y Sin[2 x] + 16 x y Sin[2 y])) / 128
In[15] = Derivative[1,2][f][Pi/3,Pi/6]//N
0.0250284
In[16] = Derivative[2,2][f][x,y]//Simplify
2 2
(-x - y )/8
2 2 2 2
(E
(32 - 8 x - 8 y + 2 x y +
2
2
272 Cos[2 x] - 4 x Cos[2 x] - 68 y Cos[2 x] +
2 2
2
x y Cos[2 x] - 272 Cos[2 y] + 68 x Cos[2 y] +
2
2 2
4 y Cos[2 y] - x y Cos[2 y] - 64 x Sin[2 x] +
2
16 x y Sin[2 x] + 64 y Sin[2 y] 2
16 x y Sin[2 y])) / 512
In[17] = Derivative[2,2][f][Pi/3,Pi/6]//N
-0.385583
In[18] = Derivative[3,2][f][x,y]//Simplify
2 2
(-x - y )/8

3 2

110

(E

(-96 x + 8 x + 24 x y - 2 x y 3
816 x Cos[2 x] + 4 x Cos[2 x] +
2
3 2
204 x y Cos[2 x] - x y Cos[2 x] +
3
816 x Cos[2 y] - 68 x Cos[2 y] 2
3 2
12 x y Cos[2 y] + x y Cos[2 y] 2
2432 Sin[2 x] + 96 x Sin[2 x] +
2
2 2
608 y Sin[2 x] - 24 x y Sin[2 x] 3
192 x y Sin[2 y] + 16 x y Sin[2 y])) / 2048

In[18] = Derivative[3,2][f][Pi/3,Pi/6]//N
-0.519315
La ventaja de usar la funcin Derivative en lugar de la funcin D[f], radica en la
posibilidad que tiene la primera de calcular directamente el valor de la derivada en un
punto.

111

4.2 MXIMOS Y MNIMOS DE FUNCIONES DE VARIAS


VARIABLES

n
n
Dada la funcin f R ---> R, que aplica el punto (x1,x2,...,xn)R en el punto
f(x1,x2,....,xn)R, se dice que presenta un extremo en el punto (a1,a2,....,an) si el vector
gradiente:
f f
f
f = ( -----, -----, ........,------) se anula en el punto (a1,a2,.....,an)
x1 x2
xn
Al igualar a cero todas las derivadas parciales y resolver el sistema resultante,
se obtienen los posibles mximos y mnimos.
Para saber de qu clase de extremo se trata es necesario construir la matriz
Hessiana en el punto, que tiene la siguiente estructura:

|
|
|
|
|
|
|
|
|
H=
|
|
|
|
|
|
|
|
|

2
2
2 |
f
f
f |
-------, ---------, ........,-------|
2
|
x1
x1 x2
x1 xn
|
|
2
2
2
|
f
f
f
|
--------, ---------, ........,--------- |
|
2
|
x1 x2
x2
x2 xn |
|
........................................... |
|
2
2
2
|
f
f
f |
---------, ---------, ........,--------- |
2 |
x1 xn
x2 xn
xn
|

Con notacin de Mathematica, la matriz hessiana puede escribirse de la


siguiente forma:
| D[f,{x1,2}] D[f,x1,x2] D[f,x1,x3] ..........D[f,x1,xn]

112

{y -> 0, x -> 2}}


Luego los posibles puntos extremos son: (0,0), (-2,0), (2,0) y (-3,0)
Para clasificarlos construmos la matriz Hessiana, y calculamos su valor en
cada uno de los puntos extremos
In[3] = M[x ,y ]={{D[f[x,y],{x,2}],D[f[x,y],x,y]},
{D[f[x,y],x,y],D[f[x,y],{y,2}]}}

2
3
4
{{-720 x - 360 x + 360 x + 150 x , 60 y}, {60 y, 60 x}}
In[4] = M[0,0]//MatrixForm
0 0
0 0
In[5] = Det[M[0,0]]
0
El origen resulta ser un punto degenerado, pues el determinante de la matriz
Hessiana se anula en (0,0)
In[6] = M[-2,0]//MatrixForm
-480 0
0

-120

In[7] = Det[M[-2,0]]
57600
In[8] = Eigenvalues[M[-2,0]]
{-480, -120}
La matriz Hessiana en el punto (-2,0) tiene determinante no nulo, y adems es
definida negativa, porque todos sus autovalores son negativos. Por lo tanto el punto
(-2,0) es un mximo de la funcin
In[9] = M[2,0]//MatrixForm
2400 0
0

120

114

In[10] = Det[M[2,0]]
288000
In[11] = Eigenvalues[M[2,0]]
{120, 2400}
La matriz Hessiana en el punto (2,0) tiene determinante no nulo, y adems es
definida positiva, porque todos sus autovalores son positivos. Por lo tanto el punto (2,0)
es un mnimo de la funcin.
In[12] = M[-3,0]//MatrixForm
1350 0
0

-180

In[13] = Det[M[-3,0]]
-243000
In[14] = Eigenvalues[M[-3,0]]
{-180, 1350}
La matriz Hessiana en el punto (-3,0) tiene determinante no nulo, y adems ni
es definida positiva ni definida negativa, porque sus autovalores, ni son todos positivos,
ni son todos negativos. Por lo tanto el punto (-3,0) es un punto silla de la funcin.
Vamos a representar grficamente la curva (figura 12.1)
In[15] = Plot3D[f[x,y],{x,-5,5},{y,-5,5}]

115

In[4] = MatrixForm[% ]
2 1 0
1 2 0
0 0 2
In[5] = Det[% ]
6
Vemos que la matriz Hessiana es constante (no depende del punto en que se
aplique), por lo tanto su valor en el origen ya est hallado. El determinante es distinto
de cero, con lo que no habr extremos degenerados
In[6] = Eigenvalues[M[0,0,0]]
{1, 2, 3}
La matriz Hessiana en el origen es definida positiva, porque todos sus
autovalores son positivos. Luego podemos concluir que el origen es un mnimo de la
funcin.

117

4.3 MXIMOS Y MNIMOS CONDICIONADOS. EL


MTODO DE LOS MULTIPLICADORES DE
LAGRANGE
Supongamos que queremos optimizar (maximizar o minimizar) la funcin
f(x1,x2,..,xn), denominada funcin objetivo, pero sujeta a unas determinadas
restricciones dadas por las ecuaciones:
g1(x1,x2,....,xn)=0
g2(x1,x2,....,xn)=0
............................
gk(x1,x2,....,xn)=0
En este caso se plantea la funcin de Lagrange, que es una combinacin lineal
de la funcin objetivo y las restricciones, y que tiene la siguiente forma:
k
L(x1,x2,....,xn,l) = f(x1,x2,....,xn) + li gi(x1,x2,....,xn)
i=1
Los posibles puntos extremos se obtienen de la resolucin del sistema
resultante de igualar a cero las componentes del vector gradiente de L , o sea,
L(x1,x2,....,xn,l)=(0,0,.....,0). Lo que se traduce en:
L L
L L L
L
L = ( -----, -----, ........,------, ------, ------, .....,-------) = (0, 0, ....., 0)
x1 x2
xn l1 l2
lk
Al igualar a cero todas las derivadas parciales y resolver el sistema resultante,
se obtienen los valores de x1, x2, ..., xn, l1, l2,...,lk correspondientes a posibles
mximos y mnimos.
Para comprobar si los puntos obtenidos anteriormente (x1,x2,...,xn) son una
determinada clase de extremo, se utiliza las siguiente matriz:
|
|
|
|
|
|
|

D[f,{x1,2}] D[f,x1,x2] D[f,x1,x3] ........ D[f,x1,xn] D[gi,x1]


D[f,x1,x2] D[f,{x2,2}] D[f,x2,x3] ........ D[f,x2,xn] D[gi,x2]
D[f,x1,x3] D[f,x2,x3] D[f,{x3,2}]........ D[f,x3,xn] D[gi,x3]
...........................................................................................
|
........................................................................................... |
|
D[f,x1,xn]

D[f,x2,xn] D[f,x3,xn] ........ D[f,{xn,2}] D[gi,xn]


|
| D[gi,x1]

D[gi,x3]............. D[gi,xn]

118

|
|
|

D[gi,x2]

1
1
z -> -------}, {l -> -------, y -> 0,
Sqrt[2]
Sqrt[2]
1
1
x -> -(-------), z -> -(-------)}}
Sqrt[2]
Sqrt[2]
Ya tenemos que los posibles puntos extremos son:
(-1/Sqrt[2], 0, -1/Sqrt[2]) , que corresponde a l=1/Sqrt[2]

(1/Sqrt[2], 0, 1/Sqrt[2]) , que corresponde a l= -1/Sqrt[2]


Ahora vamos ver qu tipo de extremos son. Para ello consideramos la matriz
que nos da la condicin suficiente de extremo
In[4] =M[x ,y ,z ,l ]=
{{D[f[x,y,z,l],{x,2}],D[f[x,y,z,l],x,y],D[f[x,y,z,l],x,z], D[g[x,y,z],x]},
{D[f[x,y,z,l],x,y],D[f[x,y,z,l],{y,2}],D[f[x,y,z,l],y,z],D[g[x,y,z],y] },
{D[f[x,y,z,l],x,z],D[f[x,y,z,l],y,z],D[f[x,y,z,l],{z,2}],D[g[x,y,z],z] },
{D[g[x,y,z],x],D[g[x,y,z],y],D[g[x,y,z],z], 0 }}
{{2 l, 0, 0, 2 x}, {0, 2 l, 0, 2 y}, {0, 0, 2 l, 2 z}, {2 x, 2 y, 2 z, 0}}
In[5] = MatrixForm[% ]
2l
0
0
2x

0 0 2x
2l 0 2y
0 2l 2z
2y 2z 0

Una vez que conocemos la matriz, la aplicamos en cada punto candidato a


extremo. Comenzamos por el punto (-1/Sqrt[2], 0, -1/Sqrt[2])
In[6] = M[-1/Sqrt[2],0,-1/Sqrt[2],1/Sqrt[2]]//MatrixForm
Sqrt[2] 0
0
-Sqrt[2]
0
Sqrt[2] 0
0
0
0
Sqrt[2] -Sqrt[2]
-Sqrt[2] 0
-Sqrt[2] 0
A partir de esta matriz formamos los sucesivos determinantes y compr0bamos
sus signos
In[7] = Det[{{Sqrt[2],-Sqrt[2]},{-Sqrt[2],0}}]

120

-2
In[8] = Det[{{Sqrt[2],0,-Sqrt[2]},{0,Sqrt[2],0},{-Sqrt[2],0,0}}]
-2 Sqrt[2]
In[9] = Det[M[-1/Sqrt[2],0,-1/Sqrt[2],1/Sqrt[2]]]
-8
Todos los determinantes son de signo negativo, luego en el punto
(-1/Sqrt[2], 0, -1/Sqrt[2]) la funcin presenta un mnimo
Ahora vamos a estudiar el otro punto: (1/Sqrt[2],0,1/Sqrt[2])
In[10] = M[1/Sqrt[2],0,1/Sqrt[2],-1/Sqrt[2]]//MatrixForm
-Sqrt[2] 0
0
Sqrt[2]
0
-Sqrt[2] 0
0
0
0
-Sqrt[2] Sqrt[2]
Sqrt[2] 0
Sqrt[2] 0
In[11] = Det[{{-Sqrt[2],Sqrt[2]},{Sqrt[2],0}}]
-2
In[12] = Det[{{-Sqrt[2],0,Sqrt[2]},{0,-Sqrt[2],0},{Sqrt[2],0,0}}]
2 Sqrt[2]
In[12] = Det[M[1/Sqrt[2],0,1/Sqrt[2],-1/Sqrt[2]]]
-8
Como los determinantes alternan en signo, comenzando con signo negativo,
estamos ante la presencia de un mximo en el punto (1/Sqrt[2],0,1/Sqrt[2]).

121

Luego los posibles puntos extremos son:


(-Sqrt[5/3], -Sqrt[5/3], -Sqrt[5/3]) para l = Sqrt[5/3]/4
(Sqrt[5/3], Sqrt[5/3], Sqrt[5/3]) para l = - Sqrt[5/3]/4
El nico punto que es posible solucin es el segundo, pues no puede haber
lados de paraleleppedos con medida negativa. Pero falta ver que efectivamente el
punto (Sqrt[5/3], Sqrt[5/3], Sqrt[5/3]) es un mximo
In[4] =M[x ,y ,z ,l ]=
{{D[f[x,y,z,l],{x,2}],D[f[x,y,z,l],x,y],D[f[x,y,z,l],x,z],D[g[x,y,z],x]},
{D[f[x,y,z,l],x,y],D[f[x,y,z,l],{y,2}],D[f[x,y,z,l],y,z],D[g[x,y,z],y] },
{D[f[x,y,z,l],x,z],D[f[x,y,z,l],y,z],D[f[x,y,z,l],{z,2}],D[g[x,y,z],z] },
{D[g[x,y,z],x],D[g[x,y,z],y],D[g[x,y,z],z], 0 }}
{{0, 2 l + z, 2 l + y, 2 y + 2 z},
{2 l + z, 0, 2 l + x, 2 x + 2 z},
{2 l + y, 2 l + x, 0, 2 x + 2 y},
{2 y + 2 z, 2 x + 2 z, 2 x + 2 y, 0}}
In[5] =MatrixForm[% ]
0
2l + z 2l + y 2y+ 2z
2l + z 0
2l + x 2x+ 2z
2l + y 2l + x 0
2x+ 2y
2y+ 2z 2x+ 2z 2x+ 2y 0
In[6] = M[Sqrt[5/3],Sqrt[5/3],Sqrt[5/3],-Sqrt[5/3]/4]//MatrixForm

5
Sqrt[-]
3
------2

5
Sqrt[-]
3
------2
5
Sqrt[-]
3
------2

5
Sqrt[-]
3
------2
0
5
5
Sqrt[-] Sqrt[-]
3
3
------- ------2
2
0

5
4 Sqrt[-]
3

5
4 Sqrt[-]
3

5
4 Sqrt[-]
3

123

5
5
5
4 Sqrt[-] 4 Sqrt[-] 4 Sqrt[-]
3
3
3 0
In[7] = Det[{{0,4Sqrt[5/3]},{4Sqrt[5/3],0}}]
80
-(--)
3
In[8] =Det[{{0,Sqrt[5/3]/2,4Sqrt[5/3]},{Sqrt[5/3]/2,0,4Sqrt[5/3]},
{4Sqrt[5/3],4Sqrt[5/3],0}}]

5
80 Sqrt[-]
3
---------3
In[9] = Det[M[Sqrt[5/3],Sqrt[5/3],Sqrt[5/3],-Sqrt[5/3]/4]]
100
-(---)
3
Efectivamente se ve que los determinantes alternan en signo, empezando por el
signo negativo. Luego existe un mximo en el punto:
(Sqrt[5/3], Sqrt[5/3], Sqrt[5/3])
Vemos que el paraleleppedo de mayor volumen para un rea dada es
precisamente un cubo (x=y=z).

124

In[3] = MatrixForm[% ]
x
E
0
0

0
0
-Sin[y] 0
0
Cos[z]

In[4] = J[0,-Pi/2,0]//MatrixForm
1 0 0
0 1 0
0 0 1
Vemos que el jacobiano pedido es la matriz identidad.

127

In[5] = D[z[x,y],y]//Simplify
2 (x - y)
2xy
-2 E
+ 2E x
-------------------------- +
2 (x - y) 2 x y
E
-E
2 x 2 (1 + x) y 2 x 2 (1 + x) y
2 (E + E
) (E + E
x)
----------------------------------------------2 x 2 (1 + x) y 2
(-E + E
)

130

Ahora vamos a calcular las derivadas parciales pedidas, suponiendo siempre


que se cumple la condicin anterior
In[3] = f[x ,y ,z [x ,y ]]=x^3+3y^2+8x z^2-3z^3 y-1
Se parte de la derivada implcita de f respecto de x y se despeja la parcial de z
respecto a x
In[4] = Solve[Dt[f[x,y,z],x]==0,Dt[z,x]]
2 2
3
3 x + 8 z + 6 y Dt[y, x] - 3 z Dt[y, x]
{{Dt[z, x] -> -(------------------------------------------)}}
2
16 x z - 9 y z
Como y no depende de x (x e y son, por hiptesis, variables independientes , y la
variable z depende de x e y), hacemos Dt[y,x]=0 en la expresin anterior
In[5] = % /. Dt[y,x]->0
2 2
3x + 8z
{{Dt[z, x] -> -(---------------)}}
2
16 x z - 9 y z
Ya hemos obtenido la expresin de z/x. Para obtener z/y operamos de
forma semejante
In[6] = Solve[Dt[f[x,y,z],y]==0,Dt[z,y]]
3 2
2
6 y - 3 z + 3 x Dt[x, y] + 8 z Dt[x, y]
{{Dt[z, y] -> -(------------------------------------------)}}
2
16 x z - 9 y z
In[7] = % /. Dt[x,y]->0
3
6y- 3z
{{Dt[z, y] -> -(---------------)}}
2
16 x z - 9 y z
Ya tenemos el valor de de z/y.
2 2
Para calcular de z/x consideramos la derivada implcita de segundo orden de
f respecto de x

132

In[8] = Solve[Dt[f[x,y,z],x,x]==0,Dt[z,x,x]]
{{Dt[z, {x, 2}] ->
2
3
-((6 x + 6 Dt[y, x] + 6 y Dt[y, {x, 2}] - 3 z Dt[y, {x, 2}] +
2
2
32 z Dt[z, x] - 18 z Dt[y, x] Dt[z, x] + 16 x Dt[z, x] 2
2
18 y z Dt[z, x] ) / (16 x z - 9 y z ))}}
Ahora hacemos cero Dt[y,x] y Dt[y,{x,2}] (porque y no depende de x) y
sustituimos Dt[z,x] por su valor hallado anteriormente
In[9] = % /. {Dt[y,x]->0,Dt[y,{x,2}]->0,Dt[z,x]-> (-3x^2-8z^2)/(16x z 9y z^2)}//Simplify
{{Dt[z, {x, 2}] ->
5
4
3 2
2 3
4
2 4
(6 (24 x - 27 x y z + 128 x z - 288 x y z - 512 x z + 81 x y z +
5
3
3
192 y z )) / (z (-16 x + 9 y z) )}}
2 2
Para calcular de z/y consideramos la derivada implcita de segundo orden de
f respecto de y
In[10] = Solve[Dt[f[x,y,z],y,y]==0,Dt[z,y,y]]
{{Dt[z, {y, 2}] ->
2 2
2
-((6 + 6 x Dt[x, y] + 3 x Dt[x, {y, 2}] + 8 z Dt[x, {y, 2}] 2
2
18 z Dt[z, y] + 32 z Dt[x, y] Dt[z, y] + 16 x Dt[z, y] 2
2
18 y z Dt[z, y] ) / (16 x z - 9 y z ))}}
Ahora hacemos cero Dt[x,y] y Dt[x,{y,2}] (porque x no depende de y) y
sustituimos Dt[z,y] por su valor hallado anteriormente
In[11] = % /. {Dt[x,y]->0,Dt[x,{y,2}]->0,Dt[z,y]-> (-6y+3z^3)/(16x z9y z^2)}//Simplify
{{Dt[z, {y, 2}] ->

133

Se parte de las derivadas implcitas de f1 y f2 respecto de x e y, y se despejan


del sistema formado, las parciales de u y v respecto a x e y
In[8] =Solve[{Dt[f1[x,y,u[x,y],v[x,y]],x]==0,
Dt[f1[x,y,u[x,y],v[x,y]],y]==0,
Dt[f2[x,y,u[x,y],v[x,y]],x]==0,
Dt[f2[x,y,u[x,y],v[x,y]],y]==0},
{Dt[u,x],Dt[v,x],Dt[u,y],Dt[v,y]}]
3 4
-(u + 2 v y Dt[y, x])
{{Dt[u, x] -> ----------------------- +
2
3u x
3 2 2
2
(4 v y (3 u x (y + u v Dt[y, x] + x Dt[y, x]) 3 4
2
4
4 3
2 u v y (u + 2 v y Dt[y, x]))) / (3 u x (3 u x y - 8 u v y )),
2
2
Dt[v, x] -> -((3 u x (y + u v Dt[y, x] + x Dt[y, x]) 3 4
4
4 3
2 u v y (u + 2 v y Dt[y, x])) / (3 u x y - 8 u v y )),
4 3
-(2 v y + u Dt[x, y])
Dt[u, y] -> ----------------------- +
2
3u x
3 2
4 3
(4 v y (-2 u v y (2 v y + u Dt[x, y]) +
2 2
2
4
4 3
3 u x (u v + x + y Dt[x, y]))) / (3 u x (3 u x y - 8 u v y )),
4 3
Dt[v, y] -> -((-2 u v y (2 v y + u Dt[x, y]) +
2 2
4
4 3
3 u x (u v + x + y Dt[x, y])) / (3 u x y - 8 u v y ))}}
Ahora imponemos la condicin de que Dt[x,y]=0, ya que x e y son variables
independientes (x no depende de y)
In[9] = % /. {Dt[y,x]->0,Dt[x,y]->0}

135

3 2 4
2
-u 4 v y (-2 u v y + 3 u x y)
{{Dt[u, x] -> --- + ------------------------------,
3x 2
4
4 3
3 u x (3 u x y - 8 u v y )
4
2
-2 u v y + 3 u x y
Dt[v, x] -> -(--------------------),
4
4 3
3 u xy- 8 u v y
4
3 2 2 2
5 2
-2 v y 4 v y (3 u x (u v + x) - 4 u v y )
Dt[u, y] -> ------- + ---------------------------------------,
2
2
4
4 3
3u x
3 u x (3 u x y - 8 u v y )
2 2
5 2
3 u x (u v + x) - 4 u v y
Dt[v, y] -> -(-----------------------------)}}
4
4 3
3 u xy- 8 u v y
Ya hemos calculado la expresin de todas las derivadas pedidas. Ahora vamos a
calcular su valor en el punto (1,1,1,1)
In[10]:= % /.{x->1,y->1,u->1,v->1}
3
1
6
2
{{Dt[1, 1] -> -(-), Dt[1, 1] -> -, Dt[1, 1] -> -(-), Dt[1, 1] -> -}}
5
5
5
5

136

3
4
-4 y Cos[x] 2
y Sin[y]
------------ - 3 x Sin[y] + --------x
2
x
Por lo tanto, en los puntos donde esta expresin no se anule, se puede resolver
para x e y en trminos de u y v. Adems, tambin ha de cumplirse que x0.
Calculamos la derivada de la funcin inversa. Su valor ser la matriz inversa de
la matriz jacobiana inicial y el determinante de su jacobiano ser el recproco del
determinante del jacobiano inicial
In[3] = m[x ,y ]=Outer[D,{(x^4+y^4)/x,Sin[x]+Cos[y]},{x,y}]
4 4 3
2 x + y 4y
{{4 x - -------, ----}, {Cos[x], -Sin[y]}}
2 x
x
In[4] = Inverse[m[x,y]]//Simplify
2
x Sin[y]
{{---------------------------------------,
3
4
4
4 x y Cos[x] + 3 x Sin[y] - y Sin[y]
3
4xy
---------------------------------------},
3
4
4
4 x y Cos[x] + 3 x Sin[y] - y Sin[y]
2
x Cos[x]
{---------------------------------------,
3
4
4
4 x y Cos[x] + 3 x Sin[y] - y Sin[y]
4 4
-3 x + y
---------------------------------------}}
3
4
4
4 x y Cos[x] + 3 x Sin[y] - y Sin[y]

138

x = a Cos[b]
y = a Sin[b]
Evidentemente las funciones son derivables con parciales continuas. Veamos si
el determinante del jacobiano de la transformacin es distinto de 0.
In[1] = f1[a ,b ]=a Cos[b]
In[2] = f2[a ,b ]=a Sin[b]
In[3] = Outer[D,{f1[a,b],f2[a,b]},{a,b}]//MatrixForm
Cos[b]
Sin[b]

-(a Sin[b])
a Cos[b]

In[4] = Det[% ]//Simplify


a
Vemos que el jacobiano de la transformacin es no nulo (a0). Luego es
aplicable el teorema de la funcin inversa. El determinante del jacobiano de la
transformacin inversa ser 1/a.
Mathematica habilita varias funciones en el package Calculus VectorAnalysis,
que permiten disponer de los jacobianos de todo tipo de transformaciones entre los
sistemas de coordenadas ms conocidos.
JacobianMatrix[ ]

Da la mariz jacobiana para el sistema de


coordenadas por defecto.

JacobianMatrix[Punto]

Da la mariz jacobiana para el sistema de


coordenadas por defecto en el punto dado.

JacobianMatrix[sistema]

Da la mariz jacobiana para el sistema de


coordenadas especificado.

JacobianMatrix[sistema, P]
Da la mariz jacobiana para el sistema de
coordenadas y el punto especificados.
JacobianDeterminant[% ]
Da los determinantes para todas las matrices
anteriores (% es el argumento variable).
A continuacin se presentan algunos ejemplos de cmo se calculan fcilmente
con Mathematica las matrices y los determinantes jacobianos de las transformaciones
entre los distintos sistemas de coordenadas, para posibilitar as la comprobacin del
cumplimiento de las hiptesis del teorema de la funcin inversa, a la hora de definir las
transformaciones inversas
In[1] = <<Calculus VectorAnalysis

140

In[2] = JacobianMatrix[ ]//MatrixForm


1 0 0
0 1 0
0 0 1
Evidentemente el jacobiano de la transformacin del sistema de coordenadas
por defecto, que es el cartesiano, a coordenadas cartesianas es la matriz identidad
In[3] = JacobianMatrix[Cylindrical]//MatrixForm
Cos[theta]
-(r Sin[theta]) 0
Sin[theta]
r Cos[theta] 0
0
0
1
In[4] = JacobianMatrix[Spherical]
{{Cos[phi] Sin[theta], r Cos[phi] Cos[theta], -(r Sin[phi] Sin[theta])},
{Sin[phi] Sin[theta], r Cos[theta] Sin[phi], r Cos[phi] Sin[theta]},
{Cos[theta], -(r Sin[theta]), 0}}
En los dos ltimos ejemplos se han calculado las matrices jacobianas de paso
de cilndricas a cartesianas y de esfricas a cartesianas
In[5] = JacobianMatrix[{1,Pi/2,Pi/4},Spherical]//MatrixForm
1
------Sqrt[2]
1
------Sqrt[2]
0

1
-(-------)
Sqrt[2]

1
------Sqrt[2]

-1

In[6] = JacobianMatrix[{1,Pi/2,Pi/4},Cylindrical]//MatrixForm
0 -1 0
1 0 0
0 0 1
Aqu hemos calculado los valores de las matrices jacobiamas en un punto dado
In[7] = JacobianDeterminant[Spherical]
2

141

r Sin[theta]

In[8] = JacobianDeterminant[Cylindrical]
r
In[9] = JacobianDeterminant[{1,Pi/2,Pi/4},Spherical]
1
En los ltimos ejemplos se han calculado los determinantes de ciertas matrices
jacobianas.

142

144

In[1] = CoordinatesFromCartesian[{1,Sqrt[3],2}, Cylindrical]//N


{2., 1.0472, 2.}

154

155

You might also like