MATLAB Answers

how can i find an itersection point between two function

1 view (last 30 days)
Haim Sfadi
Haim Sfadi on 19 Jun 2018
Commented: Haim Sfadi on 20 Jun 2018
i need to find an intersction point between two function (all kind of function) but without using a mtllab build in function like fzero and enc so i wrote an exemple of two simple function this is what i wrote:
f1=@(x) -x.^2;
f2=@(x) x.^2-6;
dx=-5:0.000001:5;
y1=f1(dx);
y2=f2(dx);
sum=0;
count=0;
intersectionx=[];
intersectionxx=[];
intersection=y1-y2;
for i=1:length(intersection)-1
if (abs(intersection(i)))<=0.0001
intersectionx(end+1)=dx(i);
end
end
plot(dx,y1)
hold on
plot(dx,y2)
hold on
plot(intersectionx,intersectiony,'*')
I get some problems:
1.I see many of itersection points instead of one when i zoom in
2.I see an intersection point but when i zoom in the point are not exectliy in the dot fo the intersection
3. for some function i miss an intersection points

  0 Comments

Sign in to comment.

Accepted Answer

KSSV
KSSV on 19 Jun 2018
Edited: KSSV on 19 Jun 2018
YOu may check this code:
f1=@(x) -x.^2;
f2=@(x) x.^2-6;
dx=-5:0.0001:5;
y1=f1(dx);
y2=f2(dx);
sum=0;
intersectionx=[];
intersectionxx=[];
intersection=y1-y2;
tol = 10^-3 ;
idx = abs(intersection)<=tol ;
% get the position
count = 0 ;
pos = zeros([],1) ;
for i = 1:length(idx)
if idx(i)
count = count+1 ;
pos(count) = i ;
end
end
x = dx(pos) ; y = y1(pos) ;
plot(dx,y1)
hold on
plot(dx,y2)
hold on
plot(x,y,'*')

  5 Comments

Show 2 older comments
KSSV
KSSV on 20 Jun 2018
Haim Sfadi If you find the solution useful, give comments and accept, vote the answer. Simply don't close the question.

Sign in to comment.

More Answers (1)

Sayyed Ahmad
Sayyed Ahmad on 19 Jun 2018
1. you defined the variable intersectionx(end+1) and intersection(i) as array.
So the
plot(intersectionx,intersectiony,'*')
will give you also many points as long as the lenght of your array.
2. That is a numerical itteration what you do. In other words you will never reach your destination, you will only comming closer and closer.
from 1 to 0 as an example:
1; 0.5; 0.25; 0.125; ...
3. check if some answer exit in the range of dx=-5:0.000001:5; you can draw your function to see if you have an intersect. In case of existing intersect you have to check the convergency of your function in the range of searching.

  0 Comments

Sign in to comment.


Translated by