我有一个函数f(x)= 1/x^2,我用scipy. integrate. quad. scipy.integrate.quad来计算从0到1的积分。quad是一个自适应积分程序,我想知道函数f在[0,1]的哪些区域被计算。那么,当对积分进行估计时,函数f在x的哪些值被调用?我正在考虑使用一个全局变量,并将调用的x值附加到它的后面,以跟踪使用了哪些x值。但是,我对如何做到这一点不太熟悉,非常感谢任何帮助。然后,计划绘制直方图,以查看区间[0,1]中的哪些区域被评估得最多。
ui7jx7zq1#
你可以使用一个装饰器类来保存每个值x,然后再对函数求值:
x
class MemoizePoints: def __init__(self, fun): self.fun = fun self.points = [] def __call__(self, x, *args): self.points.append(x) return self.fun(x, *args) f = lambda x: 1 / x**2 fun = MemoizePoints(f) quad(fun, a = 1e-6, b = 1.0)
然后,fun.points包含函数f计算的所有x值。
fun.points
f
1条答案
按热度按时间ui7jx7zq1#
你可以使用一个装饰器类来保存每个值
x
,然后再对函数求值:然后,
fun.points
包含函数f
计算的所有x
值。