Introduccion de Mathematica
Introduccion de Mathematica
68
Nótese que el programa numera tanto la entrada como la salida. Marca la entrada como In[n]:= y la correspondiente salida
como Out[n]=, donde n es un número (contador) que va incrementándose cada vez que ejecutamos una instrucción. Veamos
algunos ejemplos más. Recordemos que hay que ejecutar cada instrucción pulsando ÷ + ó .
4x + 5x
9x
El operador % toma el resultado de la última salida y lo utiliza para calcular con él. Se puede usar también %%, %%%, ...
Print@%D
11 x
Así, imprimimos la operación anterior, que habíamos ocultado con ;. Observa también los siguientes ejemplos. Se presentan
cuatro instrucciones y, debajo de cada una de ellas, la salida que produce.
x Hx + yL - y Hx + yL
x Hx + yL - y Hx + yL
%+3x
3 x + x Hx + yL - y Hx + yL
Simplify@%D
3 x + x2 - y2
2 00 - Introduccion.nb
Simplify@%%%D
x2 - y2
Podemos asignar valores a las variables. Por ejemplo, analiza la siguiente secuencia.
x = 2; y = 5;
Simplify@x Hx + yL - y Hx + yLD
- 21
Por eso hay que tener cuidado al utilizar variables, pues podrían tener algún valor asignado.
Podemos comprobar si una determinada variable tiene asignado algún valor, ejecutando la instrucción ?nombrevariable.
?x
Global`x
x=2
?y
Global`y
y=5
La interrogación es en realidad la instrucción para solicitar ayuda. Por ejemplo, si tecleamos ?Sqrt, el programa informa
sobre dicha función.
? Sqrt
Clear@x, yD
?x
Global`x
Podemos dar valores a las variables de una expresión para hacer un cálculo, sin necesidad de hacer una asignación. El
siguiente ejemplo muestra como se hace.
x ^ 2 . x ® 5
25
?x
Global`x
Es decir, se ha sustituído x por 5 en la expresión x^2, pero sin asignar a la variable x ningún valor.
Se pueden hacer sustituciones de todo tipo; por ejemplo,
x ^ 2 . x ® 5 y ^ 2
25 y4
Resolución de ecuaciones
00 - Introduccion.nb 3
Resolución de ecuaciones
Una ecuación se escribe en el programa como expresión1==expresión2 (con dos símbolos de igualdad; un único signo de
igualdad sólo se usa para asignar valores a variables, como ya sabemos).
Por ejemplo, la ecuación x2 - 3 x = 2 x + 5 se escribe así:
x2 - 3 x == 2 x + 5
- 3 x + x2 5 + 2 x
La resolución se puede llevar a cabo de dos formas: simbólicamente (de forma exacta) y numéricamente (de forma aproxi-
mada).
Como herramientas de resolución simbólica están las órdenes
Solve[ecuación, variable], que resuelve formalmente la ecuación respecto de la variable indicada y
Reduce[ecuación, variable], que simplifica la ecuación, reduciéndola todo lo posible y dando sus soluciones.
Veamos algunos ejemplos:
SolveAx3 - 3 x - 2 == 0, xE
ReduceAx3 - 3 x - 2 == 0, xE
x - 1 ÈÈ x 2
SolveAx3 - 4 x2 + 13 x == 0, xE
ReduceAx3 - 4 x2 + 13 x == 0, xE
x 0 ÈÈ x 2 - 3 ä ÈÈ x 2 + 3 ä
SolveAx2 - 8 x + 3 == 0, xE
ReduceAx2 - 8 x + 3 == 0, xE
x 4- 13 ÈÈ x 4 + 13
Observemos que la presentación de resultados para Solve es diferente que la de Reduce. En ambos casos la resolución se hace
simbólicamente, siendo las soluciones de la última ecuación 4 - 13 y 4 + 13 .
Si queremos que Mathematica presente las soluciones en forma decimal, tenemos dos opciones:
Introducir uno de los coeficientes en forma decimal:
SolveAx2 - 8 x + 3.0 == 0, xE
NSolveAx2 - 8 x + 3 == 0, xE
Por último, conviene aclarar que cuando se resuelve una ecuación no polinómica con el comando Solve o Reduce no se
obtienen, en general, todas las soluciones sino sólo algunas de ellas. Por ejemplo, la ecuación sen x = 0 tiene infinitas
soluciones (los números de la forma kΠ, kÎZ). Sin embargo, la instrucción Solve[ ] da sólo una, aunque avisa de que puede
haber otras; propone además usar Reduce[ ] como instrucción más adecuada:
4 00 - Introduccion.nb
Solve@Sin@xD == 0, xD
Solve::ifun :
Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete
solution information.
88x ® 0<<
Reduce@Sin@xD == 0, xD
Vectores.
Hay unas cuantas instrucciones para trabajar con vectores. Veamos las más elementales.
Como ejemplo, vamos a definir v = H2, 4, 6, 8, 10L y w = H-2, 0, 4, -3, 1L, para calcular 3v y 3v + 5w.
Los vectores se definen escribiendo sus elementos entre llaves, { y }. Por tanto, haremos
v = 82, 4, 6, 8, 10<
w = 8- 2, 0, 4, - 3, 1<
3v
3v+5w
82, 4, 6, 8, 10<
8- 2, 0, 4, - 3, 1<
Se pueden hacer diversos cálculos con ellos. Por ejemplo, el producto escalar
Dot@v, wD
Matrices.
Observa en el siguiente ejemplo cómo se definen las matrices y cómo se escriben en pantalla, si queremos que aparezcan de la
forma tradicional
MatrixForm@AD
MatrixForm@BD
1 -3 1
-2 0 3
5 1 1
0 -2 1
1 1 2
-1 0 -2
La matriz 2A + 3B,
Los determinantes y las inversas de A y B,
El producto A·B
La matriz traspuesta de A.
MatrixForm@2 A + 3 BD
2 - 12 5
-1 3 12
7 2 -4
Det@AD
- 56
MatrixForm@Inverse@ADD
3 1 9
-
56 14 56
17 1 5
-
56 14 56
1 2 3
28 7 28
Det@BD
MatrixForm@Inverse@BDD
-2 -4 -5
0 1 1
1 2 2
-4 -5 -7
-3 4 -8
0 -9 5
MatrixForm@Transpose@ADD
1 -2 5
-3 0 1
1 3 1
El producto de matrices se calcula escribiendo A.B. Si ponemos A*B, Mathematica hace el "producto" elemento a elemento.
Observa la diferencia entre A . B y A*B
6 00 - Introduccion.nb
El producto de matrices se calcula escribiendo A.B. Si ponemos A*B, Mathematica hace el "producto" elemento a elemento.
Observa la diferencia entre A . B y A*B
Print@"Las matrices iniciales son A=", MatrixForm@AD, " y B=", MatrixForm@BDD
1 -3 1 0 -2 1
Las matrices iniciales son A= - 2 0 3 y B= 1 1 2
5 1 1 -1 0 -2
-4 -5 -7
-3 4 -8
0 -9 5
0 6 1
-2 0 6
-5 0 -2
De manera similar, para calcular una potencia de una matriz debemos utilizar la instrucción adecuada.
Así, para calcular A3 hemos de poner MatrixPower[A,3], no A^3. Esta última instrucción daría una matriz que está formada
por las potencias de exponente 3 de los elementos de A. Compruébalo.
MatrixForm@A ^ 3D
1 - 27 1
-8 0 27
125 1 1
MatrixForm@MatrixPower@A, 3DD
- 19 - 43 - 1
0 - 38 41
81 - 15 - 25
A veces necesitaremos hacer referencia a algunos elementos de una matriz. Observa en los ejemplos que siguen cómo se
extraen elementos, filas o columnas de una matriz dada.
A@@1, 2DD H* Elemento 1,2 de A *L
-3
A@@2DD H* Fila 2 de A *L
8- 2, 0, 3<
8- 3, 0, 1<
1 -3 1 5 1 1
A= - 2 0 3 CA= - 2 0 3
5 1 1 1 -3 1
Pueden extraerse submatrices de una matriz A dada, que sean cuadradas o no. Basta indicar las filas y columnas que quere-
mos tomar.
00 - Introduccion.nb 7
1 1
1 1 1 -3 1
-2 3
-2 3 -2 0 3
5 1
Por último, comentemos la instrucción Append[ ], que permite añadir una fila (y, con cuidado, una columna) a una matriz.
Será útil para obtener la matriz ampliada de un sistema sin necesidad de escribir otra vez la matriz de los coeficientes.
A1 = Append@A, 88, 8, 8<D; H* Añade una fila *L
MatrixForm@A1D
1 -3 1
-2 0 3
5 1 1
8 8 8
1 -3 1 8
-2 0 3 8
5 1 1 8
Más adelante veremos otras instrucciones muy útiles para trabajar con matrices desde el punto de vista de la asignatura, para
calcular valores y vectores propios, por ejemplo.
ã+Π
N@E + PiD
5.85987
5.8598744820488384738
Log@3 + E ^ 5D
LogA3 + ã5 E
5.020012253
HH2 + IL H1 - 3 ILL ^ 7
92 567 60 319 ä
-
1 250 000 1 250 000
8 00 - Introduccion.nb
HH2 + IL H1 - 3 ILL ^ 7 N
0.0740536 - 0.0482552 ä
Asignación en Mathematica.
Como final, un comentario sobre la asignación de un valor a una variable en Mathematica. Hay dos formas de asignación, la
asignación inmediata (=) y la asignación diferida (:=).
Si escribimos en Mathematica expr1 = expr2 (también puede escribirse Set[expr1, expr2]), se evalúa el valor de expr2 y se
guarda el contenido en expr1. Si posteriormente cambiase el valor de expr2, eso no tendría ningún reflejo en el valor de
expr1, que permanece siempre fijo.
Si embargo, la instrucción expr1 := expr2 (también puede escribirse SetDelayed[expr1, expr2]), hace que Mathematica no
evalúe el valor de expr2 para asignárselo a expr1 hasta que llamamos a dicha expresión expr1. Además lo evalúa tantas veces
como llamemos a dicha expresión, de modo que los cambios que experimente expr2 tienen su reflejo en el valor de expr1.
Un ejemplo ayudará a entender mejor esto.
a = 2;
x = a + 3;
y := a + 3;
Print@"a=", a, " x=", x, " y=", yD
a = 7;
Print@"a=", a, " x=", x, " y=", yD
Como se ve, el valor de x es 5, a pesar de que a ha cambiado de valor; sin embargo en el valor de y sí se refleja dicho
cambio.