【发布时间】:2014-02-04 11:02:42
【问题描述】:
我正在尝试在 Python 2.7.2 中实现梯形规则。我写了以下函数:
def trapezoidal(f, a, b, n):
h = float(b - a) / n
s = 0.0
s += h * f(a)
for i in range(1, n):
s += 2.0 * h * f(a + i*h)
s += h * f(b)
return s
但是,f(lambda x:x**2, 5, 10, 100) 返回 583.333(它应该返回 291.667),所以很明显我的脚本有问题。不过我看不出来。
【问题讨论】:
-
可能并非巧合,583.333 / 2 = 291.6665。
-
提示:您返回的正好是应返回的两倍。 trapezoidal rule 公式中有一个
/ 2分数。你的代码没有。
标签: python numerical-integration