我的Python梯形代码表示未定义x

时间:2017-03-26 09:12:53

标签: python-3.x

我正在尝试使用梯形规则找到Sin^2(x)/x^2的集成,但在运行时却说x id未定义。谁能告诉我什么是错的?

import math
c=math.sin`

def trapezoidal(f,  a, b, N):
    if x!=0:
        h=(b-a)/N
        s=0.0
        s+=f(a)/2.0
        for i in range (1,N):
            s+=f(a+i*h)
        s+=f(b)/2.0
        Y=s*h
    else:
        y=1
    return Y`
for n in range (1,11):
    N=2**n
    result=trapezoidal(lambda x:((c(x)*c(x))/(x**2)), 0, 1000, N)
    print(repr(n).rjust(10), repr(result).rjust(30))`

1 个答案:

答案 0 :(得分:1)

你没有在函数中调用x。在你的情况下,你想循环遍历函数f中的每个元素。

如果你不想使用pythonic方式,你可以看看numpy和scipy。这些封装为基本操作(如积分和矩阵计算)提供了优化的功能。看看np.trapz(https://docs.scipy.org/doc/numpy/reference/generated/numpy.trapz.html),sp.integrate(https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/integrate.html