Computación Simbólica con Python y SymPy
Introducción:
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.
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:
- Simplificación de una expresión a la forma más simple o a una forma estándar.
- 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.
- Operaciones con matrices incluyendo productos de matrices, inversa de una matriz, etc.
- Resolución de algunas ecuaciones.
- Cálculo de algunos límites de funciones.
- Cálculo de derivadas y derivadas parciales.
- Cálculo de algunas integrales indefinidas, definidas y de algunas transformadas integrales.
- Aproximación de funciones por desarrollo en series de potencias.
- Resolución de algunas ecuaciones diferenciales.
- Manipulación exacta de fracciones y radicales.
- Realización de operaciones con precisión arbitraria.
- Respecto a la presentación de resultados:
- 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:
Una breve introducción a 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
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
import sympy
x, y = sympy.symbols('x y')
exp = 2*x**2 - 7*x + 3
exp + 4
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
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)
2**2 - 4 == 0
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.
-
-
Muchas gracias 😀
-
-
Excelente artículo. ¿Dónde puedo encontrar un manual de SymPy?
-
¿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.
Deja una respuesta
Eres genial .... te mereces un cien y si te lo voy a compartir con mis amigos