lis中给定值的梯形规则

2024-09-24 10:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法对列表中的一组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

Tags: 代码列表basic规则def数字rule曲线
1条回答
网友
1楼 · 发布于 2024-09-24 10:25:06

你到底想集成什么功能?例如,将x坐标排序,然后在连续(x,y)对之间进行线性插值?你知道吗

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

如果前者:我建议如下(危险:未经测试的代码):

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的实例并将其传递给trap0函数或其他任何函数。你知道吗

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

相关问题 更多 >