Mathematica

Introducción

Para comenzar

En está sección se introudcen suficiente caracteristicas de matematica, como para  comenzar a hacer algunas operaciones interesantes. Pero las cubiremos de forma un poco superficial. Aunque al principio el  Mathematica   pueda parecer un poco confuso conforme se avance en su uso, se observará que el lenguaje utilizado es muy natural y que  se puede utilizar sin estar revisando constantemente las notas o manuales.

La estructura de Mathematica

Los dos componentes básisco de Mathematica son el front-end y el kernel. El fornt end es la parte que interactua con el usuario y el kernel quien realiza los calculos. Estás dos partes están separadas pero se comunican mediante el protocolo MathLink. 

El front end más comunmente utulizado son los notebooks. Un notebook  povee un ambiente interactivo en el  cual la infromación enviada y recibida del kernel es desplegada en pantalla. Un notebook  permite utilizar opciones de edición tales como: cortar y pegar, teclas rápidas, etc. La interface del notebook también proporciona muchos menus y herramientas gráficas que facilitan las preparación de la entrada.  A partir de la versión 3 de Mathematica es posible introducir símbolos matemáticos, con los cual el lenguaje de Mathematica se apróxima mucho a la notación matemática tradicional . Además Mathematica cuenta con un poderoso editor WYSIWYG (whta you see what you get), el cual facilita la edición de documentos técnicos. A partir de la versión 4 se incluye amplio soporte para un amplio de formato de gráficos, para que puedan ser importados.

Un notebook, contiene una secuencia de  comandos que indican acciones al kernel, la salida de los comandos, y documentación.  Un notebook bien estructurado puede proporcionar una descripción clara y elegante tanto de la descripción teorica de problema, así como la solución del mismo. Aún cuando un notebook pudiera parecer una hoja de las que se utilizan durante el trabajo intermedio al resolver un problema, conforme se completa el trabajo este parecerá más un reporte. Un reporte en el que la teoria del problema  es  introducida, y la solución es desarrollada en un orden claro con suficiente documentación para que cualquier lector(con conociemietos del área) pueda seguirlo facilmente.

Interactuando con el Kernel

Cuando se crea/abre un notebook   no inicia el kernel automáticamente. Ya que el front end escencialmente es responsable de desplegar y editar las funciones, locual no requiere ninguna acción por parte del kernel.  Aunque se puede iniciar el kernel explicitamente mediante la secuencia de menus Evaluation ↦ Start Kernel ↦ Local,  lo usual es esperara hasta que haya algún trabajo para éste, como podría ser realizar un calculo aritmetico. Por ejemplo, escibrir 2*2 en una celda del tipo entrada y déspues presionar   la combinación Shift Enter, lo cual envia la entrada para su evalución por el kernel. Déspues de la evaluación el kernel regresa el resultado al front end, los cual crea una celda que contiene el resultado.

2*2

Nota: Probablemente se observe que la primera evaluación tome un tiempo mayor que las evaluaciones siguientes. Lo anterior es debido a que durante la primera evluación el kernel debe ser inicializado. 
Note además que en la opción Local de la secuencia de menus indica que el kernel a inicializar es el kernel local (el de la máquina en la que ejecutamos el front end). Es posible la ejecución de un kernel remoto o de múltiples kernels, pero eso está fuera del alcance del presente curso.

En algunas ocaciones es necesario parar o abortar una evaluación o en algunoas casos deterner el kernel. Salvo en los casos de bloqueo total del sistema, éstas operaciones no afectan el funcionamiento del front end y no deberían resultar en perdidas de información o trabajo. La secuencia de menus   Evaluation ↦ Quit Kernel ↦ Local  detiene la ejecución del kernel. 

Detener el kernel borra todas los símbolos definidos. Una vez que se reinicie el kernel será necesario volver a ejecutar todas las celdas previas. Si el nootebook está bien estructurado será necesario sólo volver a ejecutar unas cuantas secciones en lugar de todo el notebook.

Notebooks

Celdas

Los notebooks son un poco dependientes del sistema operativo, algunas combinaciones de teclas  y detalles de apariencia pueden variar, pero en general son muy similares. 
Por ejemplo éste documento está formado por secciónes y alguna de ellas contienen subseciones. Cada sección consiste de un conjunto de celdas(cells), de las cuales hay muchos tipos disponibles. Por ejemplo éste parrafo está dentro de una celda tipo text. En las celdas tipo input se ingresan los comandos destinados al kernel y el resultado es regresado en una celda del tipo output. Dependiendo del estilo de documento prodría haber disponibles  muchos otros tipos de celdas, tales como para títulos, secciones, subseciones, etc. La longitud vertical de una celda  es generalmente indicado por un corchete cuadraro en la parte derecha del notebook. El corchete más interno identifica una celda individual, mientras que los más exernos indican grupos de celdas. Se puede seleccionar una celda o un grupo de celda dando click en el corechete apropiado, lo cual se  mostrará un cambio visual.
El tipo de una celda puede modificarse, seleccionando la celda y después accediendo al menu  Format ↦ Style ↦ tipo de celda desaado

Los notebooks por lo regular se guardan con las celdad contraidas, lo cual permite observar la estructura lógica del documento. La celdas o grupo de celdas pueden contraerse  y expnadirse  dando doble click en el corchete correspondiente.

Navegación

Cursor

La forma del cursor depende de donde se encuentra. Dentro de una celda luce como una linea vertical con lineas horizontales más cortas en los extremos.  Se se da click dentro de una celda aparecerá una línea vertical parpadenado, la cual indica donde se insertará el texto. El cursor desaparece hasta que el ratón se mueve nuevamente. Cuando el cusrsor se posiciona entre celdas aparece una linea horizontal, esto indica que ahí es posible agregar una nueva celda. Para esto se da click y luego se presiona enter.

Ejercicio

Celda de ejemplo

Seleccione la celda de ejemplo utilizando el ratón, depues copiela utilizando ya sea el short cut o la barra de menus (Edit y copy).  Mueva el cursor y pegue la celda en diferentes posiciones.

Crear un NoteBook

Seleccionar File ↦ New para crear un nuevo  notebook sin nombre (untitled). 
Insertar un titulo por ejemplo "Mi Primer Notebook" seleccione  Format ↦ Style  ↦ Title.
Inserte otra celda y configurarla como subtitulo 
Inserte su nombre como una celda de texto. 
Inserte celdas de sección y subsección  en inserte algo de texto, observe como son agrupadas. 
Cambie el estilo del documeto en Format ↦ Stylesheet ↦ tipo de celda desaado 
Mantega el notebook de ejemplo abierto para si desea ahí realizar los ejemplos y no modificar el actual.

Guardar un notebook

Los notebooks son creados con nombres por default como untitled-1.nb, untitled-2.nb, etc. Se puedes especificar un nombre más descriptivo del mismo modo que en la mayoria de los sistemas de software mediante File ↦ Save As (o bien mediante el shortcut Shift Ctrl S) y especificando el nombre deseado.  Es altamente recomendable guardar periodicamente.

Paletas

Mathematica incluye un número importante de paletas que nos permiten introduccir seleccionar muchas funciones y símbolos matemáticos. Estás están disponibles en Palettes ↦ ...  Para uitilizartlas sólo es neceario poner el cursor donde se quiere insertar el símbolo o fuinción, después seleccionar la(s) paleta(s) deseadas y seleccionar lo que se desea insertar(al estilo del editor de ecuaciones de office).

Autocompletado de comandos y plantillas de argumentos

Se puede autocompletar los comandos en celdas "Input" utilizando los shortcuts  Ctrl-K o  Shift-Ctrl-K. Por ejemplo intente en una celda input lo siguiente: escribir Be seguido de Ctrl-K y se desplegará una lista de todos los comandos que cominezan con Be. Mientras que Shift-Ctrl-K despliega la lista de argumentos que recibe la función que ya se ha escrito, está lista deberá ser reemplazada por los datos sobre los que se pretende ejecutar la función

Ayuda

Documentation Center

Una de las fuentes más importantes de documentación es el Documentation Center que Mathematica provee como parte de su software.  Este es un navegador de ayda que puede ser accedido mediante  Help -> Documentation Center.  Sólo es necesarios introduccir un patrón de búsqueda (nombre de una función o palabra clave) y como resultado se obtiene un conjunto de tópicos relacionados.

Ayuda Rápida

La ayuda  rápida está definida para la funciones Build-Int o Simbolos Mathematica mediante ?symbol o bien una descripción más detallada mediante ??symbol.  Por ejemplo intente ?Fibonacci  y ??Fibonacci  en una celda Input.  Información acerca de funciones puede ser obtenida utilizando wildcards por ejemplo:  ?Plot* lista todas las fucnciones que comienzan con Plot.

Conveciones

Al igual que los lenguajes de porgramación, Mathematica también tiene un conjunto de convenciones  al momento de escribir "funciones".

Mathematica es  case - sensitive, lo que significa que una variable Y  diferente de una variable y. Todas las funciones definidas como parte del lenguaje comienzan con mayúsculas y tratan de tener un nombre descriptivo por ejemplo la función Factorial. En ocaciones los nombres son muy largos pero es fácil recordalos gracias a lo descriptivos de los mismos.

Reglas para nombrar símbolos(solo en las celdas del tipo input)

1. Deben comenzar con letras y pueden incluir números.
2. No pueden incluir espacios ni operadores como +,-,?,*,: etc.
3. No pueden ser nombres reservados o de funciones de Mathematica.  Por ejemplo errores comunes son utilizar N la cual está resevada para evaluaciones numericas o E  la cual es el símbolo para el exponecial e.
4. Los nombres que comienzan con $ indican parametros por defecto o del sistema. Por ejemplo $MachinePrecision indica el número de dígitos utilizado para representar numeros de punto flotante. 
¿Cómo puede determinar todo el conjunto de  estos parámetros?

Nombres Reservados

N	evaluación númerica
I	(Sqrt[-1])
E	La constante e
C	Constante de intregración
D	Función de Derivada Parcial

Inserción de caracteres especiales

En Mathematica se pueden introducir caracteres especiales como π utilizando  la secuancia EscpiEsc lo cual genera la letra griega pi. Sólo se presiona la tecal escape antes y después de escribir pi. 
Pruebe obetener los siquientes símbolos ω, Ω,  γ, Γ.

Asignación

En Mathematica al igual que en muchos otros lenguajes la asignación se hace mediante el operador = (nombre=expresión).

a=1+2

y=m*x+b

En el ejemplo anterior y representa la ecuación general de la recta. Las mismas asignaciones pueden ser realizadas mediante la funcion Set

Set[a, 1+2]

Set[y, m*x+b]

En Mathematica se puede realizar asignación de una expresión a multiples variables  mediante:

Nota: Una vez que un valor es asignado éste permanece hasta que es reseteado. Un error común es que un nombre ya asignado quiera ser utilizado como variable en otra expresión. Es una práctica recomendable borrar los símbolos una vez que se terminan de utilizar.  Los símbolos ya definidos están asociados con la sesión de Mathematica y no con un notebook en particular.  

Para borrar símbolos particulares

Clear[a,b,c,d]

Para borrar todos los símbolos definidos

ClearAll["Global`*"]

Operaciones Aritmeticas

({{Operación, Operador, Ejemplo, Función}, {negación, -, -a, Times[-1,a]}, {adición, +, a+b, Plus[a,b]}, {resta, -, a-b, Plus[a,-b]}, {multiplicación, * or espacio, a*b or a b, Times[a,b]}, {división, / o Ctrl/, a/b or (a/b), Times[a,Power[b,-1]]}, {potencia, ^ o Ctrl^, a^b or (a^b), Power[a,b]}, {raíz,  , a^(1/b) or (a^(1/b)), Power[a,Power[b,-1]]}, {factorial, !, a!, Factorial[a]}})

Delimitadores

({{Delimitador,  , Proposito, ejemplo}, {parentesis, ( ), agrupar, (a+b)*c}, {corchetes, [ ], funciones, Sqrt[a]}, {llaves, { }, listas, {a,b,c}}, {corchetes dobles, [[ ]] , particionar exprsiones, list[[2]]}, {coma, ,, separar elementos, {a,b,c}}, {punto y coma, ;, separar exptresiones, a*b; b-c}, {comillas, " ", cadenas, "Hello World!"}, {comentarios, (* *), documentación, (* Está función ... *)}})

Números exactos y aproximados

Mathematica distingue entre números exactos tales como enteros y  racionales, y números reales o aproximados. Cuando se introduce una entrada exacta, Mathematica regresará la entrada exacta como en el siguiente caso:

(1/2)

de igual forma en la expresión

(E^π)

la expresión es regresada sin evaluar  debido a que el símbolos E y π ambos representan números exactos(aunque irracionales), al contrario de una expresión como

1.0/2.0

en este caso se regresa un número real aproximado debido que el numerador y/o el denominador son ingresados como números reales aproximados y Mathematica los trata como tales. Siempre es posible obtener la representación aproximada utilizando la función N[expr]

8!/20!

N[8!/20!]

La expresión N[expr, n] puede utilizarse para especificar el número de dígitos que se quieren en la representación aproximada, aunque no siempre imprimime los n dígitos debido que Mathematica hace algunas consideraciones internas. Para especificar el número de dígitos es preferible utilizar las funciones ScientificForm o NumberForm.

ScientificForm[N[π],10]

NumberForm[N[π],10]

en lugar de

N[π,10]

Sustituciones

Estas nos permiten sustituir valores en una expresión previamente definida, sin alterar a la misma. Por ejemplo si definimos la siguiente ecuación

ecuacion= a x^2   +b x + c

y se quiere sustituir los valores de los coeficientes a, b y c se hace de la siguiente forma:

ecuacion /. {a-> 4, b->2, c->3}

El operador /. indica que se debe realizar un reemplazo en ecuacion siguiendo las reglas especificadas entre las llaves. Una regla se espesifica con el uso de ->, el cual generalmente es remplazado por Mathematica por ->.

Funciones estandar

({{exponencial, Exp[x]}, {logaritmo natural, Log[x]}, {logarirmo, Log[b,x]}, {trigonometricas , Sin,Cos,Tan,Sec,Csc,Cot}, {trignometricas inversas , ArcSin,ArcCos,ArcTan,}, {□, ArcSec,ArcCsc,ArcCot}, {hiperbolicas, Sinh,Cosh,Tanh,Sech,Csch,Coth}, {ihyperbolicas inversas, ArcSinh,ArcCosh,ArcTanh,}, { , ArcSech,ArcCsch,ArcCoth}})

Graficación de funciones

En Mathematica se pueden graficar fucnciones de una sola variable mediante el usdo de la función Plot[f[x],{x,xmin,xmax}],  donde f[x] puede ser una función propia de Mathematica o definida por el usuario.

Plot[Sin[Abs[x]],{x,-2π,2π}]

Graficas interactivas

Utilizando la función Manipulate se puedes crear gráficas interactivas. Está función agrega barras deslizadoras a la gráfica que nos permiten modificar las variables deslizandolas. El formato de la función es:
Manipulate[ Plot[ f[x], {x, (Subscript[x, i]),(Subscript[x, f])}],{(Subscript[a, 1]), (Subscript[a, 1i]),(Subscript[a, 1f]), (Subscript[da, 1])},...,{(Subscript[a, n]), (Subscript[a, ni]),(Subscript[a, nf]), (Subscript[da, n])}].  Donde cada ai es un coeficiente que puede modificarse. Por ejemplo:

Manipulate[Plot[ a*(x^2)+b*x+c, {x,-10,10}],{a,-5,5,1},{b,-5,5,1},{c,-50,50,1}]