Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ndice general
1. Introduccin a Mathematica
1.1. Preliminares . . . . . . . . . . . . .
1.2. Parntesis, corchetes y llaves . . . .
1.3. Errores . . . . . . . . . . . . . . . .
1.4. Funciones matemticas de inters .
1.5. Aprovechando clculos anteriores .
1.6. Definicin de variables y funciones .
1.7. Derivadas de funciones . . . . . . .
1.8. Representacin grfica de funciones
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
3
4
5
6
7
8
11
12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
15
15
15
16
17
17
19
20
22
22
24
25
26
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Captulo 1
Introduccin a Mathematica
Mathematica es un programa que permite hacer clculos matemticos
complicados con gran rapidez. Para entendernos, es como una calculadora
gigante a la que no slo podemos pedirle que haga clculos numricos, sino
que tambin hace derivadas, clculo de primitivas, representacin grfica de
curvas y superficies, etctera.
Abordaremos en esta prctica una iniciacin a Mathematica partiendo
desde cero, intentando poner de manifiesto su utilidad a la hora de trabajar con expresiones matemticas complicadas, bien sean stas numricas o
simblicas, permitiendo hacer operaciones en poco coste de tiempo y con
bastante facilidad.
Pretendemos con esta prctica introducir al alumno en el manejo de este
potente programa que puede servirle de utilidad en futuros clculos que deba
realizar. Esencialmente vamos a aprender a utilizar el programa, por lo que
esta prctica trata de explicar como pedirle a Mathematica que haga aquello
que nosotros deseamos. Adems, el programa puede utilizarse para corregir
los problemas propuestos al alumno en la clase de problemas.
A pesar de la utilidad del programa, debemos hacer hincapi en el hecho
de que es necesario por parte del alumno un conocimiento matemtico terico
de todas las funciones y sentencias que vamos a usar. Por ejemplo, aunque
una calculadora multiplica nmeros con suma facilidad, slo nos percatamos
de su potencia en cuanto conocemos dicha operacin y somos capaces de
realizarla de un modo mucho ms lento. Con Mathematica ocurre lo mismo.
Slo conociendo tericamente las operaciones que Mathematica realiza nos
percataremos de su utilidad.
1.1.
Preliminares
suma de nmeros
resta de nmeros
divisin de nmeros
producto de nmeros
potencia
21
3
Sin embargo, a veces nos es ms til tener el valor de este nmero expresado con cifras decimales. Para ello se tienen las sentencias
N N[]
N[ ]
Las primeras escriben el nmero con seis cifras significativas, mientras que
la segunda escribe dicho nmero con un nmero de cifras significativas que
nosotros prefijamos (en la versin 4.0 del programa y posteriores esta ltima
sentencia no siempre funciona del modo deseado). Por ejemplo, si escribimos
In[3] := 13 + 27 N
Out[3] = 0619048
obtendremos el resultado con 6 cifras significativas. Si por el contrario escribimos
In[4] := [13 + 27 10]
Out[4] = 0619047619
lo obtendremos con un nmero 10 cifras significativas.
En caso de las operaciones numricas tambin tendremos una valor numrico aproximado con seis cifras significativas si en la operacin escribimos algn
nmero en forma decimal. As, al teclear
In[5] := 13 + 27
Out[5] = 0619048
Mathematica distingue as entre operaciones algebraicas exactas y operaciones numricas aproximadas.
1.2.
1.3.
Errores
1.4.
Sqrt[] =
Log[] = log
Sin[] = sin
ArcSin[] = arcsin
Tan[] = tan
! = factorial de
Abs[] = ||
Exp[] =
Log[ ] = log
Cos[] = cos
ArcCos[] = arc cos
ArcTan[] = arctan
Round[] =
FactorInteger[] =
:=
=
:=
=
:=
=
:=
=
Sqrt[16]
4
Sqrt[2]
2
Sqrt[2]
141421
N[Sqrt[7] 10]
26457513111
=
=
=
=
=
' 314159
' 271828
= 1
1.5.
A veces es posible que tengamos que hacer una sucesin de clculos consecutivos de manera que cada nueva operacin se base en la anterior. Parece
necesaria entonces una sentencia que nos remita a resultados anteriores sin
7
tener que escribir la operacin de nuevo. Dicha sentencia es %. Por ejemplo, si queremos calcular cos (sin 20 ) tendramos que calcular primero sin 20
para despus calcular el coseno de dicha cantidad. Esta operacin podramos
hacerla del modo siguiente:
In[13]
Out[13]
In[14]
Out[14]
:=
=
:=
=
Sin[20 Degree] N
034202
Cos[ %]
0942079
Aqu Cos[ %] nos calcula el coseno del resultado obtenido en la salida 13. Para
remitirnos a un resultado obtenido dos pasos antes debemos escribir % %, y
para resultados obtenidos k pasos antes escribiremos k smbolos %. Para remitirnos a un resultado obtenido en la salida n podemos tambin escribir %n.
Por ejemplo Cos[ %13] tambin nos remite a la salida 13.
1.6.
Supongamos que tenemos que hacer una serie de clculos en los cuales
interviene repetidamente una constante, como por ejemplo la constante de la
gravitacin universal, o al estudiar valores particulares de la funcin () =
(145) + sin Es til entonces definir variables con estos valores y funciones
nuevas para minimizar el tiempo de escritura y hacer las operaciones de forma
ms gil.
Las variables pueden ser designadas por letras o por sucesiones de letras.
Supongamos que queremos definir la constante de la gravitacin universal
= 667 1011 con Mathematica. Entonces deberamos hacer
In[15] := = 667 10 11
Out[15] = 667 1011
Si ahora tenemos dos cuerpos de masa 3 kilogramos separados a una distancia
de 10 metros, la fuerza con la que se atraen dichos cuerpos se calcula
In[16] := 32(102)
Out[16] = 6003 1012
Para desposeer a de su valor debemos teclear
In[17] := =
8
o bien
In[18] := Clear[]
Algunas letras estn asignadas ya por defecto por Mathematica y no
pueden ser utilizadas para definir variables. Una de ellas es N. Si intentsemos
escribir N=2, el programa devolver una sentencia azul de error.
A la hora de trabajar con variables en Mathematica, hemos de tener en
cuenta las siguientes reglas. Si e son dos variables que hemos definido con
anterioridad, entonces
representar el producto
es una nueva variable formada por dos letras.
5 es el producto de 5 por .
2 es el producto 2 y no 2
Por otra parte, si en una misma lnea queremos definir varias variables, o
escribir varias expresiones debemos separar estas con ;. Por ejemplo
In[19] := = 1; = 2; = +
Out[19] = 3
ha asignado el valor 1 a x, 2 a y y 3 a z, y slo ha escrito el ltimo valor. Si al
final de la ltima expresin ponemos tambin ; la operacin no proporciona
ninguna salida, es decir la expresin
In[20] := = 1; = 2; = + ;
no proporciona a continuacin un Out[20] al pulsar maysculas + enter y
asigna los mismos valores que en la sentencia anterior.
Para definir nuevas funciones hemos de usar la siguiente estructura:
nombrefuncin[1 _ 2 _ _] := expresin.
El smbolo _ se usa para indicar que la letra que lo antecede es una variable
de la funcin. Por ejemplo, para definir la funcin () = (145) + sin
debemos escribir
In[21] := [_] := 145 + Sin[].
9
Entonces si tecleamos
In[22] := [1]
Out[22] := 318975
obtenemos el valor de dicha funcin en 1. Para eliminar la funcin debemos
escribir
In[23] := Clear[ ]
indicando tanto la variable como el nombre de la funcin.
Hemos visto como introducir funciones escalares, pero a menudo es necesario trabajar con funciones vectoriales, por ejemplo la funcin
( ) = ( sin )
que como vemos es una funcin : R3 R2 . Para ello definimos la funcin
como
In[24] := [_ _ _] := { Sin[]}
Si tecleamos ahora
In[25] := [1 1 ]
Out[25] := {1 0}
obtenemos un vector del plano. Para obtener las funciones coordenadas debemos escribir
In[26] := [1 1 ][[1]]
Out[26] := 1
o
In[27] := [1 1 ][[2]]
Out[27] := 0
segn queramos trabajar con la primera o segunda coordenada.
10
1.7.
Derivadas de funciones
3
3
In[28] := D[Sin[ + ] ]
Out[28] = Sin[ + ]
11
1.8.
0.5
-0.5
-1
12
0.5
-0.5
-1
0.5
-0.5
-1
13
Captulo 2
Programacin con Mathematica
A continuacin vamos a explicar algunas sentencias que se utilizan para
hacer programas con Mathematica. Las principales herramientas que vamos
a necesitar para hacer los programas son las siguientes:
Cmo establecer comunicacin entre el ordenador y quien ejecuta el
programa?
Cmo contruir bucles con Mathematica?
Cmo definir funciones y variables?
Cmo interrumpir la ejecucin de un programa cuando ste est bloqueado?
Vamos a explicar como hacer cada una de estas cosas, para poder construir
nuestro programa. En primer lugar, vamos a contestar a la primera pregunta:
para interrumpir un programa o una evaluacin de Mathematica basta con
pulsar las teclas
Alt + coma
Para las otras cuestiones, se necesita una explicacin ms amplia que a continuacin desarrollamos.
2.1.
Aritmtica de computadora
2.1.1.
X
1
=1
[[12 { 1 }]; ]
y
[[12 { 1 }]]
donde es el tiempo que se tarda en realizar la operacin. La segunda expresin se trabaja con aproximaciones (observar el punto detrs del 1) y
de nuevo es el tiempo empleado en hacer los clculos. Puede verse como
a medida que aumentamos aumenta mucho ms el tiempo empleado con
precisin infinita.
2.1.2.
Cualquier calculadora u ordenador expresa los nmeros reales con notacin exponencial, habitualmente utilizando base 2. Al ser finitos los recursos de los que se disponen tambin han de serlo el nmero de cifras que se
pueden utilizar. Se llama epsilon de la mquina al menor nmero positivo
que sumado a uno es distinto de uno. En caso de Mathematica, el epsilon de
la maquina ($MachineEpsilon) es 2220446049250313 1016 . Por ejemplo,
si consideramos la desigualdad
1 + 2 1
sta siempre se cumple cuando trabajamos en precisn infinita. Pero si escribimos
1 + 2
15
2.1.3.
Errores de redondeo
2.2.
2.2.1.
Como sabemos, para definir una variable numrica basta con tomar una
letra o conjunto de letras e igualarlas al valor deseado. Por ejemplo, si queremos asignar a la letra el valor 65, escribiremos en la pantalla
= 65
los que producir la siguiente respuesta en la pantalla del ordenador
In[1] := = 65
Out[1] = 65
Si lo que queremos es definir una funcin, hemos de hacerlo indicando la
variable entre corchetes segn el siguiente esquema:
Nombre[var_] := funcion
As, para definir la funcin () = cos hemos de escribir
In[2] := f[x_] := Exp[] Cos[]
Out[2] = Exp[] Cos[]
Otro tipo de variables bastante interesantes son las vectoriales. Podemos
definir una variable vectorial, por ejemplo de dimensin tres haciendo la
siguiente operacin
In[3] := [1] = 5
Out[3] = 5
In[4] := [2] = 2
Out[4] = 2
17
In[5] := [1] = 9
Out[5] = 9
y habremos introducido el vector (5 2 9). Si queremos saber el valor de la
variable hemos de escribir
In[6] := ?
0
[1] = 5
[2] = 2
[3] = 9
o bien
In[7] := Table[[] { 3}]
Out[7] = {5 2 9}
Podemos dejar sin asignar valores al vector. Si hacemos
In[8] := Clear[[2]]
y
In[7] := Table[[] { 3}]
Out[7] = {5 [2] 9}
dejando el valor de [2] vacio.
Para borrar las variables o las funciones utilizaremos la sentencia Clear[var
o func]. Escribiendo
Clear[]
desposeemos a del valor 6.5 asignado anteriormente.
2.2.2.
Funciones vectoriales
2.2.3.
Operaciones
Suma
Resta
Multiplicacin
Divisin
19
Menor que
Mayor que
= Menor o igual que
= Mayor o igual que
Operaciones Lgicas
! o Not Negacin
&&
Y
||
O
True
Verdad
False
Falsedad
Por ejemplo, si escribimos 10 8, aparecer en pantalla
In[1] := 10 8
Out[1] = False
indicando la falsedad de la afirmacin. Si escribimos 7 4 y 26= 3 aparecer
In[2] := 7 4 && 2 ! = 3
Out[2] = True
indicando que las dos sentencias son verdaderas. Si ponemos una verdadera
y una falsa y escribimos
In[3] := 7 4 && 2 = 3
Out[3] = False
mientras que
In[4] := 7 4 || 2 = 3
Out[4] = True
20
Finalmente
In[5] := Not[7 4]
Out[5] = True
dado que lo contrario de 7 4 es 7 4, que es verdadero.
Otras combinaciones de smbolos que pueden resultar tiles son las siguientes:
++
Aumenta el valor de una unidad
21
2.3.
2.3.1.
For
+1 = + 1
y que partimos de la condicin inicial 0 = 1. Por alguna razn, estamos
interesados en saber el valor de esta sucesin en 1000, esto es 1000 . Esto
supone hacer 1000 iteraciones del proceso iterativo, que como vamos a ver
puede programarse con relativa facilidad en Mathematica con el comando
For.
La sintaxis de For es la siguiente:
For[inicio test incremento expresion]
que partiendo de un valor inicial, evala la expresin a la vez que incrementa
el valor inicial hasta que el test falla. En particular, el clculo de 1000 puede
hacerse con el siguiente programa:
= 1; For[ = 1 1001 + + = Sqrt[] + 1]
Es preciso notar lo siguiente en el ejemplo anterior:
Hemos escrito " = 1 y no " = 1". El punto al final del uno indica
que estamos trabajando con aproximaciones y no con precisin infinita. Esto hace que los tiempos de computacin sean muy diferentes.
22
2.3.2.
If
24
pero si escribimos
In[2] := If[2 1 2 + 2]
no se obtendr ninguna salida. Otro tipo de expresin es la siguiente
If[condicion 1 2 ]
Ahora, si la condicin es cierta el programa ejecutar 1 y si es falsa ejecutar
2 . Por ejemplo
In[3] := If[1 2 2 + 1 2 + 2]
Out[3] = 4
2.4.
25
2.5.
Presentaciones grficas
:=
=
:=
=
= {2 5 6}
{2 5 6}
Append[ 8]
{2 5 6 8}
ListPlot[Array[ 1000]]
segn hallamos introducido la sucesin de una u otra manera. As, tanto el
programa
= {1}; 0 = 1; For[ = 1 1000 + + 1 = 0 + 2;
= Append[ 1]; 0 = 1; = ]; ListPlot[ ]
como su alternativa
Array[ 1000]; 0 = 1; For[ = 1 1001 + + [] = 0;
1 = 0 + 2; 0 = 1]; ListPlot[Array[ 1000]]
nos devuelven la grfica dada en la figura 2.1.
27
30
31
Bibliografa
[1] M.L. Abell y J.P. Braselton, Dierential Equations with Mathematica,
Ed. AP Proessional.
[2] Stephen Wolfram, The Mathematica Book, Wolfram Media, Cambridge
University Press.
[3] E. Castillo y otros, Mathematica, Ed. Paraninfo.
32