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