Intersections between two discretised functions

6 views (last 30 days)
Hi Everybody, I have the following problem:
I have two vectors:
  • v1 = list of values representing a discretised non monotonic function
  • v2 = list of values representing a constant and horizontal line
v1 has no analytical model. It's just a vector containing the values a function assumes in a given interval.
To make everything clearer, let's consider the following case:
  • v1 = list of 100 values representing a parabola: y= x^2, with x=linspace(-5, +5, 100)
  • v2 = ones(1,100)
f = @(x) x.^2;
values = linspace(-5, 5, 100);
v1 = f(values);
v2 = ones(1,100);
Clearly, the intersection points are two, for x1=-1 and x2=+1.
Now let's forget about the fact that we had the analytical expression for v1 and let's just consider the vector itself.
How can I implement this on Matalb for a generical vector v1 which is not monotonic and is supposed to have two intersection points with v2? I tried doing something with interp1 but couldn't figure it out.
Thanks a lot to whoever will help me!
  1 Comment
Walter Roberson
Walter Roberson on 8 Dec 2023
If you look in the File Exchange you will find at least 4 contributions for finding curve intersections.

Sign in to comment.

Accepted Answer

Dyuman Joshi
Dyuman Joshi on 8 Dec 2023
You can use FEX submissions for this, I have run these two submissions below - InterX, intersections as example -
You can also find many answers on this forum, which utilize interp1 to get intersection points of two curves.
x = linspace(-5, 5);
v1 = x.^2;
v2 = ones(size(x));
P1 = InterX([x;v1],[x;v2])
P1 = 2×2
-0.9988 0.9988 1.0000 1.0000
[x0, y0] = intersections(x, v1, x, v2)
x0 = 2×1
-0.9988 0.9988
y0 = 2×1
1 1

More Answers (1)

Matt J
Matt J on 8 Dec 2023
Edited: Matt J on 8 Dec 2023
f = @(x) x.^2;
x = linspace(-5, 5, 100);
v1 = f(x);
v2 = ones(size(v1));
X0=x(diff(sign(v1-v2))~=0);
X=nan(size(X0));
for i=1:numel(X)
X(i)=fzero(@(t)interp1(x,v1-v2,t,'cubic'), X0(i));
end
X %solutions
X = 1×2
-1.0000 1.0000

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!