How can I calculate the area between two curves?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Marko Boskovic
am 4 Nov. 2018
Beantwortet: madhan ravi
am 4 Nov. 2018
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?
0 Kommentare
Akzeptierte Antwort
Rik
am 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))
0 Kommentare
Weitere Antworten (1)
madhan ravi
am 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))
0 Kommentare
Siehe auch
Kategorien
Mehr zu Probability Distributions and Hypothesis Tests finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!