我使用的是scipy quad,我显然误解了与限制选项相关的文档。我想限制我的函数被评估的子子区间数,以减少运行时间。我举了一个简短的例子来说明我的困惑。
def func(x):
print x
return x
quad(func,0,10,limit=4)
我希望打印4个x值,但我得到21个。任何帮助都会非常感激。
干杯, 威廉
答案 0 :(得分:1)
limit
关键字控制自适应子间隔的数量,但不直接控制评估的数量。也就是说,QUADPACK可能使用更高阶的正交,每个间隔对该函数进行多次评估。评估的数量也没有必要被4整除,因为例程可以进行一些额外的评估。
有关详细信息,请参阅source code
答案 1 :(得分:0)
打印件似乎来自你func
,而不是quad
。 quad
只是返回。
如果要打印结果,请尝试这样做:
def func(x):
return x
print quad(func, 0, 10, limit=4)
答案 2 :(得分:0)
你犯了一个错误,quad的结果是:
In [30]: a = quad(func,0,10,limit=4)
5.0
0.130467357414
9.86953264259
0.674683166555
9.32531683344
1.6029521585
8.3970478415
2.83302302935
7.16697697065
4.25562830509
5.74437169491
0.021714184871
9.97828581513
0.349212543221
9.65078745678
1.09591136707
8.90408863293
2.18621432666
7.81378567334
3.52803568649
6.47196431351
In [31]: a
Out[31]: (50.0, 5.551115123125783e-13)
只需删除功能中的print
语句,然后打印quad
。