在Python中创建Romberg集成函数
我有一个用于Romberg集成的python函数,如下所示:在Python中创建Romberg集成函数,python,math,numerical-analysis,Python,Math,Numerical Analysis,我有一个用于Romberg集成的python函数,如下所示: def romberg(f,a,b,n): RArray = numpy.zeros(shape=(n,n)) for i in range(0,n): RArray[i,0]=trapezoidRule(f,a,b,i+1) for k in range(1,n): for j in range(1,k): RArray[k,j]=R
def romberg(f,a,b,n):
RArray = numpy.zeros(shape=(n,n))
for i in range(0,n):
RArray[i,0]=trapezoidRule(f,a,b,i+1)
for k in range(1,n):
for j in range(1,k):
RArray[k,j]=RArray[k,j-i]+((RArray[k,j-1]-RArray[k-1,j-1])/(4**(j-1)-1))
return RArray
其中梯形规则是函数
def trapezoidRule(f,a,b,n):
h=float((b-a)/n)
ans=(f(a)/2)+(f(b)/2)
for i in range(1,n):
ans+=f(a+(i*h))
ans=ans*h
return ans
我发送的参数包括:
f = lambda x: (3/(1+x**5))
a=0
b=2
n=4
但是我得到了一个运行时警告,而没有得到我想要的RArray。有人能帮我找出问题所在吗?(我很确定我的romberg函数中的范围是错误的,但不管怎样我调整了它们,我仍然会得到一个错误或警告)在第7行,当你除以
(4**(j-1)-1)
,当j==0
时,这个值变为零。
这就是为什么会出现“除以零”的运行时警告