Ich möchte dies Code:Integrate.quad funktioniert nicht richtig
wo
params = (-0.00019942774322628663, 0.017096351295537309)
functions = {'1': lambda x:norm.cdf(x,loc=params[0],scale=params[1]), '2': lambda x:laplace.cdf(x,loc=params[0],scale=params[1])}
Also habe ich geschrieben, um diese:
print integrate.quad(lambda x : ((108*numpy.exp(x))-150)*functions[selection](), 0.322411516161, numpy.inf)
wo Auswahl wird vom Benutzer angegeben. Ich bekomme diese Fehlermeldung:
TypeError: <lambda>() takes exactly 1 argument (0 given)
EDIT: Ich habe folgende Änderungen vorgenommen, die Antwort zu lesen:
print integrate.quad(lambda x : ((108*numpy.exp(x))-150)*functions[selection](x), 0.322411516161, numpy.inf)
und ich
IntegrationWarning: The occurrence of roundoff error is detected, which prevents the requested tolerance from being achieved. The error may be underestimated.warnings.warn(msg, IntegrationWarning)
(inf, nan)
Ihr Integral divergiert. Jede der CDF-Funktionen in "Auswahl" nähert sich 1, wenn x in Unendlich geht. Der Integrand ist die CDF multipliziert mit 108 x exp (x) - 150. Also ist der Integrand für großes x effektiv 108 × exp (x) - 150, und das Integral von diesem über [x0, unendlich] divergiert. Überprüfen Sie das Problem, das Sie lösen möchten, um sicherzustellen, dass Sie die richtige Funktion integrieren. Vielleicht möchten Sie die PDF (https://en.wikipedia.org/wiki/Probability_density_function) anstelle der CDF verwenden? –