我做Python中的函數計算根據梯形規則定積分: Trapezoidal rule formula由梯形規則算法積分我寫的,是給10倍的答案
這是代碼:
from math import ceil
def Trapez_rule(f, a, b, n):
'''Calculates an estimation of a definite integral of a function f(x), between the boundries a, b, by dividing the area to n equal areas'''
sum = (f(a) + f(b))/2
for i in range(ceil((b * n))):
sum += f(a + i/n)
sum *= (b - a)/n
return sum
它給出的答案是它應該返回的10倍。 我無法找到問題的根源。
在for循環中嘗試打印以查看發生了什麼,然後您可能會自己發現問題。 – dustin
由於您的建議,我現在就這樣做了。我在循環中添加了「print(str(f(a + i/n))+」「+ str(sum))」這一行。沒有辦法知道應該在那裏出現什麼數字。最後的結果也不能從循環中理解,因爲稍後你將它乘以另一個數字,並完全改變結果。 –
在每個步驟中打印中間值,或者使用調試器。你會看到你的假設破裂的地方。 – 9000