Intersections between two discretised functions
Mostrar comentarios más antiguos
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 comentario
Walter Roberson
el 8 de Dic. de 2023
If you look in the File Exchange you will find at least 4 contributions for finding curve intersections.
Respuesta aceptada
Más respuestas (1)
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
Categorías
Más información sobre Mathematics en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!