How can I calculate the area between two curves?

5 views (last 30 days)
I heave a problem, a need to calculate area between two curves, but one curve is too complicate (y1=(100./0.93).*(((x./19).^(10))./(1+(x./19).^(10))).*exp(-x./485), another curve is constant curve (y2=5). How I can calculate area between them?

Accepted Answer

Rik
Rik on 4 Nov 2018
The polyarea function handles this just fine.
figure(1),clf(1)
x=0:1500;
y1=@(x)(100./0.93).*(((x./19).^(10))./(1+(x./19).^(10))).*exp(-x./485);
y2=@(x)5*ones(size(x));
plot(x,y1(x),x,y2(x))
Y=y1(x)-y2(x);
Y1=Y;
Y2=Y;Y2(Y2<0)=0;
Y3=abs(Y);
fprintf('A=%.0f (y2<y1 counting as negative)\n',polyarea(x,Y1))
fprintf('A=%.0f (y2<y1 not counting)\n',polyarea(x,Y2))
fprintf('A=%.0f (y2<y1 as well)\n',polyarea(x,Y3))

More Answers (1)

madhan ravi
madhan ravi on 4 Nov 2018
Answer taken from star strider:
x=0:10000;
y2=repmat(5,1,numel(x));
y1=(100./0.93).*(((x./19).^(10))./(1+(x./19).^(10))).*exp(-x./485);
x = 1:numel(y1); % Use The Appropriate Vector For The Most Accurate Results
hbar = min([y1; y2]); % Denoted By Horzontal Bars
vbar = max([y1; y2]) - hbar; % Denoted By Vertical Bars
Area = trapz(x,vbar) / (trapz(x,vbar) + trapz(x,hbar))

Categories

Find more on Probability Distributions and Hypothesis Tests in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!