Using fzero for intesection and "integral" for area calculation

3 次查看(过去 30 天)
I'm trying to caluclate the area between the curves from about x=-0.22 and 4 as the intersection happens about in those two places. However having trouble using fzero to find the correct intersects and using "integral" to calculate the area.
clear, clc, clear plot
format short
g=@(x)exp((-x.^2)./2);
h=@(x) x.^2-4.*x;
x=linspace(-1,5,100);
plot(x,g(x));
hold on
plot(x,h(x));
z(1)=fzero(g,-0.22); % dont know how to use
z(2)=fzero(h,4); % dont know how to use
% integral
a=z(1);
b=z(2);
f=@(x) % dont know how to use
q=integral(f,a,b)

采纳的回答

Stephan
Stephan 2021-1-24
clear, clc, clear plot
format short
g=@(x)exp((-x.^2)./2);
h=@(x) x.^2-4.*x;
f=@(x) g(x) - h(x);
x=linspace(-1,5,100);
plot(x,g(x));
hold on
plot(x,h(x));
z(1)= fzero(f,-0.22);
z(2)= fzero(f,4)
% % integral
a=z(1);
b=z(2);
q=integral(f,a,b)

更多回答(2 个)

John D'Errico
John D'Errico 2021-1-24
编辑:John D'Errico 2021-1-24
g=@(x)exp((-x.^2)./2);
h=@(x) x.^2-4.*x;
x=linspace(-1,5,100);
plot(x,g(x));
hold on
plot(x,h(x));
You did that much correctly.
Now, you want to find the INTERSECTION point of the two curves. That is, you want to know where the curves have the same y value? Is that not where g(x) == h(x)?
Using fzero on g alone will not help you! What is the root that fzero can find that will help? How about this? If we want to find the point where g==h, then what if we solve for the point where (g(x)-h(x))==0?
fzero(@(x) g(x) - h(x),-0.2)
Once you have done this for BOTH intersections, now what area do you want to find? You want to find the area of g(x) - h(x), since in that interval, g(x) is greater than h(x).

Steven Lord
Steven Lord 2021-1-24
clear, clc, clear plot
Use these commands sparingly or not at all in a script file. People running your script may not expect a program that's supposed to compute the integral of an area to destroy all the variables in their workspace and clear their command window.
format short
g=@(x)exp((-x.^2)./2);
h=@(x) x.^2-4.*x;
x=linspace(-1,5,100);
plot(x,g(x));
hold on
plot(x,h(x));
% Adding in the line at y = 0 for reference
yline(0, ':')
z(1)=fzero(g,-0.22); % dont know how to use
z(2)=fzero(h,4); % dont know how to use
You don't want zeros of g and h. If you were to zoom in you'd see that g never quite reaches 0 over the interval [-1, 5]. You want to find points x where g(x) = h(x), right? Rewrite that expression and you will realize what you need to pass into fzero. [If you're not sure after rewriting it, read the description of the fun input on the fzero documentation page.]
%{
% integral
a=z(1);
b=z(2);
f=@(x) % dont know how to use
The expression you used in computing z(1) and z(2) will be useful here.
q=integral(f,a,b)
%}

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by