Sympy
diciembre 07, 2016Sympy¶
Módulo de Python de computación simbólica, permite mostrar resultados de forma exacta y no aproximada como estan definidas por defecto y permite realizar operaciones con variables que no tienen un valor definido.
In [1]:
# Importación de la librería sympy
import sympy
Operaciones básicas¶
Normalmente una operación en Python arroja un resultado aproximado, cuyas cifras dependen del tipo de dato. Se hace una comparación entre algunas operaciones matemáticas con sympy y con la librería math.
Raiz cuadrada
In [2]:
import math
math.sqrt(8)
Out[2]:
In [3]:
sympy.sqrt(8)
Out[3]:
Logaritmo natural
In [4]:
sympy.log(2)
Out[4]:
In [5]:
math.log(2)
Out[5]:
Infinito
In [6]:
from sympy import oo
In [7]:
oo + 1
Out[7]:
In [8]:
34534535453 < oo
Out[8]:
In [9]:
34534 / oo
Out[9]:
In [10]:
oo / oo
Out[10]:
In [11]:
type(oo)
Out[11]:
Números racionales¶
In [12]:
number = sympy.S('3/4')
number
Out[12]:
In [13]:
2 * number
Out[13]:
Evaluación de expresiones¶
Para mostrar el resultado como número real se usa la función evalf( )
In [14]:
number.evalf()
Out[14]:
Definición de variables¶
Normalmente para realizar un operación con una variable, esta debe estar definida antes. Sympy permite realizar operaciones con variables sin tener su valor exacto, pero para no causar errores en Python se debe indicar que es una variable de sympy.
In [15]:
# Python reconoce x como una variable de sympy y ahora permite realizar
# operaciones con esta sin tener asignado un valor numérico
x = sympy.symbols('x')
In [16]:
x**2 + 4*x + 1
Out[16]:
In [17]:
x+4*x
Out[17]:
In [18]:
x**4/x**2
Out[18]:
Para definir varias variables
In [19]:
r, y = sympy.symbols('r y')
In [20]:
2*r + y + 5*r - 4*y
Out[20]:
Sustituir variables¶
Luego de definida una variable se generan expresiones al hacer operaciones con estas. El valor de la variable de sympy puede ser sustituida en cualquier momento y obtener el valor de la expresión. Para esto se usa el método subs( )
In [21]:
x = sympy.symbols('x')
# Se define la expresión
expr = x**4 - 1
expr
Out[21]:
In [22]:
# Se reemplaza x por 2
expr.subs(x, 2)
Out[22]:
In [23]:
expr = sympy.sin(x) + sympy.tan(x)
In [24]:
expr.subs(x, 0.5)
Out[24]:
Para una sustitución en expresiones con mas de una variable se puede usar un diccionario especificando los valores algunas o todas las variables.
In [25]:
a, b = sympy.symbols('a, b')
x = a + b
In [26]:
x.subs({a:2})
Out[26]:
In [27]:
x.subs({a:2, b:4})
Out[27]:
Simplificación¶
In [28]:
# Se definen las variables
x, y = sympy.symbols('x y')
In [29]:
sympy.simplify(sympy.sqrt(8*x*3))
Out[29]:
In [30]:
sympy.simplify(sympy.cos(x)**2 + sympy.sin(x)**2)
Out[30]:
In [31]:
sympy.simplify((x**4 + 5 * x**3 - 2 * x**2 + x)/(x**2 + x))
Out[31]:
In [32]:
sympy.S((x**4 + 5 * x**3 - 2 * x**2 + x)/(x**2 + x))
Out[32]:
Solución de ecuaciones con Sympy¶
La sintaxis para resolver una expresión algebraica con sympy consiste en usar la librería solve y en paréntesis usar la expresión y luego la incógnita:
solve(expresión a resolver, incógnita).
Algunos ejemplos de solución de ecuaciones con sympy:
solve(expresión a resolver, incógnita).
Algunos ejemplos de solución de ecuaciones con sympy:
2x-1=0
In [33]:
from sympy.solvers import solve
solve(2*x-1, x)
Out[33]:
2x^{2}+4x-6=0
In [34]:
solve(2*x**2 + 4*x - 6, x)
Out[34]:
x+y=1
xy=-20
xy=-20
In [35]:
eq1 = x + 2*y - 1
eq2 = x*y + 20
sol = solve((eq1, eq2), (x, y))
In [36]:
print sol
In [37]:
[[x.evalf(), y.evalf()] for x, y in sol]
Out[37]:
Polinomios¶
Expansión¶
Expandir el polinomio
P = (m-1)(m-6)(m-5)
P = (m-1)(m-6)(m-5)
In [38]:
p = sympy.simplify('(m-1)*(m-6)*(m-5)')
print p
In [39]:
p_exp = p.expand()
p_exp
Out[39]:
Factorización¶
Se toma el polinomio anterior expandido y se factoriza usando el método factor( )
In [40]:
p_exp.factor()
Out[40]:
Solución de la ecuación igualada a cero
In [41]:
solve(p, 'm')
Out[41]:
Note que al no haber definido m como una variable de sympy, al momento de reemplazar debe indicarse 'm' (como un string), de otra forma resulta un error porque la variable m no ha sido definida para el intérprete de Python.
raices¶
Se obtienen las raices del polinomio p igualado a cero
In [42]:
sympy.roots(p, multiple=True)
Out[42]:
Igualdad de expresiones¶
Se toman dos expresiones iguales:
In [43]:
m = sympy.symbols('m')
p = (m-1)*(m-6)*(m-5)
r = m**3 - 12*m**2 + 41*m - 30
Se sabe entonces que p es la expresión r factorizada, pero si se compara con el igual de Python (==) no las identifica como dos expresiones iguales
In [44]:
p == r
Out[44]:
In [45]:
p - r == 0
Out[45]:
Para hacer esta comparación se usa la función simplify
In [46]:
sympy.simplify(p - r) == 0
Out[46]:
1 comments
CASINOS for sale | Casino - jtmhub.com
ResponderEliminarCASINOS are now a 강원도 출장샵 part of the CASINO 광주광역 출장안마 RESORT located 문경 출장샵 in Temecula, CA. CASINOS are now a 익산 출장안마 part of the CASINO RESORT 충청남도 출장마사지 located in Temecula, CA.