Я пытаюсь реализовать трапецеидальное правило в Python 2.7.2. Я написал следующую функцию:Трапецеидальное правило в Python
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
Однако, е (лямбда х: х ** 2, 5, 10, 100) возвращает 583,333 (он должен вернуться 291.667), так ясно есть что-то не так с мой сценарий. Я не могу это заметить.
Вероятно, не случайно, 583,333/2 = 291,6665. – bogatron
Подсказка: вы возвращаете ровно дважды то, что вы должны возвращать. В формуле [trapezoidal rule] (http://en.wikipedia.org/wiki/Trapezoidal_rule) есть фракция '/ 2'. У вашего кода нет. – abarnert