集成返回预定义区域所需的 y 值

Integration returning required y value for predefined area

鉴于以下情况:

我要计算:

我认为这一定是一个迭代过程,其中还必须由用户设置拟合标准(和精确度)。

直到现在,我还没有找到开始的方法;除了纯粹的整合。

想法是指定一个区域。应计算包围该区域的峰左侧和右侧的 y 值。


编辑

如果应用接受的答案,这就是结果。

您可以通过降低一些 y 值来实现此目的,直到达到您的区域目标。详情见下方评论。

% Input data
x = 0:0.01:pi;
y = sin(x);

target = 1;     % Target area

yi = max( y );  % Initialise yi to be max possible y
dy = 0.001;     % Step change in yi

Ai = 0;         % Area each iteration
thresh = 0;     % Threshold for stopping loop
while target - Ai > thresh && yi >= min(y)
    yi = yi - dy;
    ix = y >= yi;
    % Approximate integral above the line
    Ai = trapz( x(ix), y(ix) - yi ); 
end

% Plot
figure(1); clf; hold on
plot( x, y );
patch( x(ix), y(ix), [1,0.5,0.5], 'facealpha', 0.5 );
plot( x, ones(size(x))*yi, '--', 'linewidth', 2 )
xlim( [min(x),max(x)] )

输出: