Está en la página 1de 155

CLCULO DIFERENCIAL

CON MATHEMATICA

Una y varias variables


Ejercicios resueltos

CSAR PREZ LPEZ

2
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

4
5.8 TRANSFORMACIN DE COORDENADAS

5
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.

7
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.

8
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] =

9
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

p Not (No)

p && q && .... And (Y)

p q .... Or (O)

Xor[p, q, ..] Or exclusive (O exclusivo)

25
LogicalExpand[expr] Expande expresiones lgicas

If[p, then, else] Se ejecuta then si p es verdadero y se


ejecuta else si p es falso

W hile[cond, expr] 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 expresin


"Clear[f]".

47
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 falsa


se evala expresin2.

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] Aplica p[f[x],g[x]] segn la operacin


denominada q.

Distribute[f[a+b..]] Devuelve f[a,..]+f[b,..]+...

Distribute[f[arg],g] 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,..}] Da el ltimo elemento de FoldList.


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

Flatten[expr] Aplana (recoge) lo ms posible la


expresin expr.

Flatten[expr,n] 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] Calcula el lmite de la sucesin,


indicada por su trmino general,
cuando n tiende a infinito.

NLimit[sucesin, n->Infinity] 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.
Limit[funcin, x->a] Calcula el lmite de la funcin de
variable x, indicada por su expresin
analtica, cuando la variable x
tiende hacia el valor a.

NLimit[funcin, x->a] Calcula el lmite de la funcin de


variable x, indicada por su expresin
analtica, cuando la variable x
tiende 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]

Calcula el lmite de la funcin de


variable x, indicada por su expresin
analtica, cuando la variable x
tiende 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 f 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] Define la derivada parcial de f respecto a la variable x


D[f[x,y,z,....],{x,n}] Define la derivada parcial n-sima de f respecto a
la 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,...]

Calcula la derivada parcial n-sima de f con


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

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

Calcula la derivada parcial n-sima de f con


respecto a x, m-sima de f con respecto a y,
p- 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 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:

| 2 2 2 |
| f f f |
| -------, ---------, ........,-------- |
| 2 |
| x1 x1 x2 x1 xn |
| |
| 2 2 2 |
| f f f |
| --------, ---------, ........,--------- |
H= | 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,x2]
D[gi,x3]............. D[gi,xn] 0 |

118
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] y

(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 2l 0 2y
0 0 2l 2z
2x 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 5
Sqrt[-] Sqrt[-]
3 3 5
------- ------- 4 Sqrt[-]
0 2 2 3
5 5
Sqrt[-] Sqrt[-]
3 3 5
------- ------- 4 Sqrt[-]
2 0 2 3
5 5
Sqrt[-] Sqrt[-]
3 3 5
------- ------- 4 Sqrt[-]
2 2 0 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 -Sin[y] 0
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 z-


9y 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] -(a Sin[b])


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 1
------- -(-------)
Sqrt[2] 0 Sqrt[2]

1 1
------- -------
Sqrt[2] 0 Sqrt[2]

0 -1 0

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]

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