Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用梯形方法集成SciPy问题(';numpy.ndarray';对象不可调用)_Python_Python 3.x_Numpy_Numpy Ndarray_Integrate - Fatal编程技术网

Python 使用梯形方法集成SciPy问题(';numpy.ndarray';对象不可调用)

Python 使用梯形方法集成SciPy问题(';numpy.ndarray';对象不可调用),python,python-3.x,numpy,numpy-ndarray,integrate,Python,Python 3.x,Numpy,Numpy Ndarray,Integrate,我正在尝试创建一个函数,它允许您为y输入一个具有上下限和N步数的表达式。它接受表达式,应该对其进行积分,然后通过梯形法运行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

我正在尝试创建一个函数,它允许您为y输入一个具有上下限和N步数的表达式。它接受表达式,应该对其进行积分,然后通过梯形法运行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,b,a,N):
    step = (b-a)/N
    lower = np.linspace(b,a,N,endpoint=False)
    upper = np.linspace(b+step,a,N)
    result = 0
    for n in range(N):
        result += method(f,lower[n],upper[n])
    return result

def trapezium_rule_integration_function(f,a,b,N):
    x = np.linspace(b,a,N)
    yf = []
    for p in x:
        yf.append(f(p))
    y = np.array(yf)
    return multistep(y,trap,b,a,N)
y = 1/(1+x**2)
trapezium_rule_integration_function(y,10,0,100)

提前感谢您提供的任何支持


约翰·布拉姆斯

通过快速观察,我发现这个错误源于函数梯形规则积分函数

y = np.array(yf)
return multistep(y,trap,b,a,N)
multistep的第一个参数应该是一个函数,但是您提供了一个数组y,它不能由“()”调用。然后将该数组传递给multistep,multistep需要一个函数f

顺便说一下,你应该把y重写为

y = lambda x: 1/(1+x**2)

祝你好运。

非常感谢,这是一个巨大的帮助!!