how can i find an itersection point between two function

3 vues (au cours des 30 derniers jours)
Haim Sfadi
Haim Sfadi le 19 Juin 2018
Commenté : Haim Sfadi le 20 Juin 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

Réponse acceptée

KSSV
KSSV le 19 Juin 2018
Modifié(e) : KSSV le 19 Juin 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 commentaires
KSSV
KSSV le 20 Juin 2018
Haim Sfadi If you find the solution useful, give comments and accept, vote the answer. Simply don't close the question.
Haim Sfadi
Haim Sfadi le 20 Juin 2018
thanks for your help!

Connectez-vous pour commenter.

Plus de réponses (1)

Sayyed Ahmad
Sayyed Ahmad le 19 Juin 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.

Catégories

En savoir plus sur Optimization dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by