Cómo se compara Maple™ con Mathematica®
- Detalles
- Categoría: Maple
- Visto: 37640
¿Está escogiendo entre Maple™ y Mathematica®? A primera vista parece que sean productos muy similares. Sin embargo, en las páginas que siguen verá numerosas comparaciones técnicas que muestran que Maple es mucho más fácil de usar, tiene una tecnología simbólica superior y proporciona un rendimiento mejor.
Estas diferencias en los productos es muy importante, pero quizás sean igual de importantes las diferencias entre las empresas. En Maplesoft™, creemos que proporcionando grandes herramientas la gente puede hacer grandes cosas. Para nosotros nuestro trabajo es proporcionarle las mejores herramientas posibles, manteniendo relaciones con la comunidad investigadora, contratando gente con talento, adoptando la mejor tecnología disponible, incluso cuando no la hemos desarrollado nosotros, y escuchando a nuestros clientes.
A continuación se presentan algunas diferencias a tener en cuenta:
- Maplesoft tiene una filosofía de apertura y comunidad que impregna todo lo que hacemos. A diferencia de Mathematica, el motor matemático de Maple siempre ha sido desarrollado tanto por empleados con talento de la empresa como por expertos en laboratorios de investigación de todo el mundo. Esta aproximación colaborativa permite a Maplesoft ofrecer algoritmos matemáticos punteros sólidamente integrados en la interfaz de usuario más natural disponible. Esta apertura es también evidente en otros muchos ámbitos, como en el anhelo de formar asociación con otras organizaciones, y adhesión a estándares internacionales, conectividad con otras herramientas de software y la visibilidad de una vasta mayoría del código fuente de Maple.
- Maplesoft ofrece una solución para todas las necesidades académicas, incluyendo herramientas avanzadas para matemáticas, modelado en ingeniería, formación a distancia, y prueba y evaluación. En contraposición, Wolfram Research no tiene nada que ofrecer para pruebas y evaluación automática, un área de vital importancia para la vida académica. Maple T.A.™, nuestro sistema de pruebas y evaluación, está basado en Maple. Incluso si Vd. no está buscando una herramienta de evaluación en este momento, escoger Maple hoy le proporcionará más adelante, a Vd. y a su institución, una valiosa ventaja de salida.
Finalmente, a menudo nos dicen que somos una empresa con la que es mejor trabajar. No creemos que tengamos una solución para cada problema dentro o fuera de las paredes de nuestra compañía, tampoco esperamos que Vd. utilice nuestros productos exclusivamente, y no creemos que nuestra empresa vaya a transformar radicalmente cada rama de la ciencia. Los individuos, las empresas, las instituciones educacionales y las editoriales escogen nuestra tecnología porque somos más flexibles, más sensibles y porque estamos más enfocados en crear grandes herramientas para nuestros clientes.
¡Ahora vamos a los temas técnicos!
Interfaz
Una buena interfaz es prácticamente invisible. Si su software se ve y funciona de la forma esperada, Vd. y sus estudiantes simplemente pueden hacer su trabajo, sin preocuparse sobre la mecánica de la herramienta que están utilizando. Maplesoft siempre ha sido pionera en la usabilidad del software matemático, y se esfuerza continuamente en asegurar que los usuarios nuevos y ocasionales sean inmediatamente productivos, mientras que los usuarios experimentados tienen las herramientas y flexibilidad que necesitan para trabajar eficientemente. Nuestro objetivo es permitir a nuestros clientes trabajar en un entorno que sientan tan natural como sea posible para enseñar, aprender y hacer matemáticas. Esto incluye utilizar notación matemática estándar en todas partes, respetando las convenciones de software estándar y proporcionando un entorno donde los usuarios puedan crear el mismo tipo de documentos que ven en sus libros de texto, en sus pizarras y en sus libretas.
Notación matemática estándar
Introducir expresiones matemáticas que se vean como expresiones matemáticas es muy fácil en Maple. El editor de ecuaciones automáticamente formatea las fracciones y exponentes como su tipo. Vd. puede entrar las expresiones del mismo modo que las escribiría, y aparecen en Maple como estarían escritas en su libro de texto. Esto permite que las matemáticas sean fáciles de introducir y fáciles de leer. Mathematica, sin embargo, utiliza alguna notación no estándar que requiere que el usuario traduzca de un lado a otro entre la matemática estándar y la sintaxis de Mathematica.
Aquí hay algunos ejemplos de expresiones entradas utilizando la configuración por defecto en ambos sistemas.
Nótese que:
- En Maple, como en la notación matemática estándar, los paréntesis redondeados se utilizan para las funciones: f(x). En Mathematica se utilizan corchetes cuadrados: f[x].
- En Maple, las funciones más comunes se escriben utilizando la notación estándar, con la letra inicial en minúscula: log(x), sin(x), cos(x). En Mathematica, estas funciones requieren una letra mayúscula inicial: Log[x], Sin[x], Cos[x].
- En Maple, la igualdad matemática se denota por “=”. En Mathematica, el signo igual está reservado para la asignación de variables, y un signo doble igual es utilizado para la igualdad. La utilización de un signo igual simple da como resultado un error:
- El formateo “2D” de fracciones y exponentes se aplica automáticamente por defecto en Maple. Por ejemplo, cuando se escribe “/”, Maple inserta la barra de fracción horizontal y la próxima cosa que se escriba aparece en el denominador. En Mathematica, las fracciones y exponentes no se formatean por defecto. Pueden formatearse durante la escritura utilizando pulsaciones alternativas a la entrada estándar (p. ej. Utilizando Ctrl+/ para una fracción en lugar de /) o entrando primero la expresión en sintaxis de Mathematica y entonces convirtiéndola a la forma tradicional a posteriori utilizando una operación del menú.
- En Maple, por defecto las paletas utilizan el formateo matemático estándar. Por ejemplo, las integrales parecen integrales. En Mathematica, las paletas insertan el comando. Posteriormente debe aplicarse una operación de menú para convertir el comando a notación matemática estándar.
Las preferencias varían, por lo que la entrada de sintaxis tradicional también es una opción para los usuarios de Maple. En ese caso, Maple soporta la familiar sintaxis de estilo calculadora: 2*x^2+cos(x/2). Los usuarios pueden escoger qué estilo desean utilizar, e incluso cambiar entre ellos en el mismo documento.
Enter vs. Shift Enter
En Maple, una vez que ha introducido su problema, Vd. pulsa la tecla <Enter> para decirle a Maple que realice el cálculo y le dé el resultado. Cuando se escribe “2+2 <Enter>” da un 4.
En Mathematica, escribiendo “2+2 <Enter>” mueve el cursor a la siguiente línea, sin calcular nada. Para pedir a Mathematica que realice el cálculo, hay que pulsar <Shift>+<Enter>. Esta interacción no estándar requiere que los usuarios adapten su comportamiento habitual.
Escritura
Las matemáticas de Maple se ven como deberían aparecer en un libro de texto, haciendo que sean muy fáciles de leer, comprender y verificar. En Mathematica, incluso cuando se aplica el formato tradicional, el resultado sigue sin seguir los estándares de los libros de texto. Por ejemplo, los nombres de variable no están en cursiva. Aunque las expresiones sean comprensibles esto puede hacer que sean más difíciles de entender de un vistazo.
Aquí se muestran algunos ejemplos tanto de Maple como de Mathematica. En alguno de los ejemplos de Maple, se utiliza la funcionalidad de resultados en línea de Maple para poner tanto la entrada como el resultado en la misma línea y obtener una presentación más compacta. Mathematica no dispone de esta capacidad.
Combinar texto y resultados
En Maple es fácil combinar texto y matemáticas en la misma frase. Incluso se pueden tener resultados calculados que aparezcan en medio de una frase, o que la frase cambie automáticamente si los resultados son actualizados.
Cambiando la definición de la función y recalculando el documento, se encuentra la nueva discontinuidad y la frase se actualiza apropiadamente:
En Mathematica, no es posible combinar texto y resultados matemáticos de la misma manera. Puede combinar texto y matemática estática en la misma celda, pero no puede visualizar resultados calculados. Si sus resultados cambian debe editar su frase a mano.
Undo
“Ups, ojalá no hubiera hecho esto”. Esto ocurre. Comete un error, y entonces desea poder deshacer una acción previa, o a veces incluso una secuencia de acciones previas.
En Maple Vd. puede deshacer y rehacer textos, gráficos y otros cambios visuales de su documento, incluyendo los efectos visuales de un cálculo matemático u operación gráfica. Vd. puede deshacer muchos pasos, no solo el último.
En Mathematica Vd. únicamente puede deshacer su último comando de edición básico (p. ej. Cortar, copiar, escribir texto). No es posible rehacer una acción que se ha deshecho, y no es posible deshacer más que la última acción. Según la documentación de Mathematica de Undo, “La única manera de deshacer varias acciones de una vez es ir a una versión anterior de su archivo.”
Clickable Math™
Desde la inclusión de los menús contextuales para las operaciones matemáticas en 1998 hasta las actuales colecciones de tutores, plantillas de tareas, Math Apps, Smart Popups, y otros, la aproximación Clickable Math de Maple ha revolucionado cómo se enseñan, aprenden y hacen las matemáticas.
Ejemplo: Drag-to-Solve™
El siguiente ejemplo utiliza Drag-to-Solve (arrastra para resolver) en Maple para resolver esta ecuación lineal de la manera que se enseña a los estudiantes que lo hagan, moviendo términos alrededor y realizando operaciones en ambos lados de la ecuación. Para mover un término de un lado a otro del signo de igualdad, el estudiante simplemente arrastra el término a través, y Maple comprende lo que el estudiante quiere hacer con la acción.
El alumno también tiene la oportunidad de ir directamente a la solución utilizando el menú contextual en Maple:
En Mathematica, no es posible resolver un problema como éste paso a paso, arrastrando los términos de una expresión alrededor para realizar una operación. Para resolver esta ecuación el estudiante la entra, acordándose de utilizar la sintaxis del símbolo de doble igualdad, y entonces escoge una opción del menú que va directamente a la solución:
Ejemplo: Operaciones de menú sobre subexpresiones
En Maple, las operaciones matemáticas se pueden realizar sobre la expresión completa o sobre una subexpresión. Esto permite reescribir parte de una expresión de una forma diferente, como un paso en la solución. Por ejemplo, en Maple puede utilizar menús para aplicar una identidad trigonométrica a sec(x) en:
Incluso puede pedir graficar una subexpresión. Por ejemplo, si quiere recordar a sus alumnos que el denominador de una expresión a veces puede tomar el valor 0, puede utilizar la funcionalidad Smart Popup de previsualización para mostrar una previsualización rápida de un gráfico de solo el denominador.
En Mathematica no es posible aplicar operaciones de menú a subexpresiones.
Matemáticas
A diferencia de Mathematica, el motor matemático de Maple siempre ha sido desarrollado tanto por talentosos empleados de la empresa como por expertos en laboratorios de investigación de todo el mundo. Esta aproximación colaborativa permite a Maplesoft ofrecer algoritmos matemáticos punteros en una amplia variedad de campos.
Aquí se muestran unos ejemplos de algunas áreas donde sobresale Maple:
- Ecuaciones diferenciales. Maple es el líder incontestable en el cálculo de soluciones simbólicas a ecuaciones diferenciales. Maple calcula soluciones simbólicas al 97,5% de las 1345 EDO lineales y no lineales del famoso texto, Differentialgleichungen de Kamke, y lo hace en 43 minutos. Mathematica únicamente maneja el 79,8% y toma 7 horas y 8 minutos en encontrar esas soluciones.
- Factorización de polinomios. La factorización es un método importante, y frecuentemente utilizado de simplificar expresiones. Para los investigadores matemáticos encontrar los factores irreducibles de polinomios potencialmente largos puede proporcionar una visión significativa dentro de las estructuras matemáticas relacionadas. Maple emplea numerosas técnicas que se encuentran en la reciente literatura de investigación para afrontar con éxito problemas grandes y difíciles, de factorización de polinomios. La comparativa de referencia de Zimmermann de Polynomial Factorization Challenges proporciona ocho problemas que son representativos de los tipos de polinomios que son difíciles de factorizar. Maple puede resolver cada uno de los ocho problemas de esa suite. Cinco de ellos se resuelven en menos de dos segundos cada uno, y los otros tres en menos de 80 segundos. En cambio, Mathematica resuelve tres de ellos en menos de dos segundos cada uno; otros dos tarda cerca de una hora cada uno, y para cada uno de los tres restantes, el cálculo paró después de una hora sin encontrar la solución.
- Física. Maple tiene, de lejos, el soporte más extenso para niveles pregrado, universitario y de investigación de física de cualquier paquete de software matemático. Cubre análisis vectorial, análisis tensorial, cálculo de vectores de estado cuántico, teoría de campos clásica y cuántica, y más, a la vez que proporciona una entrada del tipo papel y lápiz y visualización de resultados con calidad de libro de texto. Sin embargo, Mathematica no maneja variables anticonmutativas y no conmutativas. Tampoco maneja la gran mayoría de reglas especializadas y operadores de la física, ni soporta notación física convencional en la entrada o en la salida.
- Geometría diferencial. El soporte de geometría diferencial de maple cubre un amplio rango de temas, desde cálculos de reacción al dominio de la matemática detrás de la relatividad general. También incluye una serie de lecciones sobre geometría diferencial que abarca tanto temas iniciales como avanzados. Mathematica no proporciona ninguna funcionalidad para geometría diferencial.
Estudiantes
Los estudiantes que utilizan un sistema como Maple o Mathematica a menudo tienen diferentes necesidades que los no estudiantes. No necesitan exclusivamente una respuesta final. Todavía están aprendiendo los conceptos matemáticos detrás de los problemas que están intentando resolver y necesitan un entorno que les permita explorar los conceptos y desmenuzar los problemas en pasos más pequeños en lugar de saltar directamente a la solución.
Además de las funcionalidades como Drag-to-Solve, menús contextuales, plantillas de tareas y Smart Popups, que permiten a los alumnos resolver problemas paso a paso sin comandos, Maple también dispone de un conjunto de paquetes de estudiante. Los paquetes de estudiante ofrecen entornos enfocados al aprendizaje en los cuales los estudiantes pueden explorar y reforzar los conceptos fundamentales de la misma manera que su profesor hace en clase.
Por ejemplo, Maple incluye tutores paso a paso que permiten a los estudiantes practicar la integración, diferenciación, encontrar límites y otros. El Tutor de Integración, mostrado más abajo, permite que un alumno calcule una integral seleccionando qué regla aplicar en cada paso. Maple también ofrecerá indicaciones o mostrará el siguiente paso, si se le requiere. El tutor no solo mostrará cómo obtener el resultado, sino que está completamente diseñado para practicar y aprender.
Mathematica no tiene nada como estos tutores paso a paso. Lo más cercano en Mathematica es “Show Steps” de Wolfram|Alpha®, que no está realmente disponible en Mathematica, sino que tiene que utilizarse con un navegador web. Además, la funcionalidad “Show Steps” no es interactiva. Muestra la respuesta final más los pasos necesarios para obtenerla, pero no permite que el alumno intente resolver el problema por su cuenta, paso a paso.
Otra ventaja del concepto de paquete de estudiante de Maple es que los cálculos se realizan utilizando asunciones que son apropiadas para el nivel del alumno. Esto evita situaciones donde un cálculo devuelve resultados que el estudiante es incapaz de asimilar debido a que los conocimientos necesarios para su comprensión se tratarán más adelante del currículum. Por ejemplo, los estudiantes en un curso de primer año de álgebra lineal normalmente no se ocupan de los números complejos. Al calcular la norma euclídea de un vector utilizando el paquete de Estudiante de Álgebra Lineal de Maple, éste devolverá el resultado esperado:
Sin embargo, teniendo en cuenta que las cantidades simbólicas como a, b y c pueden representar números complejos, Maple da un resultado más general fuera del contexto del paquete de estudiante:
Mathematica no tiene la capacidad de ajustar su contexto computacional al conocimiento de los estudiantes en un nivel particular, y por tanto siempre da la respuesta más general. Como resultado, los profesores necesitan emplear más tiempo explicando los resultados inesperados a sus alumnos.
Programación
Programación funcional vs. Procedural
Maple permite escribir tus propios scripts y programas con un lenguaje de programación procedural que será muy familiar a los usuarios de C, Java, Forran, Visual Basic, y otros lenguajes procedurales. También incluye muchos elementos de la programación funcional y orientada a objetos, permitiendo escoger qué aproximación es más adecuada a su problema y estilo de programación.
Mathematica también ofrece construcciones para soportar los diferentes estilos de programación, pero normalmente anima a una aproximación de programación funcional. Incluso sus elementos de programación procedural están implementados en un estilo de programación funcional, de forma que construcciones como las sentencia if y los bucles están escritos como llamadas a función. Los programas funcionales a menudo son opacos; la mayoría de la gente, incluso programadores experimentados, encuentra que los programas con estilo funcional son significativamente más difíciles de escribir, leer y depurar.
Como un ejemplo, la página web http://rosettacode.org/wiki/Hailstone_sequence ofrece un sencillo código para calcular la secuencia de Hailstone utilizando más de 90 lenguajes diferentes incluyendo Maple y Mathematica. La secuencia de números de Hailstone puede ser generada desde un entero positivo inicial n mediante:
- Si n es 1 entonces la secuencia acaba.
- Si n es par entonces el siguiente número de la secuencia = n/2
- Si n es impar entonces el siguiente número de la secuencia = 3n+1
En el momento de escribir este documento, los colaboradores de Rosetta Code proporcionaron las siguientes implementaciones de Mathematica y Maple, ilustrando los diferentes estilos favorables para cada lenguaje.
Detección de errores
Los programadores cometen errores, los más comunes de ellos son los errores de sintaxis. El trabajo del compilador o el intérprete es capturar esos errores y facilitar lo más posible al programador que los pueda corregir.
Considere este sencillo procedimiento de Maple. El programador ha usado equivocadamente n en la sentencia if en lugar del parámetro N. La variable n no tiene un valor, así que es imposible que Maple evalúe la sentencia if.
La llamada MyProc(4) en Maple, resulta en un error adecuado, indicando que Myproc “no puede determinar si esta expresión es verdadera o falsa: 3<n”. Esto ayuda a identificar rápidamente el error.
En Mathematica, el procedimiento sería:
Al llamar a este procedimiento en Mathematica no se produce ninguna advertencia. El código simplemente no actúa como se esperaba, sin explicación.
Ahora considere qué pasará en el mismo procedimiento cuando el usuario omita accidentalmente el punto y coma después de la sentencia if:
Este problema está compuesto por el hecho de que, a diferencia de Maple, normalmente se ha de omitir el punto y coma cuando se explora interactivamente en una sesión en vivo de Mathematica. Si se ponen puntos y coma al final de las sentencias en una sesión interactiva, las salidas son suprimidas. Cuando se hace un prototipo de los pasos de la solución en una sesión interactiva, hay que añadir puntos y coma después cuando se convierten estos pasos en un procedimiento, y el programador no recibirá ningún aviso si se olvida uno.
Otras consideraciones de programación
- Depuración. Ambos productos incluyen depuradores que permiten configurar puntos de ruptura y dar pasos a través del código. En Maple, puede evaluar las expresiones arbitrarias en el contexto del procedimiento parado de forma que puede evaluar, inspeccionar y depurar su código. En Mathematica, no es posible evaluar expresiones refiriéndose a variables con alcance local. Puede inspeccionar los valores de las variables locales, pero no puede realizar cálculos que las involucren, como preguntar el tamaño de una matriz local, mirar más en profundidad dentro de la estructura de un elemento individual de una lista local, o incluso multiplicar dos variables locales entre sí. Además, en Maple puede utilizar el depurador para dar pasos a través de las rutinas de la librería interna igual que en el código del usuario, pero en Mathematica únicamente puede dar pasos a través de las rutinas definidas por el usuario.
- Programación en paralelo. Maple es el único sistema de cálculo técnico que permite aprovecharse del multihilo en sus propios programas. El lenguaje de programación de Maple ofrece acceso directo al lanzamiento y control de hilos, mientras que un modelo de programación basado en tareas simplifica la gestión de los hilos. Escribir algoritmos en paralelo utilizando Task Programming Model en Maple reduce y elimina muchas de las dificultades asociadas con la programación en hilos de ejecución, posibilitando que incluso los programadores con experiencia moderada puedan disponer de toda la potencia de procesado de su ordenador. La programación en paralelo en Mathematica involucra generar nuevos núcleos matemáticos, lo que requiere memoria y recursos extra así como complicados pases de mensajes entre nodos para comunicar el contexto y el estado. Este estilo de programación en paralelo requiere más tiempo de desarrollo y depuración, y generalmente requiere de un programador experimentado. Además, el paralelismo multihilo y multiproceso de Maple no tiene restricciones en el número de núcleos que se pueden acceder. Si dispone de 16 núcleos, podrá utilizar todos los 16 núcleos inmediatamente con su licencia por defecto. Mathematica limita el número de procesos que Vd. puede ejecutar a 4, a menos que compre licencias adicionales.
- Escritura de scripts. Tanto Mathematica como Maple proporcionan un intérprete de script basado en línea de comandos, que a menudo es útil para programadores que prefieren utilizar su editor favorito para desarrollar código. En este entorno, los mensajes de error se muestran en Maple pero a veces son suprimidos en Mathematica, por lo que es mucho más complicado para el programador depurar el código.
Modelo numérico
El modelo numérico de Maple deriva del estándar de coma flotante IEEE/754. Este estándar, entonces, se extiende consistentemente por Maple para cubrir los cálculos que involucren flotantes complejos y de alta precisión arbitraria. Este modelo numérico es el estándar aceptado por el hardware de los ordenadores y en la industria del software, y es profusamente comprendido y documentado. Los resultados de maple se pueden comparar de una forma consistente con los resultados de otros sistemas que utilizan el mismo estándar internacional. Por ejemplo, una algoritmo codificado en MATLAB® se puede importar en Maple y dará los mismos resultados. Además, las razones en las elecciones que toma Maple siempre se pueden determinar consultando la documentación estándar.
Mathematica utiliza un modelo numérico propietario derivado de algo llamado “significancia aritmética”, no del estándar internacional, y los detalles no están publicados. Los algoritmos escritos en otro sistema, cuando se implementan en Mathematica, pueden dar resultados diferentes y estas diferencias no son predecibles. Mientras que cada sistema tiene sus ventajas e inconvenientes debido a su naturaleza inherente de cálculos en coma flotante, el modelo de Maple es bien comprendido y está sujeto a la investigación matemática del comportamiento de los algoritmos en los casos problemáticos identificables. En contraste, el modelo cerrado, propietario de Mathematica significa que los resultados incorrectos no siempre son predecibles o detectables.
Considere este ejemplo, publicado por primera vez por Richard Fateman de la Universidad de California, Berkeley. Una secuencia definida recursivamente se define como:
si=2si-1-3si-12 con s0=0.3
Matemáticamente, esta secuencia converge a 1/3 muy rápidamente. En Maple, y otros sistema que siguen el estándar IEEE, lo que ocurre es lo siguiente:
El mismo algoritmo en Mathematica da diferentes resultados:
El último término de la salida dice que s40=0.×1062, cosa que no es una buena aproximación de 1/3.
No hay nada en el cálculo que avise al usuario que el resultado puede no ser fiable en cada paso. Por ejemplo, no existe acumulación de errores de redondeo, que los matemáticos e ingenieros están acostumbrados a ver como un signo de aviso de que pueden estar obteniendo resultados problemáticos.
Los resultados inesperados de este cálculo no son causados por un error de programación, sino que más bien ese debido al modelo de coma flotante utilizado por Mathematica.
Rendimiento
Maple es el motor de cálculo simbólico más rápido del mundo. La habilidad para realizar cálculos matemáticos simbólicamente cae en el corazón de ambos sistemas, Maple y Mathematica, y es lo que les distingue de la mayoría de los otros programas computacionales. Las comparativas entre ambos productos muestran que Maple es significativamente más rápido cuando realiza operaciones fundamentales como trabajar con polinomios, con mejoras adicionales en cada versión. Aunque pueda parecer que las operaciones con polinomios no se emplean en muchas de las aplicaciones del día a día, en realidad están en el núcleo de casi todos los algoritmos simbólicos, como la resolución exacta de ecuaciones o el cálculo de una integral.
En los ejemplos que siguen, los cálculos se han realizado con un procesador de cuatro núcleos de 64 bits Intel™ Core i7 920 2.66 GHz con Maple 17 y Mathematica 9.
Expandir un polinomio con 170544 términos en Maple emplea 31 milisegundos. En Mathematica tarda 564 milisegundos.
Consultas comunes, como encontrar las variables, calcular el grado total, y pruebas en un polinomio, corren mucho más rápidas en Maple que en Mathematica.
Maple ha desarrollado algoritmos de alto rendimiento para el motor de Maple que aceleran muchas operaciones centrales, incluyendo la diferenciación, extracción de un coeficiente y evaluación de un polinomio.
Una situación en la que las operaciones fundamentales más rápidas establecen una gran diferencia es la resolución simbólica de ecuaciones. Por ejemplo, el siguiente ejemplo utiliza 50 sistemas de polinomios de pequeño tamaño de la literatura de resolución de sistemas de polinomios. Maple encuentra soluciones a los 50 en menos de 50 segundos, utilizando su comando “solve”. Mathematica es capaz de resolver únicamente 26 de estos sistemas, y normalmente fue más lento, a veces mucho más lento:
Para cada uno de los otros 24 sistemas, el comando “Solve” de Mathematica no devolvió solución dentro de los 5 primeros minutos y se pararon.
Conectividad
Tanto Maple como Mathematica son herramientas muy potentes, pero hay muchas razones por las que pueden no ser las únicas herramientas que Vd. utilice.
Maple proporciona conectividad con una amplia variedad de herramientas y lenguajes estándares, así que Vd. puede aprovecharse del potente entorno matemático de Maple sin importar qué otras herramientas utilice. El siguiente apartado describe algunas de las diferencias en las opciones de conectividad de los dos productos.
Generación de código
Las funcionalidades de generación de código le permiten convertir expresiones y programas a diferentes lenguajes de programación. De esa manera, puede utilizar Maple o Mathematica para desarrollar las soluciones originales o algoritmos y entonces exportarlos a otro lenguaje de forma que pueda utilizarlos como parte de un proyecto más grande. Maple puede generar código C, C#, Fortran, Java™, MATLAB y Visual Basic®. Las opciones incluyen deducción automática de tipos, coerción automática de tipos, análisis de reducción de ecuaciones y optimización del código. El objetivo de Maple es generar código que se integre fácilmente en su código base. Por ejemplo, para máxima compatibilidad, el código C generado por Maple está adherido al estándar ANSI C.
Mathematica tiene generación de código para C y Fortran. Los resultados no pueden ser utilizados inmediatamente porque los resultados no son código C o Fortran estándar.
Considere el siguiente ejemplo:
El comando CForm[] de Mathematica ha convertido los corchetes en Sin[] en paréntesis (), pero retiene la inicial mayúscula de las funciones seno y raíz cuadrada. El código C generado por Mathematica entonces, tiene que ser compilado contra un archivo macro (mdefs.h) para convertir esas funciones de Mathematica a su equivalente C. Sin embargo, incluso esto no siempre es suficiente, como se puede ver en el siguiente ejemplo:
La función arctanh(x) no es parte de la librería matemática del C estándar. Maple automáticamente convierte el comando arctanh() a una forma equivalente que puede ser evaluada en C. Mathematica la deja como arctanh(), por lo que el código de Mathematica no correrá de forma apropiada, incluso después de compilar el código contra el archivo macro de Mathematica.
La generación del código Fortran funciona del mismo modo. Maple genera código que puede utilizarse inmediatamente. El código generado por Mathematica necesita compilarse contra un archivo de definiciones separado y no siempre producirá un código que funcione. Además, Maple tiene en cuenta las restricciones impuestas por los compiladores de Fortran en el formato de líneas y en la longitud de los nombres de las variables.
Como Mathematica no tiene en cuenta estos factores, el código requiere un postprocesado antes de que pueda ser incorporado en su programa.
Conectividad MATLAB
Maple ofrece una solución de cálculo técnico que está estrechamente integrada con MATLAB, proporcionando acceso directo a todos los comandos, variables y funciones de cada producto mientras se trabaja en cualquiera de los entornos. También puede traducir el código de MATLAB a Maple y generar el código de MATLAB desde expresiones y procedimientos de Maple.
Mathematica no tiene incorporada ninguna conectividad con MATLAB. Existen herramientas de terceras partes, no soportadas por Wolfram Research, que ofrecen la capacidad de llamar a funciones de MATLAB desde dentro de Mathematica y que realizan alguna generación de código de MATLAB. La herramienta de generación de código no se ha actualizado en más de 10 años. La comunicación bidireccional y la traducción de código no están disponibles.
Conectividad CAD
Maple proporciona un enlace bidireccional paramétrico con los sistemas SolidWorks®, AutoDesk Inventor®, y NX® CAD, permitiendo la recuperación de parámetros de un dibujo CAD, realizar análisis y optimizaciones, y enviar los nuevos valores de vuelta a los diseños. Se dispone tanto de un asistente interactivo como de una API de programación para soportar la experimentación activa y el desarrollo de herramientas especializadas para reconfiguración y optimización de piezas.
Mathematica ofrece herramientas para exportar objetos 3D a formatos CAD, pero no proporciona un enlace vivo entre los dos productos. No existe manera de recuperar parámetros desde un diagrama CAD dinámicamente, y no hay manera de llevar nuevos valores de parámetros directamente al diseño CAD.
Apertura
Los motores matemáticos, tanto de Maple como de Mathematica, tienen una arquitectura similar. Un núcleo escrito en C o C++ y una gran librería de funciones predefinidas escritas en el lenguaje de programación de Maple o de Mathematica.
Aproximadamente el 95% de la funcionalidad de Maple está escrita en el lenguaje de programación de Maple, y cada usuario de Maple puede inspeccionar libremente el código fuente para cualquiera de esas rutinas de la librería predefinida de Maple. Esto es de gran utilidad para determinar qué pasa “bajo el capó” en Maple, qué algoritmos se están utilizando, y para propósitos de análisis de rendimiento. El depurador de Maple también permite a un usuario dar pasos a través de las rutinas de la librería para obtener una visión en profundidad de exactamente cómo se comporta la rutina para un conjunto dado de entradas. De hecho, los usuarios de Maple no solo pueden ver y moverse dentro de las rutinas de la librería, sino que incluso pueden modificar o extender una rutina de la librería de Maple para adaptar su funcionalidad.
En Mathematica, el código fuente para todas las rutinas de la librería predefinida escritas en el lenguaje de programación de Mathematica está escondido al usuario. El código fuente está almacenado en archivos .mx en un formato binario propietario. Los usuarios no pueden inspeccionar el código fuente y no pueden dar pasos dentro de esas rutinas en el depurador de Mathematica. Como que el código fuente no está disponible tampoco es posible particularizar las rutinas de la librería de Mathematica.