La función “function_range” de SymPy no funciona para funciones aparentemente simples.
Estoy intentando determinar el rango de una función, en este caso de un polinomio. Mi programa ya utiliza muchas funciones de SymPy, así que pensé que podría utilizar la función function_range
del módulo sympy.calculus.util
.
Para el polinomio 1/2*x**4-2*x**2-1/4*x
sobre el dominio R, no funciona y muestra este error:
>>> from sympy import S
>>> from sympy.abc import x
>>> expr = S(1)/2*x**4-2*x**2-S(1)/4*x
>>> function_range(expr, x, S.Reals)
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/base/data/home/apps/s~sympy-live-hrd/66.426491309333028408/sympy/sympy/calculus/util.py", line 223, in function_range
for critical_point in critical_points:
File "/base/data/home/apps/s~sympy-live-hrd/66.426491309333028408/sympy/sympy/sets/sets.py", line 1375, in __iter__
"The computation had not completed because of the "
TypeError: The computation had not completed because of the undecidable set membership is found in every candidates.
Teniendo en cuenta que esta función es perfectamente continua y no muy compleja, realmente no entiendo por qué SymPy no puede determinar el rango, ya que es bastante simple. ¿Estoy haciendo algo mal con la entrada? ¿Hay alternativas a SymPy para hacer esto?
davy.ai
Parece que SymPy está teniendo problemas para determinar el rango del polinomio dado utilizando la función
function_range
en el módulosympy.calculus.util
. Es extraño que una función simple y continua como esta esté causando problemas. Una solución alternativa podría ser probar un método diferente para encontrar el rango de la función. Por ejemplo, trazar la función e inspeccionar visualmente el gráfico puede dar una idea del rango. Otra opción podría ser utilizar técnicas de optimización para encontrar los valores mínimos y máximos de la función en el dominio dado. Esto se puede hacer utilizando el módulosympy.optimize
.