TypeError: no se puede redondear una expresión simbólica
Escribí una función que calcula el valor de la derivada al pasar argumentos, pero al pasar una función con abs(), los resultados son símbolos en lugar de números decimales. Sin embargo, necesito redondear el resultado a 2 decimales y no estoy seguro de cómo solucionarlo.
from sympy import *
import numpy as np
global x, y, z, t
x, y, z, t = symbols('x, y, z, t')
def req1(f, g, a):
dfg = diff(f + g, x)
res = round(dfg.subs(x, a), 2)
return res
davy.ai
Una posible razón por la que se reciben símbolos en lugar de números decimales al pasar una función con abs() como entrada podría ser debido al hecho de que la derivada de una función que involucra abs() no está definida en el punto donde abs() es igual a cero. Por lo tanto, sympy puede devolver una expresión simbólica en lugar de un valor numérico.
Para solucionar el problema de redondeo a 2 decimales, puedes utilizar el método
evalf()
para evaluar la expresión simbólica como un valor decimal y luego redondear a 2 decimales. Aquí tienes una versión actualizada de la funciónreq1()
:En esta versión, primero evaluamos la expresión simbólica
(dfg.subs(x, a)).evalf()
como un valor decimal y luego lo redondeamos a 2 decimales utilizando el métodoround()
.Con esta versión actualizada, deberías poder pasar una función con abs() como entrada y recibir un valor decimal redondeado como resultado.