Saltar al contenido

Pasando argumentos a fsolve

Solución:

El problema es que necesita usar un asterisco para indicarle a su función que vuelva a empaquetar la tupla. La forma estándar de pasar argumentos como una tupla es la siguiente:

from numpy import sqrt   # leave this outside the function
from scipy.optimize import fsolve

#  here it is     V
def terminalV(Vt, *data):
    ro_p, ro, D_p, mi, g = data   # automatic unpacking, no need for the 'i for i'
    return sqrt((4*g*(ro_p - ro)*D_p)/(3*C_d(Re(data, Vt))*ro)) - Vt

data = (1800, 994.6, 0.208e-3, 8.931e-4, 9.80665)
Vt0 = 1
Vt = fsolve(terminalV, Vt0, args=data)

Sin fsolve, es decir, si solo quieres llamar terminalV por sí solo, por ejemplo, si desea ver su valor en Vt0, entonces debes desempacar data con una estrella:

data = (1800, 994.6, 0.208e-3, 8.931e-4, 9.80665)
Vt0 = 1
terminalV(Vt0, *data)

O pase los valores individualmente:

terminalV(Vt0, 1800, 994.6, 0.208e-3, 8.931e-4, 9.80665)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *