Google+ Seguidores

viernes, 8 de diciembre de 2017

Computación Simbólica con Python y SymPy

Introducción:

Como la mayoría de nosotros sabemos, Python nos ayuda a resolver muchos problemas, es muy usado en el análisis de datos, en Data Science, y por ingenieros. Esto debido a que con Python se pueden desarrollar algoritmos y software que manipulan expresiones matemáticas y otros objetos matemáticos.

Hoy quisiera mostrarles el poder de Pyhton junto a SymPy, el modulo usado para la computación simbólica y la creación de sistemas de álgebra computacional.

Este articulo es el primero de una seria referente a la Computacional Simbólica con Python y SymPy, este articulo es la introducción, en artículos posteriores veremos los distintos módulos de SymPy y como manipular expresiones matemáticas.

Imagen relacionada

Computación Simbólica:

En matemáticas y ciencias de la computación, el álgebra computacional, también conocida como cálculo simbólico o cálculo algebraico, es un área científica que se refiere al estudio y desarrollo de algoritmos y software para la manipulación de expresiones matemáticas y otros objetos matemáticos. Aunque, hablando con propiedad, el álgebra computacional debe ser un sub-campo de la computación científica, ellos son considerados generalmente como campos distintos, porque la computación científica se basa generalmente en el análisis numérico con números aproximados en punto flotante; mientras que, el álgebra computacional enfatiza el cálculo exacto con expresiones que contengan variables que no tienen cualquier valor dado y por lo tanto son manipulados como símbolos (de ahí se debe el nombre de cálculo simbólico). (Fuente: Wikipedia).

Bueno, hay esta, nadie describe mejor las cosas que nuestros empleados de wikipedia.

Como podemos ver la computación simbólica (álgebra computacional) se diferencia de la computación científica en que se basa generalmente en el análisis numérico con números aproximados en punto flotante, mientras que, el álgebra computacional enfatiza el cálculo exacto con expresiones que contengan variables que no tienen cualquier valor dado y por lo tanto son manipulados como símbolos.

Sabiendo esto sabemos que podemos: simplificar expresiones, calcular derivados, integrales y límites, resolver ecuaciones, trabajar con matrices y mucho, mucho más.

Los software creados para este propósito son denominados "sistemas de álgebra computacional", el cual describiremos a continuación.

sistema de álgebra computacional:

Un sistema algebraico computacional o sistema de álgebra computacional (CAS, del inglés computer algebra system) es un programa de ordenador o calculadora avanzada que facilita el cálculo simbólico. La principal diferencia entre un CAS y una calculadora tradicional es la habilidad del primero para trabajar con ecuaciones y fórmulas simbólicamente, en lugar de numéricamente. Es decir, una expresión como a + b es interpretada siempre como "la suma de dos variables", y no como "la suma de dos números" (con valores asignados). (Fuente: Wikipedia).

Los sistemas algebraicos computacional nos permiten realizar:
  1. Simplificación de una expresión a la forma más simple o a una forma estándar.
  2. Cambio en la forma de las expresiones: expansión de productos y potencias, factorización, reescritura de un cociente de polinomios como suma de fracciones parciales, reescritura de funciones trigonométricas como exponenciales (y viceversa), etc.
  3. Operaciones con matrices incluyendo productos de matrices, inversa de una matriz, etc.
  4. Resolución de algunas ecuaciones.
  5. Cálculo de algunos límites de funciones.
  6. Cálculo de derivadas y derivadas parciales.
  7. Cálculo de algunas integrales indefinidas, definidas y de algunas transformadas integrales.
  8. Aproximación de funciones por desarrollo en series de potencias.
  9. Resolución de algunas ecuaciones diferenciales.
  10. Manipulación exacta de fracciones y radicales.
  11. Realización de operaciones con precisión arbitraria.
  12. Respecto a la presentación de resultados:
  13. Visualizado de las expresiones matemáticas en una forma bidimensional, usando con frecuencia sistemas de composición similares a TeX.
Los sistemas algebraicos computacional se encargan de todo eso.

Algunos de los CAS más destacados son:
  1. Mathematica
  2. Maple
  3. SageMath
  4. Matlab
  5. Magma
Pero en nuestro caso, no usaremos ninguno de estos, usaremos SymPy, y creo que ya es hora de jugar un poco con algo de código.

Una breve introducción a SymPy:

Como mencione anteriormente, SymPy es un software escrito en Python para la computación simbólica.

Si no dispones del modulo SymPy puedes descargarlo desde tu shell de windows o Linux. También puedes descargar los archivos ingresando al siguiente enlace: https://pypi.python.org/pypi/sympy.

SymPy incluye módulos para trazado, impresión (como la salida impresa bonita en 2D de fórmulas matemáticas), generación de código, física, estadística, combinatoria, teoría de números, geometría, lógica y más.

Comencemos con un ejemplo sencillo, veamos como SymPy maneja los símbolos. Para el ejemplo usare una ecuación de segundo grado como nuestra expresión matemática.


import sympy

x, y = sympy.symbols('x y')

exp = 2*x**2 - 7*x + 3

exp
Out[1]:
2*x**2 - 7*x + 3

Lo primero que hacemos es importar el modulo SymPy, luego declaramos los símbolos que usaremos, yo e declarado "x e y", ustedes pueden usar los que ustedes quieran, recuerden que son simples variables, cuando aprendí esto se me hizo más fácil aprender a resolver ecuaciones :D.

Bueno, luego de declarar los símbolos con el método "symbols", en una variable llamada "exp" guardo mi expresión matemática, la cual es una ecuación de segundo grado. Si observamos, al momento de escribir la expresión, Python trata a los símbolos como simples variables.

Ahora juguemos un poco con la expresión, que tal si le multiplicamos por 3:


import sympy

x, y = sympy.symbols('x y')

exp = 2*x**2 - 7*x + 3

exp * 3

Out[2]:
6*x**2 - 21*x + 9

Como pueden observar, la expresión a cambiado, se le a multiplicado 3 a todos los enteros. Pueden realizar las operaciones que ustedes deseen.


import sympy
x, y = sympy.symbols('x y')
exp = 2*x**2 - 7*x + 3
exp + 4

Out[3]:
2*x**2 - 7*x + 7


Perfecto, muy fácil ¿verdad?. Pero si observamos bien, el resultado puede confundir a varios, no es muy entendible a simple vista, y no se ve como una ecuación matemática. SymPy, nos proporciona un método para cambiar al apariencia de la expresión matemática, para ello vamos a hacer uso del método "init_printing", incorporado en el modulo SymPy, veamos un ejemplo:


import sympy
x, y = sympy.symbols('x y')

exp = 2*x**2 - 7*x + 2

sympy.init_printing(use_unicode=True)

exp
Out[4]:

Ahora es más agradable poder leer la expresión matemática.

SymPy nos proporciona el método solve, el cual nos permite resolver un sistema de ecuaciones:


import sympy
from sympy.solvers import solve
x, y = sympy.symbols('x y')

sympy.init_printing(use_unicode=True)
solve(x**2 - 4, x)
Out[30]:
2**2 - 4 == 0
Out[31]:
True
En este caso, hacemos uso del modulo sympy.solvers del cual importamos el método solve, al cual le pasamos como argumento la ecuación en su forma canónica. Al final, muestro que el resultado es correcto (Obvio, es un software escrito por matemáticos :D).

Bueno, esta fue la introducción de la serie Computación Simbólica con Python y SymPy, espero y les sea de mucha utilidad.

Comparte tu opinión con nosotros dejando un buen comentario :D.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

4 comentarios :
Write comentarios
  1. Eres genial .... te mereces un cien y si te lo voy a compartir con mis amigos

    ResponderEliminar
  2. Excelente artículo. ¿Dónde puedo encontrar un manual de SymPy?

    ResponderEliminar
  3. ¿Y será posible que puedas ayudarme en el uso de PyUSB y fingerprint? Al menos un manual por ahí? Necesito leer datos biométricos dactilares de un ZK4500, gracias de antemano por tu colaboración.

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .