Filter löschen
Filter löschen

how can i find an itersection point between two function

1 Ansicht (letzte 30 Tage)
Haim Sfadi
Haim Sfadi am 19 Jun. 2018
Kommentiert: Haim Sfadi am 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

Akzeptierte Antwort

KSSV
KSSV am 19 Jun. 2018
Bearbeitet: KSSV am 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 Kommentare
KSSV
KSSV am 20 Jun. 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 am 20 Jun. 2018
thanks for your help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Sayyed Ahmad
Sayyed Ahmad am 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.

Kategorien

Mehr zu Startup and Shutdown 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!

Translated by