Introducción a Mathematica (Wolfram Language)

Guillermo Sánchez (http://diarium.usal.es/guillermo).

Dpto de Economía e Historia Económica. Universidad de Salamanca.

Última actualización: 2019-03-27

Los ejemplos utilizados en esta presentación proceden la mayoria del libro del libro Mathematica Beyond Mathematics: The Wolfram Language in the Real World .1st Edition. Chapman and Hall/CRC.
Para mas información y para acceder a otras presentaciones realizadas por el autor visite: 
http://diarium.usal.es/guillermo/mathematica/

$Version

¿Que es Mathematica ?

Mathematica en sus primeras versiones era un programa especialmente orientado al cálculo simbólico y numérico. Con las versiones más recientes se ha convertido en un sistema integral que une la potencia de cálculo con la versatilidad y sencillez que permite ser utilizado en cualquier campo: Ingeniería, economía, física, biología, matemáticas, ciencias de la computación, etc. Esto se ve facilitado por la capacidad de importar y exportar en una gran variedad de formatos, incluso permite la exportación directa desde sitios web y la conexión a programas externos.   De hecho se trata de un lenguaje de programación denominado Wolfram Langueje: https://www.wolfram.com/language/ .

Antes de nada debe asegurarse que tiene el programa instalado y con la licencia activada, si no lo está el propio programa de instalación le guiará para activarla.

Para iniciar el programa, en el menú de inicio de programas de su sistema, pulse sobre el icono Mathematica. (Normalmente hay dos iconos elija Mathematica y no Mathematica Kernel).

La ventana de bienvenida contiene varios hiperenlaces. Probablemente pueda resultarle muy útil hacer un recorrido por ellos

Mathematica dió un salto revolucionario con la introducción de lo que vamos a denominar la forma lingüística, que consiste en escribir de forma natural la operación o pregunta  (en un inglés básico) que queremos resolver y Mathematica intentará darnos la respuesta.

En este ejemplo el usuario quiere resolver la  ecuacion 3 (x^2) + 2 x - 4 = 0, y escribe casi literalmente lo que busca (la limitación, por ahora, es que debe estar en inglés)  y Mathematica muestra: a) La sintaxis correcta en Mathematica y b) El resultado exacto y la aproximación decimal.

El programa esta dotado de una muy buena ayuda, de hecho a los manuales completos se puede acceder a través de la ayuda. Tambien es accesible desde internet en http://www.wolfram.com/learningcenter/tutorialcollection o http://reference.wolfram.com/mathematica/guide/Mathematica.html. Para comenzar una buena idea es explorar la ayuda para ver como está estructurada. Una explición on line en forma de screencasts es accesible en:

http : // www.wolfram.com/broadcast/screencasts/helpsystemoverview/

Por ejemplo :

2+2

Le aparecera la barra de  abajo que le ofrece varias posibilidades de continuación. Pulse sobre  more... y elija una de las opciones que se le ofrece.

Si no tenemos una idea clara de la función que queremos utilizar o la recordamos vagamente podemos utilizar la barra de busqueda  en la barra de Herramientes:Help.>Wolfram Documentationescribiendo (en inglés) con dos o tres palabras lo que buscamos.

Aplicaciones para la web

No lo vamos a mostrar en esta presentacion pero lo que desarrollemos en Mathematica podemos convertirlo para su uso en la web. Ejemplo: http://oed.usal.es/webMathematica/CursoCeroEconomiaEmpresa/

¿Que es un Notebook?

Notebook de Mathematica es un documento completo e interactivo que combina texto, tablas, gráficos, cálculos y otros elementos.

Un elemento fundamental de Mathematica  es el notebook o cuaderno. Este documento es un Notebool.

Además de las posibilidades de cálculo un aspecto importante es conocer el "interface"  del  Mathematica.  La interacción con el Mathematica se realiza a traves del Front End, y este presenta los resultados en un un "Mathematica notebook" (notebook podria traducirse por cuaderno pero prefermos mantener la denominación original). Esto que esta mirando en este momento es un notebook.

Mathematica notebooks tienen como proposito la presentación de documentos que incluyan formulas, texto, gráficos, tablas animaciones y todo ello integrado en único documento o fichero interactivo (con extensión *.nb).

Cada documento esta estructurado en celdas. Las celdas se definen en diferentes tipos: Celdas de título, de sección, de entradas, de salidas, de gráficos, etc) .

En la barra de menú elija File ▶ New  ▶ Notebook.nb. Se creará Notebook o cuaderno en blanco que es el elemento fundamental para interactuar con Mathematica. También puede crearlo en la pantalla de bienvenida pulsando en la esquina superior izquierda en el icono Notebook. Un  notebook se nos muestra inicialmente como una pantalla en blanco. En él podremos ir escribiendo el texto y las instrucciones que deseemos. Procure desde el principio salvarlo. Puede hacerlo como en la mayoría de los programas en la barra de menu: File ▶Save As ▶ “Nombre del fichero” (Mathematica le asignará por defecto la extensión .nb). Desde el inicio conviene ver la barra de herramientas, para ello, en la barra de menú seleccione Window y marque Show Toolbar. Fíjese en el recuadro desplegable en la izquierda de la barra de herramientas, que denominaremos: recuadro de estilos. Nos será útil más adelante.

Al comenzar a escribir, se crea una celda identificada por una marca en forma de corchete (]) de color azul ("marca de celda") que aparece en la derecha del notebook. Cada celda constituye una unidad con sus propias propiedades (Formatos, celda evaluable, etc). Para ver qué tipo de celda es, posicione el cursor dentro de ella o en la marca de celda. En recuadro de estilos aparece indicado el tipo de celda (Text, Input, Title ...). En este mismo recuadro podemos variar el formato de la celda. Escriba en una celda un texto y pruebe a variar el estilo de la celda.

Esta celda es de tipo Program.

Los Notebooks se organizan automáticamente como una jerarquía de celdas. Podemos cerrar los grupos de celdas de modo que sólo veamos los encabezamientos.

Este es un texto ordinario. Prueba a modificar el formato de esta celda.

Para que se calculan las expresiones marcaremos la celda a evaluar (que normalmente debe ser tipo Input) y pulsaremos [⇑]+[Entrar] o [Entrar] (en el teclado numérico)

Debajo se muestra  una celda tipo input  seguida de una de salida.

1+1

Trabajando con estilos

Cuando se crea por primera vez un notebook Mathematica asigna un estilo que denomina Default (por defecto). Más adelante veremos como elegir otros estilos. En el estilo Default, cuando se crea una celda nueva, ésta es de tipo Input, que es el que normalmente se utiliza para realizar cálculos. En una celda tipo "Input" una vez introducido un contenido, al ser evaluado generará una celda tipo salida ("Out") donde verá el resultado del cálculo.

Con  Format ▶ Stylesheet se puede elegir el estilo general del notebook (cuaderno) y Format▶Style para elegir el formato de una celda concreta. Tambien podremos dentro de un mismo estilo elegir el ambiente de trabajo apropiado Format▶Screen Environment.

Prueba a modificar el estilo de este notebook y el formato de esta celda.

Un pequeño truco: Las celdas a evaluar las definiremos tipo "Input" que al ser evaluadas (salvo que utilicemos ;) generaran la salida correspondiente. Si pulsamos sobre la celda  Out[] se escondera el input, esto puede ser muy util para la elaboracion de documentos

Plot[Sin[x],{x, 0, 10}]

Otro truco : Dentro de una celda de cualquier estilo distinto de input podemos hacer que la función se ejecute utiliando (May+Crt +Enter o Evaluate in place). Ejemplo: ∫(x^3)dx  =((x^4)/4)

Escriba un texto enriquecido

Aprovecha las posibilidades que da la palete Writing Assistant .

Puede ejecutar una funcion dentro de un texto usando Evaluate in Place (pruebe a ejecutar la segunda parte de esta iguadad): ∫(x^2)dx = ∫(x^2)dx.

Si desea alinear unas ecuaciones respecto al símbolo igual: en la paleta Writing Assistant, elegir Math Cells ▶ Equal Symbol Aligned Math Cell

({{({{a+b=c}, {a=c-b}})}})

Primeros pasos

Las instrucciones escritas en una misma celda se ejecutarán secuencialmente. Si al final de una instrucción escribimos punto y coma ";", dicha instrucción se calculará pero los resultados de salida no se mostrarán. Esto es útil para evitar que se muestren resultados intermedios que no necesitamos ver. En una celda a evaluar (input) podemos incluir uno o varios comentarios, escribiéndolos de la siguiente forma:  (* comentario *). No obstante, se recomienda incluir los comentarios en celdas diferentes en formato texto, recuerde que ello puede hacerlo eligiendo Text  en el recuadro de estilos.

Para abrir una nueva celda  basta con posicionar el curso debajo de la celda en la que estemos y entonces podemos comenzar a escribir en la nueva celda. También se puede crear una nueva celda, en el punto donde esté el cursor, pulsando [Alt]+[Entrar].

Las expresiones pueden escribirse expresiones sin necesidad de recurrir a símbolos especiales utilizando la forma: InputForm. Es muy similar a la utilizada por otros lenguajes de programación, como C, Fortran o Basic. Por ejemplo: multiplicación = " * " (El símbolo * podemos substituirlo por un espacio en blanco), división = " / ", suma = " + ",  y resta " = " ,  potencias =" ^ ", raíz cuadrada de a = " Sqrt[a] ".

(4*5)/5 + Sqrt[4] - 3^2

La celda Input anterior está escrita en la forma input, podria haberlo introducido utilizando una de las Paletas (table de herramientas  ▶  Paletas entonces los datos se intrucen en el denominado formato estándar (StandardForm). Si prefiere puede convertir la celda anterior a formato estandar. Posicione el cursor en la marca de celda y en la barra de menú elija: File▶ Conver To ▶. Entonces pulse en  StandardForm.

((4 5)/5)+(Sqrt[4])-(3^2)

Es el cálculo simbólico lo que hizo popular, inicialmente en el mundo académico, a Mathematica. Como ejemplo, en una celda input escriba (ayúdese de una paleta para trascribir el contenido) en la forma estándar lo siguiente y ejecútela.

(∂_(x,y))Sin[x (Sqrt[y])]

El cálculo anterior también podemos mostrarlo en  notación clásica de las matemáticas. En Mathematica se denomina TraditionalForm. Copie la celda input de arriba en una nueva celda y en la barra de menú eleja Cell ▶Convert To ▶ TraditionalForm. Añada // TraditionalForm  para indicar que el resultado también se nos muestre en notación tradicional. Observe que la marca de celda aparece con un corchete serpenteado. El mismo menú podrá utilizarlo para conversión a otras formas.

(((∂^2)sin(x (Sqrt[y])))/(∂x  ∂y))//TraditionalForm

La forma tradicional anterior ocupa muchos recursos de ordenador. Además puede que le dé problemas de conversión si el fichero es leído en una versión anterior de Mathematica. Es recomendable usar la forma StandardForm o InputForm y reservar la tradicional para aquellos casos en los que se requiera editar el documento en alta calidad.

El formato libre y otras formas para empezar a utilizar Mathematica rapidamente

El formato libre

En  Mathematica es posible introducir los datos en un formato muy flexible (que vamos a llamar lingüístico) consistente en escribir de forma natural la operación que queremos realizar. La limitación más importante es que debe estar escrito en inglés. Para ello escriba “=” al inicio de la celda (tipo input) y observará que aparece  . Entonces escriba la operación que desea realizar. Su instrucción se convertirá automáticamente a notación estándar de Mathematica, y a continuación se mostrará la solución. Veamos algunos ejemplos.

Escriba lo que quiere (formato lingüistico) (EN UNA CELDA TIPO INPUT use doble == o Shift+Enter). Tome la salida como plantilla y adaptela a sus necesidades.  Puede probar con otras expresiones equivalentes (graph of the sine of x, visualize the sine of x, ..) y obtendrá el mismo resultado.

Si pulsa en el símbolo + que aparece en la esquina superior derecha, se mostrará información adicional sobre la operación realizada.

También puede escribir la operación colocando el cursor al inicio de la celda tipo input. Entonces, en la barra de menú,  elija Insert ▶  Inline Free-form Input (o, en algunos teclados,  [Ctrl]+[=] ) o y se mostrará la entrada en la notación estándar de Mathematica.

En el siguiente ejemplo utilizamos el formato “Inline Free-form Input”, observe que ademas de darnos el resultado nos muestra la entrada en notación Mathematica que podemos copiar y utilizar como plantilla.

LinguisticAssistant

Si lo desea pulse en la punta de flecha que aparece en el recuadro superior derecho y sólo se mostrará la entrada en la notación estándar de Mathematica.

Además de las formas que se han descrito para definir el tipo de celda existe otra que consiste en poner el cursor inmediatamente tras la celda en la que quiere añadir una nueva celda. Verá un “+“ a la izquierda. Pulse en él, y elija el tipo de celda que quiere definir: Input,    ,  , Text, etc.

La forma linguística generalmente funciona bien cuando se trata de instrucciones breves en inglés. En la práctica resulta muy útil cuando no se conoce la sintaxis específica de Mathematica para realizar una determinada operación.

Pulse sobre la salida y obtendra el imput de Mathematica con la sintaxis adecuda.

Puede usarlo mas allá de las matemáticas.

Con Insert->  Inline  Free-form podemos usar el formato linguistico en expresiones.  Por ejemplo escribe: “40 random numbers” dentro de una funcion standard de Mathematica como ListPlot

ListPlot[LinguisticAssistant]

Para acceder directamente a WolframAlpha escriba en una celda tipo input un doble  igual, esto es ==. Entonces los calcules se realizaran en el servidor de WolframAlpha, de hecho puede accederse diretamente desde un navedador.

Entradas con el asistente de entrada contextual

Tal  cual escribimos una entrada se van mostrando las funciones más frecuentes que empiezan por las mismas letras. Para una misma función se nos muestra varias plantillas relacionadas (Crt+May+K).

({{Auto completion, Function Templates, Dynamic Highlighting}, {, , }})

Un código de colores permite detectar errores de sintásis (segun vaya escribiendo vera como le va desplegando la ayuda)

Plot3D[Sin[],{x,(Subscript[x, min]),(Subscript[x, max]),{y,(Subscript[y, min]),(Subscript[y, max])}, Opti]

El uso de peletas (Palettes) es de gran ayuda, especialmente cuando queremos que las entradas se parezcan a la notación habitualmente utilizada en matematicas

Para facilitar la escritura Mathematica dispone de Palettes (paletas). Estas se cargan desde el menú principal pulsando en Palettes y seleccionando una de las disponibles.

Utilizando una paleta o los atajos de teclado escriba lo que se muestra en la celda de abajo y ejecútela. Recuerde: un espacio en blanco es equivalente a un símbolo de multiplicación, es decir en vez de 4×5 puede escribirse  4 5. También puede utilizar atajos de teclado. Los más útiles son: subíndice [Ctrl]+[ _ ] , superíndice [Ctrl]+[^] o [Ctrl]+[6], fracción [Ctrl] + [/] y radical [Ctrl]+[2] (Dependiendo de la configuración de su teclado puede que para utilizar alguno de los símbolos anteriores tenga que anteponer [⇑], por ejemplo: superíndice [Ctrl]+[⇑]+[^]).

((4 5)/5)+(Sqrt[4])-(3^2)

Como ejemplo, en una celda input escriba (ayúdese de una paleta para trascribir el contenido) en la forma estándar lo siguiente y ejecútela.

(∂_(x,y))Sin[x (Sqrt[y])]

El cálculo anterior también podemos mostrarlo en  notación clásica de las matemáticas. En Mathematica se denomina TraditionalForm.

Copie la celda input de arriba en una nueva celda y en la barra de menú eleja Cell ▶Convert To ▶ TraditionalForm. Añada // TraditionalForm  para indicar que el resultado también se nos muestre en notación tradicional. Observe que la marca de celda aparece con un corchete serpenteado. El mismo menú podrá utilizarlo para conversión a otras formas.

(((∂^2)sin(x (Sqrt[y])))/(∂x  ∂y))//TraditionalForm

La forma tradicional anterior ocupa muchos recursos de ordenador. Además puede que le dé problemas de conversión si el fichero es leído en una versión anterior de Mathematica. Es recomendable usar la forma StandardForm o InputForm y reservar la tradicional para aquellos casos en los que se requiera editar el documento en alta calidad.

Ideas básicas

Las funciones Mathematica siempre empiezan con una letra en mayuscula.

Los argumentos se escriben entre corchetes.

N[Pi, 4]

La estructura básica de Mathematica es la lista. Los elementos de una lista pueden ser números, variables, funciones, cadenas, sublistas o cualquier combinación de ellas; se escriben dentro de llaves {} y van separados por comas. Si nos sentimos cómodos con la terminología clásica de matemáticas podemos interpretar una lista sencilla como un vector, una lista bidimensional (lista con sublistas) como una matriz, y una lista de tres o más dimensiones como un tensor.

Debajo definimos una lista formada por tres sublistas.

lista={{2, 3, 6}, {3,1,5},{4,3,7}};

La misma lista anterior podemos mostrarla en notación tradicional (añadiendo //TraditionalForm) y vemos que adopta la forma de matriz, pero no debemos olvidar que internamente Mathematica la trata como una lista.

lista//TraditionalForm

En muchas funciones de Mathematica los datos sobre los que aplican se estriben como una lista. En el ejemplo se cálcula la media de un conjunto de valors

Mean[{23, 4,7}]

A veces es conveniente ponerle un nombre a un valor o expresión para utlizarlo mas adelante. Es lo que se denomina asignación.

a = 3

b = 5

Observe que al utilizar una expresión donde aparecen a y b, se reemplazan por las asignaciones antes realizadas.

a Cos[b]

Observe que en el ultimo caso Cos[5] no se cálcula, es asi pues Mathematica  solo calcula si el resultado es exacto y Cos[5] no lo tiene (pues tiene infinitos decimales). Si quiere la aproximación decimal añada al final //N o escriba N[ ]

a Cos[b]//N

N[a Cos[b]]

Utilize la ayuda para investigar las distintas funciones y argumentos utilizados. Para ello lo mejor es marcar la función con el cursor y pulsar F1, observará que ademas de a la sintasis de la función puedes acceder a ejemplos, a otras relacionadas y a tutoriales

Escribe una funcion y pulse Crt + May + K , observe como se muestran los argumentos básicos de la función

Plot

Pruebe a escribir parte de una función y pulsa  Crt + K , se desplegara un conjunto de funciones donde aparece esas letras.

Find

Otra forma de obtener ayuda es (suponga que quiere calcular un minimo, pruebe a busca funciones que incluyan “mini”)

?*Mini*

Pulse en alguna de las desplagadas y obtendra una breve ayuda de cada una de ellas, eso le permitira decidir cual utilizar.

Para ver directamente las opciones de una funcion la forma es

Options[FindMinimum]

Funciones

Mathematica dispone de miles de funciones que a su vez pueden ser combinadas para construir funciones más complejas

Mathematica permite definir funciones de forma muy parecida al uso habitual en matemáticas. La sintaxis habitual en el caso de una función de una variable es: f[x_]:= expr(x).  El blank ("_") junto a la variable sirve para especificar lo que sería la variable independiente de la función.

f[x_]:= 0.2 Cos[0.3 (x^2)]

Ahora podemos asignar un valor a la variable independiente y obtendremos el valor de la función.

f[3]

Aqui la utilizamos para representarla

Plot[f[x],{x, 0, 10}]

El mismo concepto puede generalizarse a varias variables. En este ejemplo utilizamos la función f(x) antes definida.

g[x_, y_]:= f[x]2.3 Exp[- 0.3 (y^2)]

Ahora podemos presentar el resultado en un gráfico 3D para lo que podemos utilizar Plot3D. Utilizamos la opción PlotRange->All para mostrar los puntos del rango para el que se cálcula la función, elimine la opción para comprobar lo que sucede.

Plot3D[g[x, y],{x,-2π,2π},{y,-2π,2π},PlotRange->All]

Función

f(x_,y_)=(Sqrt[log(y-(x^2))]);

Dominio

FunctionDomain[f[x,y],{x,y}]

f(x_,y_)=(((x^2)y)/(((y-(x^2)))^2));

Plot3D[f[x,y],{x,-2,2} ,{y,-2,2},AxesLabel->{"x","y","z"} ]

(Limit2Arg[f(x,y), {x,y}, {0,0}])

Dada la función:  f(x,y,z)={Log(x y) ,x y z, (x^2)}. Hallar la matriz jacobiana en el punto (e, 2, 1)

D[{Log[x y], x y z, (x^2)},{{x,y,z}}]/.{x-> e, y-> 2, z-> 1}

Manipulate

Entre las mejoras de las últimas versiones de Mathematica está la incorporación de instrucciones que permiten operar dinámica e interactívamente. Destaca la instrucción Manipulate, como podemos comprobar en los siguientes ejemplos.

Escriba la sentencia de abajo. Observe que se crean barras deslizantes para cada uno de los parámetros que se definan. Pruebe a pulsar sobre el símbolo + incluido en la salida para mostrar los botones que crea Manipulate.

Manipulate[Plot[Sin[frequencia x + alfa],{x,-2π,2π}],{frequencia,1,5}, {alfa,0,Pi/2}]

Tratamiento de datos: Listas, Importar, exportar.

La introduccion de las siguientes funciones permite definir como directorio Data (u otro nombre), que colgará de nuestro directorio de trabajo, desde el que importar y exportar ficheros sin escribir la ruta. Observe que la celda de abajo está definida como celda de Iniciación, eso implica que siempre que se ejecutará al inicio de este notebook.

SetDirectory[FileNameJoin[{NotebookDirectory[],"Data"}]]

Las listas

Un concepto fundamental de Mathematica son las listas (List). Las listas o dominios se escriben entre llaves con los elementos separados por comas: {a, b, c}. Mathematica convierte los datos importados a formato de lista.

Creamos una lista de sublistas utilizando números aleatorios.

mat=RandomInteger[10,{5,5}]

Una lista de sublistas podemos interpretarla como una matriz. Si se desea podemos representarla como tal.

MatrixForm[mat]

Se dispone de bastantes funciones para manejar listas (puede consultarse en la ayuda: guide/ListManipulation y  guide/MatrixOperations). Por ejemplo, aquí extraemos el segundo elemento de la primera sublista (Para extraer empleamos [[i,j]] que extrae de la lista i el término j)

mat[[1,2]]

En el ejemplo calculamos la media de cada sublista.

Mean[mat]

Observe que en Mathematica todos las salidas (realmente todo) son listas.

sol= Solve[3 x^2 - 3 x -2 ==0, x]

Extraemos la primera solución

sol[[1]]

Importar

To import files use Import["path/file.ext", "Elements"] where file is the name of the file you want to import. If the file is in the Data directory, previously defined, you only need to type the file name. If it is located somewhere else you will need to enter the complete path (remember that you can use Insert ▶ File Path...). You can also import files directly from the Internet. To do that, specify the desired URL in Import[“http://url”]. As an option you can import just part of the file, the one defined by Elements.

If your computer uses a non-American configuration remember that Mathematica uses the dot “.” as a decimal separator and the comma “,” to distinguish between list elements. If you have another configuration you may have problems when importing files. The program enables the configuration of the format in Edit ▶ Preferences... ▶ Appearance to suit the user needs. Nevertheless, it is better to modify the operating system global settings so that all programs use the same setup. In Windows that can be done by selecting in the Control Panel  “.” as decimal separator and the comma “,” as list separator. In OS X, the same can be done by going to System Preferences... ▶ Language & Region ▶ Advanced...

Next, we import an xls file containing data about the atomic elements. Note that the program can figure out the type of file from its extension. In this case it’s an xls file, and the program identifies it as a Microsoft® Excel file.

Import["ExampleData/elements.xls"]

Last[Import["http://www.portalminero.com/pages/viewpage.action?pageId=31981855", "Data"]]

Since Mathematica 10 there’s a new function named SemanticImport that detects and interprets the type of objects imported.

We import sales data for different cities and dates.

sales=SemanticImport["ExampleData/RetailSales.tsv"]

If you move the cursor over the table above, you will see that the program identifies whether the data points are dates or cities, with the later ones displaying additional information. In Mathematica, objects with these properties are called entities (Entity) and have certain characteristics that we will explore later on. For example: If you hover the mouse over Boston, the following message will appear on the screen: Entity[“City”, “Boston”, “Massachusetts”, “UnitedStates”], that is, the data point refers to the city located in Massachusetts (USA) and not to other less famous Boston cities that might exist. To find the first city in the table type the following:

sales[1,"City"]

Since it’s a city you can directly obtain information about it, e.g. its population (Remember that % refers to the last output).

%["Population"]

Exportar

La función para exportar datos es

Export["file", expr, format]:  exporta el contenido de expr hacia el fichero file en formato format especificado.

Los formatos en los que pueden ser exportados los datos es muy amplia.

$ExportFormats

Si no especificamos la ruta hacia la que exportamos , por defecto los ficheros se copiaran en nuestro directorio de trabajo (/user/Documentos)

gr=BarChart3D[{RandomInteger[7,{4}],RandomInteger[{-7,-1},{4}]},ChartElementFunction->"Cone"]

Exportamos el grafico como una imagen en formato jpeg

Export["exportedimage.jpg", gr,"JPEG"]

Estadística

Datos computables

Mathematica incorpora funciones que permiten acceder a bases de datos formateadas, tiene la forma: Funcion[“nombre o Entity”, “propiedad”], o Funcion[“nombre” o “Entity”, {“propiedad”,...}]  donde una Entity es una entidad identificada por un nombre: País, Elemento, Isótopo. ... y propiedad es información asociada a la entidad.

Debajo se muestra la último valor de las acciones de Google en el momento de ejecutar la sentencia.

FinancialData["GOOG"]

Se compara la evolucíon del cambio acumulado habido de la cotización de Google comparado con el S&P 500:

DateListPlot[{FinancialData["GOOG","CumulativeFractionalChange",{2015}],FinancialData["SP500","CumulativeFractionalChange",{2015}]},Joined->True,Filling->Bottom]

Distribucion de la poblacion española por municipios

Para ver las propiedades disponibles para una función concreta podemos usar la ayuda o escribir:

CityData["Properties"]

Se pretende analizar cómo se distribuye la población española por municipios según su número de habitantes. No pretende ser un estudio riguroso, simplemente es un esbozo de cómo podríamos afrontar un estudio estadístico.

CityData["Salamanca", "Population"]

La funcion CityData[{All, "Spain"}] nos dara los nombre de todas los municicipios  españolae, podemos ahora aplicarla para obtener la poblacion de totos los municipios españoles

poblacionciudades=CityData[#, "Population"]& /@ CityData[{All, "Spain"}];

Length[poblacionciudades]

A continuación hacemos un primer análisis de los datos para lo que suele ser muy útil su representación gráfica. Calculamos los estadísticos más comunes.

{Mean[#],StandardDeviation[#],Skewness[#],Kurtosis[#],Quantile[#,.6],InterquartileRange[#]}&[poblacionciudades]//N

Observamos que éstos presentan una fuerte asimetría. Podemos verlo mejor si los representamos en escala logarítmica:

ListLogPlot[poblacionciudades]

Construimos un histograma. Utilizamos Manipulate para ver cómo se comportan los datos en función de los datos que eliminamos por arriba y por abajo.

Manipulate[Histogram[Drop[Drop[poblacionciudades,a],-b]],{{a,500}, 0, 1000, 10}, {{b,500}, 0,1000,100},SaveDefinitions->True]

Una primera conclusión es la fuerte asimetría de la distribución de la población española; en particular el elevado número de municipios con una población muy pequeña.

FindFormula

Generamos datos con un ruido

SeedRandom[4311]

data =Table[{x, -x+2Sin[x]+RandomVariate[NormalDistribution[0, 0.2]]}, {x, RandomReal[{-10, 10}, 100]}];

Los visualizamos

ListPlot[data]

Los ajustamos. la funcion de ajuste se delecciona automaticamente

FindFormula[data,x,5,All]

fit=FindFormula[data, x, 1]

Show[ListPlot[data], Plot[fit,{x, -10, 10}, PlotRange->All]]

FindDistribution

Generate data sampled from an exponential distribution:

𝒟=ExponentialDistribution[1];
data=RandomVariate[𝒟,1000];

Find the best distribution from the data:

estimated𝒟=FindDistribution[data]

Compare the PDFs for the original and estimated distributions:

Plot[{PDF[𝒟,x],PDF[estimated𝒟,x]},{x,0,10},PlotLegends->{"𝒟","e𝒟"}]

Esperanza de vida en España

Queremos calcular la distribución de la esperanza de vida del conjunto de la población española partiendo de los datos de la esperanza de vida de hombres y mujeres por separado. Se asumirá que la esperanza de vida sigue una distribución normal y se supondrá que las condiciones del presente son aplicables a su proyección futura. Para la desviación típica de la esperanza de vida para edades avanzadas utilizamos (deducido de: http://www.ine.es/): 6.7 años para hombres y 6.9 años para mujeres.
Los datos de la esperanza de vida los vamos a obtener con CountryData.

MixtureDistribution[{(Subscript[w, h]),(Subscript[w, m])},{N[(Subscript[v, h]),(Subscript[s, h])] ,N[(Subscript[v, m]),(Subscript[s, m])]}]

{vhombre, vmujer}=QuantityMagnitude[Outer[CountryData,{"Spain"},{"MaleLifeExpectancy","FemaleLifeExpectancy"}][[1]]]

{pophombre, popmujer, poptotal}=QuantityMagnitude[ Outer[CountryData,{"Spain"},{"MalePopulation","FemalePopulation","Population"}][[1]]]

{fh, fm}={pophombre/poptotal, popmujer/poptotal}

esperanzavida=MixtureDistribution[{fh,fm},{NormalDistribution[vhombre,6.7],NormalDistribution[vmujer,6.9]}];

Plot[PDF[esperanzavida,x],{x,50,110},Filling->Axis]

La probabilidad de que una persona, hombre o mujer, muera con 80 años o más es:

Probability[x≥80,x\[Distributed]esperanzavida]

Si consideramos exclusivamente los varones, esta probabilidad es considerablemente menor:

Probability[x≥80,x\[Distributed]NormalDistribution[vhombre,6.7]]

China Population Forecast

We can use the free-form input to import data. In this example, we use it to forecast China’s population.

Time series data can be fitted using TimeSeriesModelFit.

tsm=TimeSeriesModelFit[%]

Now, the evolution of China’s population over the next 10 years can be estimated using TimeSeriesForecast.

DateListPlot[{tsm["TemporalData"],TimeSeriesForecast[tsm,{10}]},PlotLegends->{"Historical","Forecast"},PlotLabel->Style["Chinese Population",Bold]]

Reglas fundamentales. Resumen

1. Funciones: Mayúsculas en los nombres de funciones: Cos, Sin.

Mathematica dispone de miles de funciones. Si no conocemos el nombre exacto de una función pero sabemos las letras por las que empieza tecleelas en una celda tipo Input, pulse  [Ctrl] + [K]  (o [k]) y se desplegarán las instrucciones de Mathematica que empiezan por esas letras. Tambien puede utilizar la entrada en formato linguistico o la barra de herramientas.

2.  [  ] : Argumentos, lo que se desea calcular

D[E^Cos[2 Pi x],x]

La misma función escrita utilizando la paleta (utilizando el formato estandar de Mathematica) :

(∂_x)(E^(Cos[2 π x]))

Para escribir π , e se utilizan símbolos especiales (e no es lo mismo que e, e es una letra sin otro significado) para lo que emplearemos la paletas o  podemos escribir Pi por π y E^ o Exp[] por e

3.  {  } - listas o rangos

list={3, Pi/2, 4 Pi};

Sin[list]

4.  Opciones - Las funciones incluyen tienen opciones (si no se indican el programa usa las que tiene por defecto). Una forma de ver directamente las opciones de una función es Options[func]

Options[Plot]

Plot[ Sin[2 x + 1], {x, - 2 Pi, 2 Pi},Filling->Bottom]

Recuerde: Todas las funciones incluidas en Mathematica empiezan por mayúscula: Log; los argumentos van entre corchetes Sin[2 x + 1]; las listas van entre llaves: {a1, ..., a2}, los rangos se dan como listas: Plot[x, {x, 0, 2 Pi}] ; los paréntesis se utilizan para agrupar operaciones: (Log[a x] + Sin[b x])/(a - b); en las funciones se pueden incluir opciones Plot[..., opts->a].