Find intersection of 2 normal distribution

30 views (last 30 days)
Hi,
I have 2 normal pdf and I want to find their intersection:
Screen Shot 2019-10-16 at 14.39.05.png
the intersection is between 160 to 170.
I have code as follows:
mu1 = 160;
var1 = 20;
mu2 = 175;
var2 = 15;
yfun = @(mu,var, x)(2*pi*(var))^(-0.5)* exp(-((x-mu).^2)/(2*(var)));
val = fzero(@(x) yfun(mu1, var1, x) == yfun(mu2, var2, x), rand * (mu1 - mu2) + (mu1 + mu2))
Output:
val =
324.6802
Its the value of 2nd parameter of fzero() and fzero() sets val to it's 2nd parameter whatever i change it to.
How do i find the intersection's x value?

Accepted Answer

Star Strider
Star Strider on 16 Oct 2019
The ‘val’ value is the x-value of the intersection, however you need to start fzero in the correct region for it to return the correct value. It is then straightforward to calculate the y-value from either Gaussian function, since they are both approximately the same at that point.
I changed your code slightly so it returns the correct results:
mu1 = 160;
var1 = 20;
mu2 = 175;
var2 = 15;
yfun = @(mu,var, x)(2*pi*(var))^(-0.5)* exp(-((x-mu).^2)/(2*(var)));
val = fzero(@(x) yfun(mu1, var1, x) - yfun(mu2, var2, x), mean([mu1,mu2]))
yval = yfun(mu1, var1, val)
producing:
val =
167.872647061767
yval =
0.0189439821229373
Experiment to get the result you want.
  3 Comments
John D'Errico
John D'Errico on 16 Oct 2019
Edited: John D'Errico on 16 Oct 2019
Note the importance of how Star used subtraction there instead of using ==. Testing for equality is a bad idea, because it will essentially never happen that they are exactly equal. You want to search for where the difference crosses zero.
Star Strider
Star Strider on 16 Oct 2019
@Aishwarya Radhakrishnan — As always, my pleasure!
@John D’Errico — I very much appreciate your Comment!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!