从 x, y 坐标计算曲线下面积
Calculating area under curve from x, y coordinates
假设我有两个名为 x
和 y
的列表,它们都包含数字(坐标),假设:
x = [0, 1, 2, 3, 4, 4, 5]
y = [0, 1, 3, 3, 5, 6, 7]
我需要计算将这两个列表组合到 (x, y) 坐标时形成的曲线下面积。我真的不明白如何创建一个可以根据这些信息计算面积的函数。
即
def integrate(x, y):
""" x & y = lists, area_under_curve = float value of the area """
area_under_curve = 0
last_x = x[0]
last_y = y[0]
for cur_x, cur_y in list(zip(x, y))[1:]:
## some code here
return area_under_curve
如前所述,使用梯形法则函数相当简单
def integrate(x, y):
sm = 0
for i in range(1, len(x)):
h = x[i] - x[i-1]
sm += h * (y[i-1] + y[i]) / 2
return sm
背后的理论是使用插值计算梯形面积。
import numpy as np
x = [0, 1, 2, 3, 4, 4, 5]
y = [0, 1, 3, 3, 5, 6, 7]
def integrate(x, y):
area = np.trapz(y=y, x=x)
return area
print(integrate(x, y))
试试这个
假设我有两个名为 x
和 y
的列表,它们都包含数字(坐标),假设:
x = [0, 1, 2, 3, 4, 4, 5]
y = [0, 1, 3, 3, 5, 6, 7]
我需要计算将这两个列表组合到 (x, y) 坐标时形成的曲线下面积。我真的不明白如何创建一个可以根据这些信息计算面积的函数。
即
def integrate(x, y):
""" x & y = lists, area_under_curve = float value of the area """
area_under_curve = 0
last_x = x[0]
last_y = y[0]
for cur_x, cur_y in list(zip(x, y))[1:]:
## some code here
return area_under_curve
如前所述,使用梯形法则函数相当简单
def integrate(x, y):
sm = 0
for i in range(1, len(x)):
h = x[i] - x[i-1]
sm += h * (y[i-1] + y[i]) / 2
return sm
背后的理论是使用插值计算梯形面积。
import numpy as np
x = [0, 1, 2, 3, 4, 4, 5]
y = [0, 1, 3, 3, 5, 6, 7]
def integrate(x, y):
area = np.trapz(y=y, x=x)
return area
print(integrate(x, y))
试试这个