我似乎不知道如何获得正确的积分值。我没有收到错误,当我测试函数的各个元素时,它似乎给了我所有正确的值,但是当我将它们放在一起时,它给了我一个糟糕的结果。
到目前为止,这就是我所拥有的
def trap_rule(y_values, x_values):
delta = (x_values[-1] - x_values[0])/(len(x_values))
int_ = 0.0
for i in range(0, len(y_values)):
int_ += (y_values[i-1] + y_values[i]) / 2
int_ = int_ * delta
return int_
mydata_sund= pd.read_csv("sund1.csv")
sund_time = list(mydata_sund["time [hr]"])
sund_power = list(mydata_sund["power [kW]"])
intergral = trap_rule(sund_power, sund_time)
我得到的输出是 3.5005,我不正确......我认为 它确实给了我两个列表,其中包含正确的数据,因此我 90% 确定导入文件没有问题。 当我计算函数的 delta_x 时,它也会返回正确的值
我一直试图在这里找到答案,但我似乎找不到与使用列表相关的任何内容,而不仅仅是已经给出的值。
提前抱歉,如果格式错误,这是我第一次使用 StackOverflow
这里有几个问题:
len(x_values)
点,但需要添加 len(x_values)-1
梯形的面积。delta
并将其应用于所有梯形,您可以假设 x_values
间隔均匀。对于您正在使用的特定数据集来说,这可能是正确的,但通常情况并非如此。最好为每个梯形计算它。这是修订版:
def trap_rule(y_values, x_values):
area = 0.0
for i in range(0, len(y_values)-1):
area += (y_values[i] + y_values[i+1]) * (x_values[i+1] - x_values[i]) / 2
return area