es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que SymPy está teniendo problemas para determinar el rango del polinomio dado utilizando la función function_range en el módulo sympy.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ódulo sympy.optimize.

Comments are closed.