slud 2006 el sistema de computación simbólica, máxima in
Post on 06-Feb-2017
225 Views
Preview:
TRANSCRIPT
SLUD 2006
El sistema de computacion simbolica, MaximaIn memoriam William Schelter
Robert DodierProyecto Maxima
Libero este documento por elGNU General Public License version 2
1
¿Por que la computacion simbolica?
Recurremos a computacion por lo general para resolver algunproblema de “mundo real”
Una vez que se resuelve, normalmente queremos resolver elmismo problema otra vez con datos poco diferentes
La computacion simbolica es un atentado de resolver toda unaclase de problemas en una vez
Por eso dejamos que algunos variables en el problema notengan valores fijos
Entonces tenemos que computar sin que sepamos valores detodos variables
2
Maxima, un sistema de computacion simbolica
Maxima es un programa interactivo para la computacionsimbolico
Modo de computacion es simbolica normalmente, hacecomputaciones numericas si lo pide
Puede manejar aritmetica, polinomios, solucion de ecuacioneslineales y algunas polinomias, calculo diferencial y integral,ecuaciones diferenciales, conjuntos, vectores y matrizes,numeros primos, numeros complejos, y graficos
Maxima es un proyecto de software libre con el hospedaje deSourceForge
Ya tiene un equipo internacional de desarrollo
3
Unos ejemplos
Miremos a unos ejemplos sencillos que indican algo de Maxima
Una operacion de polinomio:
(%i1) a : 2;
(%o1) 2
(%i2) expand ((a + b)^10);
4
Unos ejemplos . . .
(%i1) a : 2;
(%o1) 2
(%i2) expand ((a + b)^10);
10 9 8 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 operacion de matriz:
(%i1) M : matrix ([%pi, %e], [17, 29]);
[ %pi %e ]
(%o1) [ ]
[ 17 29 ]
(%i2) invert (M);
6
Unos ejemplos . . .
(%i1) M : matrix ([%pi, %e], [17, 29]);
[ %pi %e ]
(%o1) [ ]
[ 17 29 ]
(%i2) invert (M);
[ 29 %e ]
[ -------------- - -------------- ]
[ 29 %pi - 17 %e 29 %pi - 17 %e ]
(%o2) [ ]
[ 17 %pi ]
[ - -------------- -------------- ]
[ 29 %pi - 17 %e 29 %pi - 17 %e ]
7
Unos ejemplos . . .
Una integracion:
(%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;
1
(%o1) -
x
9
Historia breve de Maxima
1968: Inicio MACSYMA como parte del Proyecto MAC(“Cognicion Ayudada por Maquina”). Fundado por elDepartamento de Energıa (DOE) del EE.UU.
MACSYMA = “Matematicas simbolicas del Proyecto MAC”
1968–1982: Desarrollo de MACSYMA en el Instituto deTecnologıa de Massachusetts (MIT)
En esos anos, MACSYMA era proyecto de investigacionacademica, para el beneficio de los estudiantes y profesores
1982: Entrega de MACSYMA de MIT a DOE. Esa version erallamada “DOE-MACSYMA”
1982–1996 Desarrollo comercial de MACSYMA
10
1982–2001: Desarrollo de DOE-MACSYMA por WilliamSchelter (Universidad de Texas)
1998: Schelter obtuvo permision de DOE de liberarDOE-MACSYMA con licencia GPL
2001-presente: Desarrollo de DOE-MACSYMA (ya llamadaMaxima) como proyecto de hospedaje SourceForge
11
Caracterısticas generales de Maxima
Toda cosa es una expresion. Es una manera de decir “codigo= datos” en Maxima.
Maxima = coleccion de funciones para trasformar expresiones
La actitud “laissez faire”. Si Maxima no sabe que hacer conuna expresion, no hace nada (por la mayor parte). Por eso esmuy facil extender las habilidades de Maxima.
Distincion entre evaluacion y simplificacion
Evaluacion = sustitucion de valores por sımbolos y invocacionde funciones, Simplificacion = sustitucion de expresiones porequivalentes
12
Toda cosa es una expresion
Expresiones algebrales como x + y, sin2 x,∑n
i=1 f (i)
Tambien sumaciones y integrales
Tambien secuencias de expresiones (block)
Tambien objetos compuestos como [a, b, c] (lista), 1, 2, 3(conjunto), matrix([a, b], [1, 2]) (matriz)
Tambien funciones f (x) := x2
Tambien el bucle for y el condicional if – then – else
La implicacion es que trabajar con Maxima es manipularexpresiones
13
La actitud “laissez faire”
Maxima intenta tratar cada expresion con todas leyesmatematicas que sabe
¿Que sucede cuando Maxima no sabe mas?
Si Maxima no sabe que hacer con una expresion, lo dejaquedar como esta (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 queempiezan donde Maxima se deja
14
Maxima y Lisp
Maxima es escrito en Common Lisp
Es muy facil caer desde Maxima hasta Lisp
Se puede entrar en el ambiente Lisp y ver todos objetos Lisp
Funciones y objetos definidos en Lisp se puede ver en Maxima,y viceversa
15
Lisp como lenguaje de implementacion
De principio, Maxima fue escrito en MacLisp, un dialectobastante anticuado ahora
Ya el codigo fuente es Common Lisp, pero no explota lashabilidades de CL (desarrollado en los anos 80 y 90)
. . . enfasis en la lista de propriedades (SYMBOL-PLIST)
. . . no mucho uso de paquetes
. . . muchos variables globales
. . . no uso de numeros complejos o racionales de Lisp
. . . la cadena en Maxima es un sımbolo en Lisp
Es difıcil hallar todos los codigos que manejar a un operador; lamanera de programacion no necesita la localizacion de codigos
16
Lenguaje de programacion de Maxima
Herencia de Lisp, con forma de Algol
map, apply, lambda – Funciones Lisp que aparecen enMaxima
Ambito dinamico (originalmente el solo tipo de ambito)
Maxima es un “Lisp-2”: con el mismo sımbolo, se puededefinir multiples objetos (variable, funcion, otros)
No tiene sistema de paquetes
No tiene estructuras ni objetos (en el sentido de C++ o Java)
El lenguaje de Maxima es sencillo — es facil expresar ideassencillas
17
Fortalezas de Maxima
Maxima hace facil resolver problemas sencillos, y hace posibleresolver problemas complejos
Maxima es muy general, y aumentamos su generalidadcontinualmente
Maxima trata a un gran numero de sujetos basicos
. . . y tiene tambien un gran coleccion de paquetes adicionales
Hemos integrados varios otros programas de Lisp y de Fortran
Hay mucho interes en Maxima hoy dıa, y mucha actividad dedesarrollo
18
Faltas de Maxima
Asuncion que hay alguna persona en el teclado – granproblema para integrar con otro sistema
No se puede retraer todos regulas
No se puede borrar todo valores sin reiniciar
Sistema de declaraciones es debil
Objetos compuestos (matrices, conjuntos, listas) tienen que serconcretos, no sımbolicos
Falta de uniformidad — Maxima es el producto de muchasmanos por muchos anos
Falta un sistema de paquetes
Ambito dinamico (ambito lexical serıa mejor)
19
Comparacion con otros sistemas
Otros sistemas generales
Mathematica, Maple, MuPAD — mas o menos la mismaextension de matematicas como Maxima; mas funciones,menos errores, mejores interfaces
Yacas (SL) — mas o menos la misma extension; menosfunciones (proyecto mucho mas joven que Maxima)
Axiom (SL) – sistema de categorıas estrictas (“stronglytyped”). Certamente no “laissez faire”
Otros sistemas para sujetos especıficos
PARI/GP (SL) (teorıa de numeros); GAP (SL), Magma(teorıa de grupos); ACL2 (SL) (pruebas automaticas)
20
Otros sistemas numericos
Octave (SL), Matlab, Scilab (numericos generales); R (SL),S-Plus (estadıstica); Mathcad (enfasis en el interfaz cuaderno)
Hay mucho interes ahora de integrar sistemas para construirun sistema que tenga mas habilidad que algun solo sistemae.g. SAGE integra a GAP, SINGULAR, PARI/GP, etc;Matlab integra a Maple
Problema mas grande para integracion de sistemas es falta deuniformidad de comunicaciones
Se ha propuesto el uso de XML en alguna forma (e.g.MathML); pero aun se acorda en el formato, tambien necesitaacordar en la interpretacion de un mensaje
21
Maxima como fenomena social
Tenemos ahora un equipo diverso y internacional
Como otros proyectos de software libre, lo que pasa es mas omenos lo que quiere los desarrolladores
Era unos anos atras un plan de desarrollo, pero no lo hemosseguido cuidadosamente
En particular, ha sido mucho interes de interfaces graficas,igual que revision y traduccion del manual de referencia
Tambien hemos trabajado en corregir errores y aumentarfunciones existentes
Maxima es una casa de muchos camaras — se puede trabajaren lo que se acuerda con sı mismo
22
A donde vamos con Maxima
No tenemos un plan fijo. Algunas cosas que podrıamos hacer:
Aumentar la documentacion (otras traducciones y nuevostextos)
Interfaz “cuaderno” para el usuario
Interfaz programatico mas sencillo
Corregir errores en funciones de limites y integrales
Corregir otros errores
Hacer mas facil la division de funciones (ası que se puedeomitir o reemplacer alguna parte)
Maxima como sistema de proposito general – el lenguaje “C”para las mathematicas simbolicos y numericos
23
Por que vinı a Maxima
Era trabajando en problemas de estadıstica y decision (analisisde sobrevivencia)
Encontre Maxima buscando una solucion. Todovıa quieroresolver problemas de tipo similar
Lo que haca mas facil esta tarea: (1) algoritmos mas fuertespara integrar; (2) interfaz cuaderno; (3) integracion concodigos numericos o generacion de tal codigos
Quisiera resolver problemas mas o menos practicos, y pareceque Maxima es un buen vehıculo de eso
Quisiera ver paquetes de extension para diversos sujetosmatematicos (problemas de ingenierıa, estadıstica, comercio,las ciencias, etc etc)
24
William Schelter
Mil gracias otra vez a William Schelter
Lo que vio el fue que Maxima merece la pena de desarrollo ydifusion
Conseguio la licencia que guarantiza que Maxima queda librey vivo aun en su ausencia
Otorgo sus esfuerzas a la publica y a nosotros para que lasdisfrutemos
Con esta inspiracion, dedicamos de nuevo nuestras propriasesfuerzas para el beneficio de todos
25
Recursos generales
Portada del proyecto (version castellano): http://maxima.sourceforge.net/es
Pagina del proyecto en SourceForge: http://sourceforge.net/projects/maxima
Documentacion (version castellano):http://maxima.sourceforge.net/es/docs.shtml
Errores: http://sourceforge.net/tracker/?group id=4933&atid=104933
Correos electronicos (version castellano):http://lists.sourceforge.net/lists/listinfo/maxima-lang-es
Obtener el software:http://sourceforge.net/project/showfiles.php?group id=4933
Versiones para diversos sistemas:http://maxima.sourceforge.net/wiki/index.php/Maxima%20ports
Maxima wiki: http://maxima.sourceforge.net/wiki
26
top related