Álgebra simbólica
Contents
13.3. Álgebra simbólica#
Sympy
es una librería de álgebra simbólica. Se importa así:
import sympy as sym
En vez de realizar operaciones de manera numérica, el álgebra simbólica guarda las operaciones como símbolos. Obtenga la siguiente operación:
Aprendizaje de código
import numpy as np
a=np.sqrt(11)
print(a)
y usando sympy
import sympy as sym
a=sympy.sqrt(11)
print(a)
# raiz de 11 en Python estándar
# raíz de 11 en Python simbólico
Para pensar
¿Qué diferencias observa entre los resultados de print(a)
de python estándar y de python simbólico?
Aprendizaje de código
Podemos mejorar la apariencia de una expresión si en vez de usar print utilizamos:
sym.pprint(a)
o simplemente escribimos el nombre de la variable.
# Pruebe la alternativa de impresión.
Aprendizaje de código
Podemos obtener el valor numérico con evalf().
Obtenga el valor numérico de \(\sqrt{11}\)
# Valor numérico de raíz de 11
a.evalf()
Aprendizaje de código
Las variables comunes de álgebra son símbolos. Si queremos definir x, escribimos
x=sym.symbols("x")
# Defina la variable simbólica x
Imprimima x para verificar.
# Imprima x
Una variable puede almacenar cosas distintas a su nombre. Pruebe con
Aprendizaje de código
y=x+1
e imprima \(y\). Observe que el resultado no es un número, sino una expresión.
# Defina "y" simbólica e imprímala.
Es posible multiplicar expresiones y hacerles cualquier tipo de operación. Por ejemplo, haga el producto \(xy\), guárdelo en una variable \(z\) e imprima el resultado.
# z = xy
Aprendiendo código
Se puede obtener el resultado de desarrollar las operaciones con
sym.expand(expresión)
Desarrolle la operación contenida en z, guárdelo en una variable c e imprímala.
# Expanda el contenido de la variable z
c=sym.expand(z)
sym.pprint(c)
2
x + x
Aprendizaje de codigo
Podemos obtener expresiones en su forma factorizada con sp.simplify().
Pruebe con la variable c.
# Simplifique c
sym.simplify(c)
Aprendizaje de código
Se pueden utilizar álgebra simbólica para derivar, esto se hace con
sym.diff(funcion, variable a derivar, orden de la derivada).
o si vamos a derivar respecto a diferentes variables
sym.diff(funcion, variable a derivar1, variable a derivar2, variable a derivar3,...).
Exprese de manera simbólica la función
y obtenga \(\frac{df}{dx}\) y \(\frac{d^2f}{dx^2}\).
# Exprese f(x) y derive a primer y segundo orden.
x=sym.symbols("x")
f=x**2+sym.sin(x)
sym.pprint(f)
sym.pprint(sym.diff(f,x))
sym.pprint(sym.diff(f,x,2))
2
x + sin(x)
2⋅x + cos(x)
2 - sin(x)
Aprendizaje de código
Podemos integrar simbólicamente con
sym.integrate(funcion, variable a integrar1, variable a integrar2, variable a integrar3,...)
Defina la función
Y realice la integral indefinida
# Defina f(r) = e^{-r} y realice la integral indicada.
r=sym.symbols("r")
f=sym.exp(-r)
sym.pprint(f)
sym.pprint(sym.integrate(f,r))
-r
ℯ
-r
-ℯ
Aprendizaje de código
Podemos integrar de manera definida con
sym.integrate(funcion, (variable_a_integrar1,lim_inf1,lim_sup1), (variable_a_integrar2,lim_inf2,lim_sup2),(variable_a_integrar3,lim_inf3,lim_sup3),...)
Defina la función
Y realice la integral
# Realice integral definida
r=sym.symbols("r")
alpha=sym.symbols("alpha",positive=True)
f=sym.exp(-alpha*r**2)
sym.pprint(sym.integrate(f,(r,0,sym.oo)))
√π
────
2⋅√α
También se pueden resolver ecuaciones diferenciales. dsolve indica resolver una ecuación, y Eq indica la ecuación. Resuelva
definiendo \(k^2=\frac{2mE}{\hbar^2}\)
x=sym.symbols("x")
k=sym.symbols("k")
psi=sym.Function("psi")
eq=sym.Eq(psi(x).diff(x,x)+k**2*psi(x),0)
sym.pprint(eq)
sym.pprint(sym.dsolve(eq,psi(x)))
2
2 d
k ⋅ψ(x) + ───(ψ(x)) = 0
2
dx
-ⅈ⋅k⋅x ⅈ⋅k⋅x
ψ(x) = C₁⋅ℯ + C₂⋅ℯ
13.3.1. Referencias#
Página oficial de sympy www.sympy.org