首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >左手和右手两条曲线之间的计算绿色面积

问左手和右手两条曲线之间的计算绿色面积
EN

Stack Overflow用户
提问于 2022-05-18 13:02:37
回答 2查看 81关注 0票数 0

你好,我如何计算绿区域的值(在python中),它位于蓝线的左边,而在蓝线的右边?

因此,只有在黑线位于黄线之上的地方(这些线是由数组而不是函数产生的)。

​

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-18 15:48:11

如果在相同的点上定义了黑线f和黄线g的向量,则可以对h大于零的曲线h = f - g进行积分:

代码语言:javascript
复制
h = f - g
h_positive = h * (h>0)

​

​

如果您的x值存储在向量xx中,并且图的两个部分之间的边界是cutoff (蓝线),那么您可以用numpy.trapz数值计算h_positive的积分。

代码语言:javascript
复制
cutoff_idx = np.where(xx >= cutoff)[0][0]

left_area = np.trapz(h_positive[:cutoff_idx], xx[:cutoff_idx])
right_area = np.trapz(h_positive[cutoff_idx:], xx[cutoff_idx:])

print(f'Left area: {left_area}')
print(f'Right area: {right_area}')
print(f'Difference: {left_area - right_area}')

示例输出(带有估计输入数据):

代码语言:javascript
复制
Left area: 0.0034731843629035204
Right area: 0.021175629261965995
Difference: -0.017702444899062475
票数 1
EN

Stack Overflow用户

发布于 2022-05-18 13:35:55

设黑线为函数f(x),黄色为g(x)。你要做的是计算积分:

​

其中a和b是f(x)和g(x)在g(x) < f(x)的区间内的交点。在你的例子中,你必须计算3个这样的积分。

从算法上讲,你要做的是:

  1. 找到蓝线和x轴的交点,以分割到左和右间隔。

。

  1. 为每个间隔执行以下操作:

2.1。求f(x),g(x)的交点

2.2。找到g(x) < f(x)的区间

2.3。对于步骤2.2的每个间隔:

2.3.1计算上述积分以求绿色区域

我还没有使用Python进行数学计算,所以我不能真正地指导您完成Python步骤,但希望我的评论和您的googling技巧能够给您提供具体的信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72289751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档