Professional Documents
Culture Documents
CON MATHEMATICA
Una y varias variables
Ejercicios resueltos
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.
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
12
17
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
20
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
23
Comando
Descripcin
--------------------------------------------------------------------------------------------?var
??var
?xyz*
?*xyz*
?@
Options
Information
24
Minus,Subtract (menos)
Times (veces)
Divide(dividir)
Power (potencia)
Factorial
<
Less (menor)
<=
>
Greater (mayor)
>=
Igualdad
x=y
Desigualdad
Not (No)
....
Xor[p, q, ..]
And (Y)
Or (O)
Or exclusive (O exclusivo)
25
LogicalExpand[expr]
If[p, then, else]
W hile[cond, expr]
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}]
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
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
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
35
36
37
38
(lo[[long/2]] + lo[[long/2+1]]/2
]
]
In[4] = mediana[{76, 56, 23, 78, 34}]
Out[4] = 56
39
40
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
44
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
47
expresin
48
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
falsa
51
Identity
Identity[expr]
Nest[f,x,n]
NestList[f,x,n]
FixedPoint[f,x]
FixedPointList[f,x]f,x]
Operate[p,f[x]]
Define p[f][x]
Operate[p,f[x],n]
Through[p[f,g][x],q]
Distribute[f[a+b..]]
Distribute[f[arg],g]
Outer[f,l1,l2,..]
Inner[f,l1,l2,g]
54
FoldList[f,x,{a,b,..}]
Fold[f,x,{a,b,..}]
Sort[expr]
Flatten[expr]
Flatten[expr,n]
Thread[f{a,b},{c,d}]]
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
NLimit[sucesin, n->Infinity]
Limit[funcin, x->a]
tiende
NLimit[funcin, x->a]
tiende
tiende
64
tiende
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
97
Derivative[n][f][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-
Derivative[n,m,p,...][f][a,b,c,...]
p-
98
Dt[f[x,y,z,..],x,y,z..]
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 ......
99
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
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
|
112
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
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]
0 0 2x
2l 0 2y
0 2l 2z
2y 2z 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
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
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
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]
JacobianMatrix[Punto]
JacobianMatrix[sistema]
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
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
154
155