梯形规则给出列表中的值

时间:2016-03-24 13:29:58

标签: python python-2.7 integration area

有没有办法对列表中的一组x和y值执行梯形规则?我有两个数字列表,当相互绘制时会产生钟形曲线形状,我将如何找到曲线区域?我有这个代码,但我不知道如何修改它只使用两个数字列表;

def trap0 (f ,a ,b ,n ):
    # Basic trapezium rule . Integrate f(x ) over theinterval from a to b using n strips
    h= float (b-a)/n
    s =0.5*(f(a)+f(b))
    for i in range (1,n):
        s= s+f(a+i*h)
    return s*h

1 个答案:

答案 0 :(得分:0)

您想要整合哪种功能?是吗?通过将x-coords排序为顺序然后在连续(x,y)对之间线性插值给出的那个?

或者你有一堆可能不规则间隔(x,f(x))对的想法,你想要计算连续对定义的梯形区域的总和(这将是一个近似值)通过这些点的任何函数的积分?)

如果是前者:我建议这些内容(危险:未经测试的代码):

Constraints to margins

之后您可以创建class PiecewiseLinearFunction: def __init__(self, xs, ys): self.coords = zip(xs, ys) self.coords.sort() def __call__(self, x): # I'll let you implement this # but the idea is to find which interval x lies in, e.g. # by bisection, and then to evaluate f by linear interpolation # between the ys on either side 的实例并将其传递给您的PiecewiseLinearFunction函数或其他任何内容。

如果后者:对(x,y)对进行排序,可能与上面的代码一样,然后计算每个梯形的面积(宽度乘以平均高度)并加起来。