下面是我的代码片段。
from scipy.integrate import quad
from numpy import exp, log, inf
def f(x):
return log(log(x))/(x*log(x**2))
val, err = quad(f, exp(), exp(2))
val
我知道代码的结构是正确的,但是我不能正确地格式化exp()
。我做错了什么?该函数应输出0.069324。提前感谢您的帮助!
以下是来自WolfRamAlpha的答案:
发布于 2018-08-02 07:50:58
numpy的exp是一个函数,而不是一个数字。你想要的
exp(1) = e
exp(2) = e**2
或者也许
import numpy as np
np.e
np.e**2
当您的集成受到限制时。
也就是说,我得到了
from numpy import exp, log
def f(x):
return log(log(x))/(x*log(x**2))
val, err = quad(f, exp(1), exp(2))
val
返回0.12011325347955035
这绝对是这个积分的值。您可以更改变量以进行验证
val,err = quad(lambda x: log(x)/(2*x),1,2)
得到相同的结果。
发布于 2018-08-02 07:51:35
只需将exp()
替换为exp(1)
,就可以了。顺便说一下,一旦你找出了正确的函数,你也可以使用一个线性的lambda函数。您的代码是完全正确的。我想分享另一种可能的方式来实现同样的事情。
f = lambda x: np.log(np.log(x))/(x*np.log(x**2))
val, err = quad(f, exp(1), 2*exp(1))
https://stackoverflow.com/questions/51643687
复制相似问题