Publicado el 25 de Mayo del 2017
926 visualizaciones desde el 25 de Mayo del 2017
93,4 KB
26 paginas
Creado hace 18a (01/10/2006)
SLUD 2006
El sistema de computación simbólica, Máxima
In memoriam William Schelter
Robert Dodier
Proyecto Máxima
Libero este documento por el
GNU General Public License version 2
1
¿Por qué la computación simbólica?
Recurremos a computación por lo general para resolver algún
problema de “mundo real”
Una vez que se resuelve, normalmente queremos resolver el
mismo problema otra vez con datos poco diferentes
La computación simbólica es un atentado de resolver toda una
clase de problemas en una vez
Por eso dejamos que algunos variables en el problema no
tengan valores fijos
Entonces tenemos que computar sin que sepamos valores de
todos variables
2
Máxima, un sistema de computación simbólica
Máxima es un programa interactivo para la computación
simbólico
Modo de computación es simbólica normalmente, hace
computaciones númericas si lo pide
Puede manejar aritmética, polinomios, solución de ecuaciones
lineales y algunas polinomias, cálculo diferencial y integral,
ecuaciones diferenciales, conjuntos, vectores y matrizes,
números primos, números complejos, y gráficos
Máxima es un proyecto de software libre con el hospedaje de
SourceForge
Ya tiene un equipo internacional de desarrollo
3
Unos ejemplos
Miremos a unos ejemplos sencillos que indican algo de Máxima
Una operación de polinomio:
(%i1) a : 2;
(%o1)
(%i2) expand ((a + b)^10);
2
4
Unos ejemplos . . .
(%i1) a : 2;
(%o1)
(%i2) expand ((a + b)^10);
8
10
2
9
7
6
(%o2) b
+ 20 b + 180 b + 960 b + 3360 b
5
4
3
2
+ 8064 b + 13440 b + 15360 b + 11520 b
+ 5120 b + 1024
5
Unos ejemplos . . .
Una operación de matriz:
(%i1) M : matrix ([%pi, %e], [17, 29]);
(%o1)
[ %pi %e ]
[
]
29 ]
[ 17
(%i2) invert (M);
6
Unos ejemplos . . .
(%i1) M : matrix ([%pi, %e], [17, 29]);
(%o1)
[ %pi %e ]
[
]
29 ]
[ 17
(%i2) invert (M);
29
[
[ --------------
[ 29 %pi - 17 %e
(%o2) [
[
[ - --------------
29 %pi - 17 %e
[
17
7
%e
]
- -------------- ]
29 %pi - 17 %e ]
]
]
-------------- ]
29 %pi - 17 %e ]
%pi
Unos ejemplos . . .
Una integración:
(%i1) integrate (exp (- x * u), u, 0, inf);
8
Unos ejemplos . . .
(%i1) integrate (exp (- x * u), u, 0, inf);
Is x positive, negative, or zero?
pos;
(%o1)
1
-
x
9
Historia breve de Máxima
1968: Inició MACSYMA como parte del Proyecto MAC
(“Cognición Ayudada por Máquina”). Fundado por el
Departamento de Energía (DOE) del EE.UU.
MACSYMA = “Matemáticas simbólicas del Proyecto MAC”
1968–1982: Desarrollo de MACSYMA en el Instituto de
Tecnología de Massachusetts (MIT)
En esos años, MACSYMA era proyecto de investigación
academica, para el beneficio de los estudiantes y profesores
1982: Entrega de MACSYMA de MIT a DOE. Esa versión era
llamada “DOE-MACSYMA”
1982–1996 Desarrollo comercial de MACSYMA
10
1982–2001: Desarrollo de DOE-MACSYMA por William
Schelter (Universidad de Texas)
1998: Schelter obtuvo permisión de DOE de liberar
DOE-MACSYMA con licencia GPL
2001-presente: Desarrollo de DOE-MACSYMA (ya llamada
Máxima) como proyecto de hospedaje SourceForge
11
Características generales de Máxima
Toda cosa es una expresión. Es una manera de decir “código
= datos” en Máxima.
Máxima = colección de funciones para trasformar expresiones
La actitud “laissez faire”. Si Máxima no sabe que hacer con
una expresion, no hace nada (por la mayor parte). Por eso es
muy fácil extender las habilidades de Máxima.
Distinción entre evaluación y simplificación
Evaluación = sustitución de valores por símbolos y invocación
de funciones, Simplificación = sustitución de expresiones por
equivalentes
12
Toda cosa es una expresión
n
Expresiones algebrales como x + y, sin2 x,
También sumaciones y integrales
i=1 f (i)
También secuencias de expresiones (block)
También objetos compuestos como [a, b, c] (lista), 1, 2, 3
(conjunto), matrix([a, b], [1, 2]) (matriz)
También funciones f (x) := x2
También el bucle for y el condicional if – then – else
La implicación es que trabajar con Máxima es manipular
expresiones
13
La actitud “laissez faire”
Máxima intenta tratar cada expresión con todas leyes
matemáticas que sabe
¿Qué sucede cuando Máxima no sabe más?
Si Máxima no sabe que hacer con una expresión, lo deja
quedar como está (en la gran mayoría de casos)
Así deja la posibilidad de cambiar algo y tratarla otra vez
El usuario o programador puede inventar nuevas funciones que
empiezan donde Máxima se deja
14
Máxima y Lisp
Máxima es escrito en Common Lisp
Es muy fácil caer desde Máxima hasta Lisp
Se puede entrar en el ambiente Lisp y ver todos objetos Lisp
Funciones y objetos definidos en Lisp se puede ver en Máxima,
y viceversa
15
Lisp como lenguaje de implementación
De principio, Máxima fue escrito en MacLisp, un dialecto
bastante anticuado ahora
Ya el código fuente es Common Lisp, pero no explota las
habilidades de CL (desarrollado en los años 80 y 90)
. . . enfásis en la lista de propriedades (SYMBOL-PLIST)
. . . no mucho uso de paquetes
. . . muchos variables globales
. . . no uso de números complejos o racionales de Lisp
. . . la cadena en Máxima es un símbolo en Lisp
Es difícil hallar todos los códigos que manejar a un operador; la
manera de programación no necesita la localización de códigos
16
Lenguaje de programación de Máxima
Herencia de Lisp, con forma de Algol
map, apply, lambda – Funciones Lisp que aparecen en
Máxima
Ámbito dinámico (originalmente el sólo tipo de ámbito)
Máxima es un “Lisp-2”: con el mismo símbolo, se puede
definir multiples objetos (variable, función, otros)
No tiene sistema de paquetes
No tiene estructuras ni objetos (en el sentido de C++ o Java)
El lenguaje de Máxima es sencillo — es fácil expresar ideas
sencillas
17
Fortalezas de Máxima
Máxima hace fácil resolver problemas sencillos, y hace posible
resolver problemas complejos
Máxima es muy general, y aumentamos su generalidad
continualmente
Máxima trata a un gran número de sujetos básicos
. . . y tiene también un gran colección de paquetes adicionales
Hemos integrados varios otros programas de Lisp y de Fortran
Hay mucho interés en Máxima hoy día, y mucha actividad de
desarrollo
18
Faltas de Máxima
Asunción que hay alguna persona en el teclado – gran
problema para integrar con otro sistema
No se puede retraer todos régulas
No se puede borrar todo valores sin reiniciar
Sistema de declaraciones es débil
Objetos compuestos (matrices, conjuntos, listas) tienen que ser
concretos, no símbolicos
Falta de uniformidad — Máxima es el producto de muchas
manos por muchos años
Falta un sistema de paquetes
Ámbito dinámico (ámbito lexical sería mejor)
19
Comparación con otros sistemas
Otros sistemas generales
Mathematica, Maple, MuPAD — más o menos la misma
extension de matemáticas como Máxima; más funciones,
menos errores, mejores interfaces
Yacas (SL) — más o menos la misma extension; menos
funciones (proyecto mucho más joven que Máxima)
Axiom (SL) – sistema de categorías estrictas (“strongly
typed”). Certamente no “laissez faire”
Otros sistemas para sujetos específicos
PARI/GP (SL) (teoría de números); GAP (SL), Magma
(teoría de grupos); ACL2 (SL) (pruebas automáticas)
20
Otros sistemas numéricos
Octave (SL), Matlab, Scilab (númericos generales); R (SL),
S-Plus (estadística); Mathcad (enfásis en el interfaz cuaderno)
Hay mucho interés ahora de integrar sistemas para construir
un sistema que tenga más habilidad que algún solo sistema
e.g. SAGE integra a GAP, SINGULAR, PARI/GP, etc;
Matlab integra a Maple
Problema más grande para integración de sistemas es falta de
uniformidad de comunicaciones
Se ha propuesto el uso de XML en algúna forma (e.g.
MathML); pero aún se acorda en el formato, también necesita
acordar en la interpretación de un mensaje
21
Máxima como fenómena social
Tenemos ahora un equipo diverso y internacional
Como otros proyectos de software libre, lo que pasa es más o
menos lo que quiere los desarrolladores
Era unos años atras un plan de desarrollo, pero no lo hemos
seguido cuidadosamente
En particular, ha sido mucho interés de interfaces gráficas,
igual que revisión y traducción del manual de referencia
También hemos trabajado en corregir errores y aumentar
funciones existentes
Máxima es una casa de muchos cámaras — se puede trabajar
en lo que se acuerda con sí mismo
22
A donde vamos con Máxima
No tenemos un plan fijo. Algunas cosas que podríamos hacer:
Aumentar la documentación (otras traducciones y nuevos
textos)
Interfaz “cuaderno” para el usuario
Interfaz programático más sencillo
Corregir errores en funciones de limites y integrales
Corregir otros errores
Hacer más fácil la división de funciones (así que se puede
omitir o reemplacer alguna parte)
Máxima como sistema de propósito general – el lenguaje “C”
para las mathematicas simbólicos y numericos
23
Por qué viní a Máxima
Era trabajando en problemas de estadística y decisión (análisis
de sobrevivencia)
Encontré Máxima buscando una solución. Todovía quiero
resolver problemas de tipo similar
Lo que haca más fácil esta tarea: (1) algoritmos más fuertes
para integrar; (2) interfaz cuaderno; (3) integración con
códigos numericos o generación de tal códigos
Quisiera resolver problemas más o menos prácticos, y parece
que Máxima es un buen vehículo de eso
Quisiera ver paquetes de extensión para diversos sujetos
matemáticos (problemas de ingeñiería, estadística, comercio,
las ciencias, etc etc)
24
William Schelter
Mil gracias otra vez a William Schelter
Lo que vio él fue que Máxima merece la pena de desarrollo y
difusión
Conseguió la licencia que guarantiza que Máxima queda libre
y vivo aún en su ausencia
Otorgó sus esfuerzas a la publica y a nosotros para que las
disfrutemos
Con esta inspiración, dedicamos de nuevo nuestras proprias
esfuerzas par
Comentarios de: SLUD 2006 - El sistema de computación simbólica, Máxima (0)
No hay comentarios