Introducción
¿Qué es el cálculo simbólico?
La computación simbólica se ocupa del cálculo de objetos matemáticos. simbólicamente. Esto significa que los objetos matemáticos están representados. exactamente, no aproximadamente, y expresiones matemáticas como no evaluados, las variables se dejan en forma simbólica.
Tomemos un ejemplo. Digamos que queremos usar las funciones integradas de Python para calcular raíces cuadradas. Podríamos hacer algo como esto:
>>import math
>>math.sqrt(9)
>>>3.0
9 es un cuadrado perfecto, por lo que obtuvimos la respuesta exacta, 3. Pero supongamos que calculamos la raíz cuadrada de un número que no es un cuadrado perfecto.
>>math.sqrt(8) >>>2.82842712475
Aquí obtuvimos un resultado aproximado. 2.82842712475 no es la raíz cuadrada exacta de 8 (de hecho, la raíz cuadrada real de 8 no puede representarse mediante un número finito decimal, ya que es un número irracional). Si lo único que nos importara fuera la forma decimal de la raíz cuadrada de 8, habríamos terminado.
Pero supongamos que queremos ir más allá. Recordar que √8 = √(4)*(2) = 2√2
>>import sympy
>>sympy.sqrt(3) >>>sqrt(3)
Además, y aquí es donde empezamos a ver el poder real de la
cálculo: los resultados simbólicos se pueden simplificar simbólicamente. >>sympy.sqrt(8) >>2*sqrt(2)
Un ejemplo más interesante
El ejemplo anterior comienza a mostrar cómo podemos manipular números irracionales. exactamente usando SymPy. Pero es mucho más poderoso que eso. Simbólicos sistemas de cálculo (que, por cierto, también suelen denominarse álgebra informática) sistemas, o simplemente CAS) como SymPy son capaces de calcular simbólicos expresiones con variables.
Como veremos más adelante, en SymPy, las variables se definen usando symbols
.
A diferencia de muchos sistemas de manipulación simbólica, las variables en SymPy deben definirse
antes de su uso (la razón de esto se discutirá en la próxima
sección ).
Definamos una expresión simbólica, que represente la expresión matemática. x +2y
Definamos una expresión simbólica, que represente la expresión matemática.
>>from sympy import symbols
>>x, y = symbols('x y')
>>expr = x + 2*y
>>expr
>>>x + 2*y
Tenga en cuenta que escribimos x + 2*y
tal como lo haríamos si x
y
y
eran
variables ordinarias de Python. Pero en este caso, en lugar de evaluar
algo, la expresión permanece igual x + 2*y
. Ahora juguemos
con eso:
>>expr + 1 >>x + 2*y + 1 >>expr - x >>>2*y
Observe algo en el ejemplo anterior. cuando escribimos expr - x
, no lo hicimos
conseguir x + 2*y - x
, sino más bien sólo 2*y
. El x
y el -x
se cancelan automáticamente entre sí. Esto es similar a como sqrt(8)
se convierte automáticamente en 2*sqrt(2)
arriba. Este no es siempre el caso en
SymPy, sin embargo:
>>x*expr
>>>x*(x + 2*y)
Aquí podríamos haber esperado x (x+2y) transformarse en x2 + 2xy , pero en cambio, vemos que la expresión se dejó sola. Este es un tema común en SymPy. Aparte de simplificaciones obvias como x -x= 0 y √8 = 2√2 , la mayoría de las simplificaciones no se realizan automáticamente. Esto es porque podríamos preferir la forma factorizada , x (x+2y) o podríamos preferir el forma expandida x2 + 2xy . Ambas formas son útiles en diferentes circunstancias. En SymPy existen funciones para pasar de un formulario a otro
>>from sympy import expand, factor
>>expanded_expr = expand(x*expr)
>>expanded_expr >>x**2 + 2*x*y
>>factor(expanded_expr) >>>x*(x + 2*y)
No hay comentarios.:
Publicar un comentario