如何添加具有不同 x 值的 y 值?

问题描述

我有两条曲线要求和。 x 和 y 值存储在数组中。问题是,两条曲线的 x 值并不相同。

x1 = [0.56,1.06,1.56,2.06,2.56]
y1 = [29.1,27.3,26.6,24.7,20.3]

x2 = [0.42,0.92,1.42,1.92,2.42]
y2 = [51.8,43.6,40.2,36.4,34.5]

请注意,x 值不同,但 x 值之间的间隔保持为 0.5。 现在如何计算类似于 y1+y2=y3 的两条曲线的总和,但要考虑不同的 x 值?As you can see in the picture,I want to get the values of the new curve y3

解决方法

import matplotlib.pyplot as plt
import numpy as np

x1 = [0.56,1.06,1.56,2.06,2.56]
y1 = [29.1,27.3,26.6,24.7,20.3]

x2 = [0.42,0.92,1.42,1.92,2.42]
y2 = [51.8,43.6,40.2,36.4,34.5]

# calculate the minimum x value
min_x = min(min(x1),min(x2))
# calculate the maximum x value
max_x = max(max(x1),max(x2))

# creating interpolator
p1 = lambda x: np.interp(x,x1,y1)
p2 = lambda x: np.interp(x,x2,y2)

x = sorted(x1+x2)
y1 = [p1(i) for i in x]
y2 = [p2(i) for i in x]

# calculator y3
y3 = [i+j for i,j in zip(y1,y2)]

plt.plot(x,y1,label='y1')
plt.plot(x,y2,label='y2')
plt.plot(x,y3,label='y3')
plt.legend()
plt.show()

enter image description here