如何解决计算两条曲线之间到下一个交点的面积
我有两条相交多次的曲线。我不知道路口在哪里。我试图获取两个相交点之间每个区域的值,而无需手动设置边界。
到目前为止,我计算出了每条曲线的值,并以绿色绘制它们,以防logifunc高于logifuncsoll,如果logifunc低于logifuncsoll,则绘制红色。
E701077['logifuncsoll'] = 1811.7/ (1 + 769.67 * np.exp(-0.704566*(xsoll)))+14.5212
E701077['logifunc'] = 1847.28 / (1 + 312.09 * np.exp(-0.606454*(x701077)))-8.16471
plt.figure(dpi=300)
plt.plot(x701077,E701077['logifuncsoll'],'r',markersize=np.sqrt(1),label ="soll",color='red' )
plt.plot(x701077,E701077['logifunc'],label ="E701077",color='purple' )
plt.legend
fig,ax = plt.subplots(1,1,sharex=True)
ax.plot(x701077,linewidth=1,label='logifunc',color= 'purple')
ax.plot(x701077,label='logifuncsoll',color='black')
ax.fill_between(x701077,where=E701077['logifunc'] >= E701077['logifuncsoll'],facecolor='green',interpolate=True)
ax.fill_between(x701077,where=E701077['logifunc'] <= E701077['logifuncsoll'],facecolor='red',interpolate=True)
ax.legend(loc='upper left',frameon=False)
解决方法
两行之间的总差是使用scipy积分差函数的绝对值。
import scipy.integrate
left_lim = 0
right_lim = 27
func = lambda x: abs( (1811.7/ (1 + 769.67 * np.exp(-0.704566*(x)))+14.5212)-
(1847.28 / (1 + 312.09 * np.exp(-0.606454*(x)))-8.16471) )
area = scipy.integrate.quad(func,left_lim,right_lim)
要找到相交点,请使用Shapely。
import shapely
from shapely.geometry import LineString,Point
line1 = LineString(E701077['logifuncsoll'].values)
line2 = LineString(E701077['logifunc'].values)
int_pt = line1.intersection(line2)
point_of_intersection = int_pt.x,int_pt.y
print(point_of_intersection)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。