import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
比方说,您的数据是关于:
x = np.array([1000, 2000, 4000, 6000])
y1 = np.array([500, 800, 1500, 2000])
y2 = np.array([500, 600, 1800, 2000])
您无需诉诸验配程序。我们可以简单地计算两条曲线的面积:
I1 = integrate.trapezoid(y1, x=x) # 6450000.0
I2 = integrate.trapezoid(y2, x=x) # 6750000.0
然后计算所需的高度差如下:
dy = (I1 - I2) / (x.max() - x.min()) # -60.0
y3 = y2 + dy
我们可以确认新曲线与第一条曲线的面积相同:
I3 = integrate.trapezoid(y3, x=x) # 6450000.0
fig, axe = plt.subplots()
axe.plot(x, y1, "-o")
axe.plot(x, y2, "-o")
axe.plot(x, y3, "-o")
axe.grid()