# Maple (software)

Maple es un programa orientado a la resolución de problemas matemáticos, capaz de realizar cálculos simbólicos, algebraicos y de álgebra computacional.
Fue desarrollado originalmente en 1981 por el Grupo de Cálculo Simbólico en la Universidad de Waterloo en Waterloo, Ontario, Canadá. Desde 1988 ha sido mejorado y vendido comercialmente por Waterloo Maple Inc. (también conocida como Maplesoft), compañía canadiense con sede en la misma localidad. La última versión es Maple 2020.
Maple se basa en un pequeño núcleo escrito en C, que proporciona el lenguaje Maple. Maple es un lenguaje de programación interpretado. Las expresiones simbólicas son almacenadas en memoria como grafos dirigidos sin ciclos. La mayoría de funcionalidades son proporcionadas por bibliotecas: unas escritas en lenguaje Maple, con acceso a su código fuente; pero también hace uso de otras bibliotecas bien conocidas como las NAG, ATLAS o GMP.

## Origen del nombre

Su nombre es una abreviatura o un acrónimo de la frase en inglés Mathemathic Pleasure (‘placer de las matemáticas’), también se debe a que Maple fue hecho en Canadá, cuya bandera tiene una hoja de arce (maple en inglés).

## Código de ejemplo en Maple

* Las siguientes líneas de código calculan la solución exacta de una ecuación diferencial ordinaria de segundo orden:
    ${\frac {d^{2}y}{dx^{2}}}(x)-3y(x)=x$
Sujeto a las condiciones iniciales:
    $y(0)=0,\quad \left.{\frac {dy}{dx}}\right|_{y=0}=2$
* Raíz cuadrada del número 2 hasta 20 cifras decimales:
${\sqrt {2}}=1{.}41421356237309504880$
* Simplificación de fracciones:
${\frac {35}{42}}-{\frac {5}{30}}={\frac {2}{3}}$
* Solución de una ecuación de segundo grado:
$-{\frac {b}{6}}+{\frac {\sqrt {b^{2}+84}}{6}},-{\frac {b}{6}}-{\frac {\sqrt {b^{2}+84}}{6}}$
* Solución de ecuaciones diferenciales simbólicas:
$(1+\tan(x)^{2}){\sqrt {x}}+{\frac {1}{2}}{\frac {\tan(x)}{\sqrt {x}}}$
* Funciones integrales, solución simbólica, y solución numérica:
    $\int {\sin(x)^{2}dx}$
    $-{\frac {1}{2}}\sin(x)\cos(x)+{\frac {x}{2}}$
${\frac {\pi }{4}}$
* Evaluación de ecuaciones diferenciales lineales en forma simbólica y numérica:
    $\left({\frac {d^{2}}{dx^{2}}}y(x)\right)-3y(x)=x$
$y(x)=e^{{\sqrt {3}}x}\left({\frac {7{\sqrt {3}}}{18}}+{\frac {1}{2}}\right)+e^{-{\sqrt {3}}x}\left({\frac {1}{2}}-{\frac {7{\sqrt {3}}}{18}}\right)-{\frac {x}{3}}$

## Historial de versiones

| Maple 2020: marzo de 2020 Maple 2019: marzo de 2019 Maple 2018: marzo de 2018 Maple 2017: mayo de 2017 Maple 2016: marzo de 2016 Maple 2015: marzo de 2015 Maple 18: marzo de 2014 Maple 17: marzo de 2013 Maple 16: marzo de 2012 Maple 15: abril de 2011 Maple 14: abril de 2010 Maple 13: abril de 2009 Maple 12: junio de 2008 Maple 11: febrero de 2007 Maple 10: mayo de 2005 Maple 9.5: abril de 2004 | Maple 9: junio de 2003 Maple 8: abril de 2002 Maple 7: julio de 2001 Maple 6: diciembre de 1999 Maple V R5: noviembre de 1997 Maple V R4: enero de 1996 Maple V R3: marzo de 1994 Maple V R2: noviembre de 1992 Maple V: agosto de 1990 Maple 4.3: marzo de 1989 Maple 4.2: diciembre de 1987 Maple 4.1: mayo de 1987 | Maple 4.0: abril de 1986 Maple 3.3: marzo de 1985 (primera versión disponible públicamente) Maple 3.2: abril de 1984 Maple 3.1: octubre de 1983 Maple 3.0: mayo de 1983 Maple 2.2: diciembre de 1982 Maple 2.15: agosto de 1982 Maple 2.1: junio de 1982 Maple 2.0: mayo de 1982 Maple 1.1: enero de 1982 Maple 1.0: enero de 1982 |
Desde 1994, MathCad ha incluido un motor de álgebra derivado de Maple, Núcleo Mathsoft de Maple MKN por sus siglas en inglés (MKN, Mathsoft Kernel Maple).

## Características

Estas son algunas de las características más relevantes del software:
* Permite el desarrollo de cálculos matemáticos de manera simbólica y numérica con precisión arbitraria
* Bibliotecas para funciones matemáticas básicas y avanzadas
* Manejo de números complejos y sus diversas operaciones
* Aritmética, álgebra, operaciones para desarrollo de polinomios multivariados
* Límites, series y sucesiones
* Bases Groebner
* Álgebra diferencial
* Herramientas para la manipulación de matrices, incluyendo matrices dispersas
* Herramientas para gráficos y animaciones matemáticas
* Sistemas de solución para ecuaciones diferenciales en sus diferentes variedades (ODE, DAE, PDE, DDE)
* Herramientas simbólicas y numéricas para cálculo discreto y continuo, incluye integración definida e indefinida, diferenciación
* Optimización con restricciones y sin restricciones
* Herramientas estadísticas que incluyen adaptación a diversos modelos, pruebas de hipótesis y distribuciones probabilísticas
* Herramientas para la manipulación, visualización y análisis de datos
* Herramientas para la resolución de problemas en el campo de la probabilidad
* Herramientas para el uso de series de tiempo
* Conexión a datos en línea, recopilados para aplicaciones financieras y económicas
* Herramientas para cálculos financieros, incluyendo: bonos, anualidades, etc.
* Cálculos y simulaciones para procesos aleatorios
* Herramientas para el procesamiento de señales
* Herramientas para el desarrollo de sistemas lineales y no lineales
* Incluye matemáticas discretas
* Herramientas para visualizar y analizar gráficos
* Importación y exportación de filtros para datos, imágenes, sonido, CAD y documentos
* Procesamiento de texto, incluyendo fórmulas matemáticas
* Herramientas para agregar interfaces de usuario para el desarrollo de cálculos y aplicaciones
* Herramientas para conectarse a SQL, Java, .NET, C++, Fortran y http
* Herramientas para la generación de códigos en lenguajes C, C++, Fortran, Java, JavaScript, Julia, Matlab, Perl, Python, R y Visual Basic.
* Herramientas para programación paralela.

## Versiones disponibles

Maplesoft vende Maple tanto en versiones profesionales como de estudiantes. (En EE. UU. desde US$ 99 para estudiantes, hasta US$ 1995 en versiones profesionales).
Desde la versión 6 y más recientes, las versiones para estudiantes no tienen limitaciones en poder de cómputo, pero sí vienen con menos documentación impresa. La situación es bastante similar para el programa Mathematica.
En versiones anteriores a la 6, la versión de estudiante tenía las siguientes limitaciones:
* Un máximo de uso de 100 dígitos en punto flotante para cálculos
* Un tamaño máximo de 8000 para cualquier objeto algebraico (8000 en objetos o largo de palabras máquina)
* Un máximo de 3 para los arreglos vectoriales (arrays)

## Comandos en Maple
### Tipos de "árboles de expresión" en Maple

Las funciones son reconocidas por Maple como árboles de expresión. Maple reconoce los siguientes tipos de funciones (o sea árboles de expresión): string, integer, fraction, float, '+', '*', indexed y function. Si se pretende saber qué tipo de árbol de expresión es una función, se puede escribir el comando whattype( ).
Supóngase que se tiene una función x^2+4*x+4, y se quiere saber qué tipo de árbol de expresión es para maple. Primero se escribe la función, y luego se usa el comando whattype:
Si se quiere saber si una determinada función es un determinado árbol de expresión, se usa la función type( , ). Por ejemplo, se quiere saber si la función p:= x^2+4*x+4 es un entero (integer). Primero se escribe la función y luego se usa el comando type:

### Escribir una función

Supóngase una función igual a x^2+4*x+4, a la cual se llame p. En Maple se debe escribir:
Si se desea saber cuál es el valor de esa función cuando x es 3, se escribe:
Cabe destacar que si ya no se quiere usar el valor asignado a x, se lo puede borrar de la siguiente manera:

### Hallar la antiderivada o integral

Supóngase que se tiene una función igual a x^2+4*x+4 llamada p. Se pretende encontrar la antiderivada.
Maple mostrará la antiderivada. Obviamente int significa integral.

### Las funciones nops y op

La función nops es usada en Maple para determinar el número de operandos de una expresión. Por ejemplo, supóngase que se tiene la función x^2+4*x+4, y se quiere saber su cantidad de operandos. Primero se define la función y luego se le aplica el comando nops:
La función op es utilizada para conocer el operando que está en una posición indicada. Por ejemplo, supóngase que se tiene la función x^2+4*x+4, y se quiere encontrar el segundo operando. Primero se define la función y luego se le aplica el comando op:

## Escribir un bucle (loop)

Para crear un bucle, se debe seguir la siguiente estructura: [for "nombre de la expresión" ] [from "expresión" ] [by "expresión"] [to "expresión"] [while "expresión"] do "declaración de sequencia" end do [by "expresión"] por defecto es 1.
Supóngase que se quiere programar bucle que imprima los cuadrados del 1 al 10. La expresión en Maple sería: