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.

Llamando una función dentro de otra función scipy.minimize. Faltan 3 argumentos posicionales requeridos:

Entiendo que quieres saber cómo llamar una función dentro de otra función. Por ejemplo, quieres aproximar datos mediante una función racional, por lo que deseas minimizar la función de aproximación. Para ello, usas el siguiente código:

def racional(a, b, c, d, x):
return (a * x + b) / (x ** 2 + c * x + d)

def aproximacion(a, b, c, d, x, y, func):
return np.sum((func(a, b, c, d, x) – y) ** 2)

Quieres pasar la función racional a la función aproximacion y luego pasarla a scipy.minimize, como se muestra a continuación:

minimize(aproximacion, x0=(0, 0, 0, 0), args=(X, Y, racional,), method=’Nelder-Mead’)

Sin embargo, aparece el error: approximate() missing 3 required positional arguments: ‘x’, ‘y’, and ‘func’

Por lo tanto, quieres saber cómo trabajar con estas construcciones y las mejores prácticas para trabajar de esta manera.

Translation:

Quiero saber cómo llamar una función dentro de otra función. Por ejemplo, quiero aproximar datos mediante una función racional, por lo que deseo minimizar la función de aproximación. Para ello, uso:

def racional(a, b, c, d, x):
return (a * x + b) / (x ** 2 + c * x + d)

def aproximacion(a, b, c, d, x, y, func):
return np.sum((func(a, b, c, d, x) – y) ** 2)

Quiero pasar la función racional a la función aproximacion y luego pasarla a scipy.minimize, usando:

minimize(aproximacion, x0=(0, 0, 0, 0), args=(X, Y, racional,), method=’Nelder-Mead’)

Pero aparece el siguiente error: approximate() falta 3 argumentos posicionales requeridos: ‘x’, ‘y’ y ‘func’

Por lo tanto, quiero saber cómo trabajar con estas construcciones y las mejores prácticas para trabajar de esta manera.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Debe pasar los argumentos x, y y func a la función approximate cuando la llame. Puede hacer esto agregándolos al argumento args de minimize:

    minimize(approximate, x0=(0, 0, 0, 0), args=(X, Y, rational, X, Y, func), method='Nelder-Mead')
    

    También puede pasar los argumentos directamente a la función approximate:

    minimize(approximate(X, Y, rational), x0=(0, 0, 0, 0), method='Nelder-Mead')
    

Comments are closed.