有没有办法对列表中的一组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
答案 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)对进行排序,可能与上面的代码一样,然后计算每个梯形的面积(宽度乘以平均高度)并加起来。