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.

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
Tags:  , ,

Answer

  1. Avatar for 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ón req1():

    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 = dfg.subs(x, a).evalf().round(2)
    
        return res
    

    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étodo round().

    Con esta versión actualizada, deberías poder pasar una función con abs() como entrada y recibir un valor decimal redondeado como resultado.

Comments are closed.