1
我有一段代碼,用於在腳本中使用梯形法則通過將誤差擬合到多項式來查找數值積分中的誤差。這部分代碼拋出一個浮點除以零錯誤,我不明白爲什麼或如何解決它。識別並修復浮點除以零錯誤(Python)
有人可以幫助我找到答案嗎?
def trap(f,a,b,dx,exact):
N = int(numpy.round(float(b-a)/dx))
w=(b-a)/N
sum = f(a)/2.0 + f(b)/2.0
for i in range(1,N):
sum += f(a+i*w)
area = sum * w
errorf = exact-area
# If the error crosses 0, a polynomial approximation
# to the absolute value will go crazy.
return errorf
該替代方法將引發同樣的錯誤
# alternate way to handle dx not a divisor of b-a
def alt_trap(f,a,b,dx,exact):
N = int(numpy.floor(float(b-a)/dx))
sum = f(a)/2.0 + f(a+N*dx)/2.0
for i in range(1,N):
sum+= f(a+i*dx)
area = sum*dx
# now add one trapezoid between a+Ndx and b
area += 1/2*(b-(a+N*dx))*(f(b)+f(a+N*dx))
errorf = exact-area
return errorf
'如果DX == 0:dx = 1e-8' ...可能做你想做的事......基本上你不能分成零,所以你必須定義你在這種情況下會發生什麼...... –
哦哇,這很明顯,現在你指出來。謝謝! – Errata