[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
SymPy es una librería usada para manejar de forma algebraica las expresiones matemáticas. Se requiere definir el símbolo que representa la variable en la expresión, por ejemplo la letra ‘x‘. Si la librería Sympy no está disponible o muestra un error la puede revisar las instrucciones del enlace instalar con pip.
Una formula o función matemática f(x) descrita como fx se puede derivar, integrar, simplificar sus términos. También se puede construir una expresión matemática, por ejemplo desarrollar los términos para un polinomio como Taylor.
Referencia: https://www.sympy.org/es/
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
..
1. Expresiones con Sympy
Una función f(x) como un polinomio
f(x) = (1-x)^5 + 5 x ((1-x)^4) - 0.4Se pueden manejar de forma algebraica con Sympy al declarar la variable independiente ‘x’ como un símbolo. La expresión se asigna a fx
import sympy as sym x = sym.Symbol('x') fx = (1-x)**5 + 5*x*((1-x)**4) - 0.4
Se simplifican o se expande los términos del polinomio con solo una instrucción,
fx = fx.expand()
print(fx)
mostrando el siguiente resultado:
4*x**5 - 15*x**4 + 20*x**3 - 10*x**2 + 0.6
o una presentación diferente con sym.pprint()
:
>>> sym.pprint(fx) 4 5 5*x*(1 - x) + (1 - x) - 0.4 >>>
Referencia: https://docs.sympy.org/latest/tutorials/intro-tutorial/printing.html#setting-up-pretty-printing
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
..
2. Operaciones, combinar otras expresiones
A una función simbólica fx se pueden añadir más términos con el mismo símbolo
>>> import sympy as sym >>> sym.Symbol('x') >>> fx = sym.cos(x) >>> gx = fx + x >>> gx x + cos(x) >>> gx = gx - 2 >>> gx x + cos(x) - 2
Por lo que las funciones simbólicas son útiles cuando se construyen expresiones, como en el caso de series de Taylor descritas en la Unidad01
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
..
3. Evaluar una expresión f(x) con Sympy
Las expresiones simbólicas se pueden evaluar en un punto, ejemplo x0=0.1
usando la instrucción fx.subs(x,x0), que sustituye el símbolo de la variable x
con el valor definido para x0
.
>>> import sympy as sym >>> sym.Symbol('x') >>> fx = sym.cos(x) >>> fx.subs(x,0.1) 0.995004165278026
Referencia: https://docs.sympy.org/latest/tutorials/intro-tutorial/basic_operations.html#substitution
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
..
4. Conversión de forma simbólica a forma numérica Lambda
Para evaluar varios puntos en la expresión en forma numérica para usar ‘x’ con valores en un vector o matriz como un arreglo, se convierte a la forma numérica Lambda con la instrucción sym.lambdify(x,fx)
>>> >>> import sympy as sym >>> sym.Symbol('x') >>> fx = sym.cos(x) &>>> f_x = sym.lambdify(x,fx) >>> f_x(0.1) 0.9950041652780258 >>> f_x([0.1,0.3,0.5]) array([0.99500417, 0.95533649, 0.87758256]) >>>
Referencia: https://docs.sympy.org/latest/tutorials/intro-tutorial/basic_operations.html#lambdify
Ejemplo: Polinomio de Taylor – Ejemplos con Sympy-Python
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
..
5. expresiones de Funciones matemáticas
Las Funciones matemáticas usadas en otras librerías como Numpy tienen también su representación simbólica en Sympy. Ejemplo cos(x):
f(x) = \cos (x)>>> import sympy as sym >>> x = sym.Symbol('x') >>> fx = sym.cos(x)
Realice pruebas con otras funciones: sin(x), exp(x), log(x), log10(x), Heaviside(x)
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
..
6. Derivadas con Sympy
Las expresiones de la derivada se obtienen con la expresión fx.diff(x,k), indicando la k-ésima derivada de la expresión.
>>> import sympy as sym >>> x = sym.Symbol('x') >>> fx = sym.cos(x) >>> x x >>> fx cos(x) >>> fx.diff(x,1) -sin(x) >>> fx.diff(x,2) -cos(x)
Referencia: https://docs.sympy.org/latest/tutorials/intro-tutorial/calculus.html#derivatives
Ejemplos: Sistemas LTI CT – Respuesta a entrada cero con Sympy-Python
Derivadas como expresión de Sympy sin evaluar
Cuando se requiere expresar tan solo la operación de derivadas, que será luego usada o reemplazada con otra expresión, se usa la derivada sin evaluar. Ejemplo:
y = \frac{d}{dx}f(x)Para más adelante definir f(x).
En Sympy, la expresión de y se realiza indicando que f será una variable
x = sym.Symbol('x', real=True) f = sym.Symbol('f', real=True) y = sym.diff(f,x, evaluate=False) # derivada sin evaluar g = sym.cos(x) + x**2 yg = y.subs(f,g).doit() # sustituye f con g y evalua .doit()
>>> y Derivative(f, x) >>> g x**2 + cos(x) >>> yg 2*x - sin(x)
Ejemplos:
Polinomio de Taylor – Ejemplos con Sympy-Python
EDO lineal – solución complementaria y particular con Sympy-Python
EDO lineal – ecuaciones auxiliar, general y complementaria con Sympy-Python
EDP Parabólica – analítico con Sympy-Python
EDP Elípticas – analítico con Sympy-Python
Evaluación de las expresiones Sympy
Se define la expresión ‘derivada’ y se la usa con la instrucción fx.subs(x,valor)
>>> fx.subs(x,0) 1 >>> fx.subs(x,1/3) 0.944956946314738 >>> derivada = fx.diff(x,1) >>> derivada -sin(x) >>> derivada.subs(x,1/3) -0.327194696796152 >>>
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]
..
7. Integrales con Sympy
Sympy incorpora la operación del integral en sus expresiones, que pueden ser integrales definidas en un intervalo o expresiones sin evaluar.
>>> import sympy as sym >>> t = sym.Symbol('t',real=True) >>> x = 10*sym.exp(-3*t) >>> x 10*exp(-3*t) >>> y = sym.integrate(x,(t,0,10)) >>> y 10/3 - 10*exp(-30)/3 >>> y = sym.integrate(x,(t,0,sym.oo)) >>> y 10/3
Referencia: https://docs.sympy.org/latest/tutorials/intro-tutorial/calculus.html#integrals
Ejemplos:
Transformada de Laplace – Integral con Sympy-Python
Series de Fourier de señales periódicas con Sympy-Python
Integral de Convolución entre x(t) y h(t) causal con Sympy-Python
[ expresiones ] [ operaciones ] [ evaluar f(x) ] [ f(x) a lambda ] [ f(x) matemáticas ] [ derivadas ] [ integrales ]