python积分计算程序的编制

python积分计算程序的编制,python,math,integral,Python,Math,Integral,我有一个Python程序,用于计算函数在一个点上的积分。但这根本没有效果,因为我想同时计算更多的x值,而不是一个值。有人知道吗 from scitools.std import * def trapezoidal(f,a,x,n): h = (x-a)/float(n) I = 0.5*f(a) for i in iseq(1, n-1): I += f(a+i*h) I += 0.5*f(x) I *= h return I c

我有一个Python程序,用于计算函数在一个点上的积分。但这根本没有效果,因为我想同时计算更多的x值,而不是一个值。有人知道吗

from scitools.std import *
def trapezoidal(f,a,x,n):
    h = (x-a)/float(n)
    I = 0.5*f(a)
    for i in iseq(1, n-1):
        I += f(a+i*h)
    I += 0.5*f(x)
    I *= h
    return I

class Integral:
    def __init__(self, f, a, n=100):
        self.f, self.a, self.n = f,a,n
    def __call__(self,x):
        return trapezoidal(self.f,self.a,x,self.n)

如果你想在几个点上计算积分——也许你可以使用分段三次插值得到一个函数,
g
,它近似于
f
,并且可以以闭合(尽管是分段)形式进行积分。或者,如果你需要做许多数值积分,也许你可以考虑使用辛普森的规则,而不是使用梯形(因为没有特别考虑)。辛普森法则收敛得更快,而且几乎同样容易编程。如果你想计算多个点的积分——也许你可以使用分段三次插值得到一个函数,
g
,它近似于
f
,并且可以以闭合(尽管是分段)形式进行积分。或者,如果你需要做许多数值积分,也许你可以考虑使用辛普森的规则,而不是使用梯形,因为没有特殊的考虑,辛普森的规则收敛得更快,几乎同样容易编程。