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.
© Copyright 2024