如何解决使用梯形方法SciPy进行集成的问题“ numpy.ndarray”对象不可调用
我正在尝试创建一个函数,该函数可让您输入带有上限和下限以及N个步骤的y表达式。它接受表达式,应该对其进行积分,然后将其通过梯形方法运行N步,然后将结果吐出。目前,我遇到了一个错误(“ numpy.ndarray”对象不可调用)。不确定如何解决!这是代码!
import numpy as np
import scipy.integrate as integrate
%matplotlib inline
def trap(f,b,a):
return 0.5 * (b-a)*(f(a) + f(b))
def multistep(f,method,a,N):
step = (b-a)/N
lower = np.linspace(b,N,endpoint=False)
upper = np.linspace(b+step,N)
result = 0
for n in range(N):
result += method(f,lower[n],upper[n])
return result
def trapezium_rule_integration_function(f,N):
x = np.linspace(b,N)
yf = []
for p in x:
yf.append(f(p))
y = np.array(yf)
return multistep(y,trap,N)
y = 1/(1+x**2)
trapezium_rule_integration_function(y,10,100)
在此先感谢您提供任何支持。
约翰·勃拉姆斯
解决方法
通过快速查看,我发现此错误源于函数trapezium_rule_integration_function,
y = np.array(yf)
return multistep(y,trap,b,a,N)
multistep的第一个参数应该是一个函数,但是您提供了一个数组y,它不能由'()'调用。然后将此数组传递给多步,多步需要一个函数f。
顺便说一句,您应该将y重写为
y = lambda x: 1/(1+x**2)
祝你好运。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。