Computación con Mathematica

Computación con Mathematica
Enrique Zeleny V.
Octubre 9-13 de 2000
5 sesiones de hora y media
Índice
I.
Motivación: ¿porqué utilizar un sistema de manipulación simbólica?
Breve historia de los sistemas de manipulación simbólica, clasificación.
La idea básica de Mathematica. Estructura de las expresiones. Modificando expresiones. Comparación con otros
lenguajes. Menús. Ayuda.
El lenguaje de programación. Programación basada en procedimientos, en listas, y en reglas. Paradigmas mezclados de
programación. Atributos. Tipos de asignaciones. Aparejamiento de patrones. Funciones puras y cálculo Λ. Modularidad.
Recursión. Mecanismos de evaluación. Diseccionando un programa. Ejemplos de programas.
II.
Cálculo simbólico. Integrales, series y productos (computación versus tablas). Encontrando raíces. Solución de ecuaciones y sistemas de ecuaciones. Ecuaciones diferenciales, ordinarias, parciales y no-lineales. Polinomios. Manipulación
algebraica. Funciones especiales.
III.
Cálculo numérico. Aritmética de alta precision. Raíces. Integración numérica. Sistemas de ecuaciones polinomiales.
Algebra lineal. Interpolación.
Gráficas. Gráficas primitivas y directivas. Tipos de gráficas. Graficación básica. Manejo de opciones, Gráficos avanzados. Animaciones. Importar y exportar gráficos en diferentes formatos, procesamiento de imágenes.
Algunas aplicaciones en matemáticas, mecánica, dinámica no-lineal, electromagnetismo, y relatividad.
IV.
Optimizando programas. Errores comunes. Ahorrando memoria. Checando resultados. Organizando un cálculo pesado.
Editando. Estructura de las expresiones: cajas. Ajuste fino de opciones. Hojas de estilo. Paletas. Exportar a HTML y
LATEX. Programación del Frontend.
curso.nb
2
Editando. Estructura de las expresiones: cajas. Ajuste fino de opciones. Hojas de estilo. Paletas. Exportar a HTML y
LATEX. Programación del Frontend.
V.
Manipulación de caracteres.
Archivos. Paquetes. Contextos. Estructura de un paquete.
Trabajando con diferentes máquinas al mismo tiempo. MathLink. Ligando Mathematica a un programa en Lenguaje C.
Computación en paralelo. Introducción. Conectando Kernels Remotos. Evaluación en paralelo básica. Concurrencia:
Manejando procesos en paralelo. Definiciones en paralelo. Memoria virtual compartida. Debugging. Comandos de
Mathematica en paralelo. Ejemplos de Parallel Computing Toolkit.
constante de Champernowne, autómatas celulares, el conjunto Mandelbrot...
Motivación: ¿porqué utilizar un sistema de manipulación simbólica?
Historia de los sistemas de manipulación simbólica
La idea básica de Mathematica.
Sistema capaz de realizar:
cálculo numérico
cálculo simbólico
gráficas
Lenguaje de programación
comunicación con programas externos
cadenas de caracteres
Editor
Interfases...
Características deseadas de un sistema tal:
Calcular no sólo con números, sino también con símbolos
Lenguaje de computación – Matemáticas
A partir de un pequeño número de principios poderosos se construye el sistema completo y estos principios se aplican tan ampliamente como es posible
Lenguaje diseñado para facilitarle las cosas a la máquina vs. Lenguaje diseñado de tal
manera que se parezca a la forma en que un humano piensa
curso.nb
3
Portable...
Todo el sistema está basado en una sola idea:
Todo es una expresión
Existe una sola notación:
e0 @e1 , e2 , ..., en D
e0@
f0@f1, g0@g1, g2, ..., gnD, ..., fnD,
e2, ..., enD
Plus@x, yD
Times@x, yD
Power@x, yD
List@x, yD
Mod@x, yD
Rule@x, yD
Integrate@x, yD
D@x, yD
Print@x, yD
Plot@x, 8x, 1, 5<D
InputForm@%D
curso.nb
4
Play@Sin@tD, 8t, 1, 5<D
InputForm@%D
NotebookCreate@D
InputForm@%D
NotebookGet@%D
Todos los comandos de Mathematica comienzan con mayúscula
Estructura de árbol
Α f @xD Hx + y@1D + zL + a
Plus@Times@\[Alpha], f@xD, Plus@x,y@1D,zD
D, aD
curso.nb
5
Plus
Times
Subscript
a
f
0
x
Plus
x
y
1
z
curso.nb
6
@@0DD
@@1DD
@@1,1DD
@@1,1,1DD
@@1,2DD
@@1,3DD
@@1,1,2DD @@1,2,1DD @@1,3,1DD@@1,3,2DD
@@1,3,2,1DD
Un solo tipo de operación:
Cambiar la estructura de una expresión
Reverse@8x, y, z<D
Map@ f , 8x, y, z<D
Drop@8x, y, z<, 1D
@@1,3
curso.nb
7
Times žž 81, 2, 3<
8x, y, z< . List ® Plus
Part@8x, y, z<, 2D
Rest@8x, y, z<D
Take@8x, y, z<, 2D
Thread@8x, y, z< ® 0D
Partition@Range@10D, 2D
Split@81, 2, 2, 3, 3, 3, 4, 4, 4, 4<D
Nest@ f , x, 5D
m=
a b
c d
f ž m
f ž m
ReplacePartAa + b + c + d, x2 , 3E
Operaciones fundamentales sobre objetos fundamentales
Pasar de lo simple a lo complejo
Por lo tanto:
Computar: Arte de manipular cosas
Mathematica es un sistema basado en reglas de reescritura
curso.nb
8
Cos@Α + ΒD . Α ® -2 Β
El lenguaje de Mathematica es similar al lenguaje LISP
Un lenguaje para comunicar ideas
El sistema estándar de Mathematica consiste de dos partes:
Ú The kernel—el cual realiza los cómputos.
Ù The front end—el cual maneja la interacción con el usuario y los notebooks.
Objetos atómicos
Symbol
String
Integer
Números:
Real
Rational
Complex
1
RRRRRR1a2b3ΑB5555,
2
meaning of
f
Función
Comando
Operador
Encabezado
Tipo de objeto
, "q", 3 + 2 ä, 2.5, m1F
x, y, ...
argumentos o parámetros
argumentos o parámetros
operandos
elementos
contenidos
meaning of
examples
Sin@xD, f@x, yD
Expand@Hx + 1L^2D
x + y, a = b
8a, b, c<
RGBColor@r, g, bD
Table 1
Forma
f @xD
f ž x
x  f
Nombre
standard form
prefix form
postfix form
Brackets
f 1 @ f 2 @xDD
f 1 ž H f 2 ž xL
Hx  f 2 L  f 1
El cliente siempre tiene la razón, el que paga manda
Las reglas definidas por el usuario tienen preferencia
curso.nb
9
Mathematica busca en definiciones más específicas antes que en las más generales
f[x_] := f[x - 1] + f[x - 2]
f[0] = f[1] = 1
f @0D
f @10D
Mathematica aplica repetidamente las reglas que sabe hasta que ya no es posible aplicar
más estas reglas
Ordenamiento de expresiones
z+ y+x
x + x2 + x3
Ÿ Mathematica escribe todas las expresiones en una forma canonica normal. Esto hace muchos más fácil comparar
varias expresiones.
The canonical ordering of expressions used automatically with the attribute Orderless and in functions such as
Sort satisfies the following rules:
Ÿ Integers, rational and approximate real numbers are ordered by their numerical values.
Ÿ Complex numbers are ordered by their real parts, and in the event of a tie, by the absolute values of their imaginary
parts.
Ÿ Symbols are ordered according to their names, and in the event of a tie, by their contexts.
Ÿ Expressions are usually ordered by comparing their parts in a depth-first manner. Shorter expressions come first.
Ÿ Powers and products are treated specially, and are ordered to correspond to terms in a polynomial.
Ÿ Strings are ordered as they would be in a dictionary, with the upper-case versions of letters coming after lower-case
ones. Ordinary letters appear first, followed in order by script, Gothic, double-struck, Greek and Hebrew. Mathematical
operators appear in order of decreasing precedence.
Cosas básicas
curso.nb
10
Print
Do
For
While
GoTo, Label
If
Which
And
In@12D
8 f @xD, BesselJ@3, xD<  StandardForm
8 f @xD, BesselJ@3, xD<  TraditionalForm
Binomial@m, nD  TraditionalForm
Formas normales
8rn , a + x, f @xD<
8rn . n ® 1, x + x, D@x, xD<
Tipos de asignaciones
x = 3;
OwnValues@xD
f @x_D = x2 ;
DownValues@ f D
Ω : Im@ΩD = 0;
UpValues@ΩD
curso.nb
11
UpValues@ImD
d@xD@1D = 2
SubValues@dD
DefaultValues@TimesD
Modularidad
Variables locales
t = 17
Module@8t<, t = 8; tD
t
Module@8t = 8<, t = t + 1; tD
Module@8t<, t = 8; Print@HoldForm@tDD; tD
t = 17
w@x_D := With@8t = 18<, t + Sin@tDD
w@xD
Constantes locales
With@8t = 8<, Print@HoldForm@tDD; tD
t
With@8t = 8<, t = t + 1; tD
a =.; s =.
curso.nb
12
Valores locales
x2 + 3
Block@8x = a + 1<, %D
x
Block@8t = 8<, Print@HoldForm@tDD; tD
t =.
b@s_D := Block@8t = 8<, t = s + t + 1; tD
b@sD
b@tD
b@tD  Trace
m@s_D := Module@8t = 8<, t = s + t + 1; tD
m@sD
m@tD
m@tD  Trace
¿Que sistema debo usar?
Ver /zip/Miscellaneous/ncrunch.pdf
curso.nb
El lenguaje de programación
Encabezados, Formatos
Tipos de programación:
Listas
Reglas
Aparejamiento de Patrones
Cadenas de caracteres
Atributos
Cálculo Λ
Ejemplo
NestWhile y NestWhileList, generalizaciones de FixedPoint
Cálculo simbólico
Cálculo numérico
Gráficas
Optimizando programas
Editando
Ahorrando memoria
Checando resultados
Errores comunes
Pensar simple
Paquetes
13
curso.nb
14
Manipulación de caracteres.
Computación en paralelo
Slaves
Etc.