allcrossings
Version 1.0.0 (2,7 ko) par
John D'Errico
Locate all intersections of a pair of functions f1 and f2, on a finite domain
ALLCROSSINGS is a rootfinding tool , that is used to locate all points where a pair of functions cross in the plane. It solves for the locations x, where f1(x)==f2(x). As a simple example, here is the use of allcrossings, on the problem sin(x)==cos(x). We expect those solutions happen at the points (n+1/4)*pi. The search was done on the interval [-10,10].
xloc = allcrossings(@sin,@cos,[-10,10])
xloc =
-8.6394 -5.4978 -2.3562 0.7854 3.927 7.0686
If I now divide by pi, we should expect to see solutions that are all off from an integer by exactly 1/4.
xloc/pi
ans =
-2.75 -1.75 -0.75 0.25 1.25 2.25
The tool initially samples the supplied interval at equally spaced points, locating sub-intervals where a crossing must occur, then it uses fzero on that bracketed interval.
ALLCROSSINGS can also be used to identify crossings of a function with a constant. In this example, I used it to locate the points where y=2*x+tan(x) crosses the line y==1, on the interval [0,10].
xloc = allcrossings(@(x) 2*x + tan(x),1,[0,10])
xloc =
0.32919 1.5708 1.9113 4.7124 4.8274 7.854 7.9213
As one should expect though, the function here has singularities, where while it technically crosses the constant line y==1, they are not actually intersections. Those points are easily enough identified though, since wheere the function passes through a discontinuity, we see those points are clearly identified.
fun = @(x) 2*x + tan(x);
fun(xloc)
ans =
1 -1.2093e+15 1 3.5109e+14 1 2.5914e+14 1
I intentionally do not try to remove those locations, since they could technically be called a crossing point.
Citation pour cette source
John D'Errico (2024). allcrossings (https://www.mathworks.com/matlabcentral/fileexchange/125585-allcrossings), MATLAB Central File Exchange. Extrait(e) le .
Compatibilité avec les versions de MATLAB
Créé avec
R2022b
Compatible avec toutes les versions
Plateformes compatibles
Windows macOS LinuxTags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Découvrir Live Editor
Créez des scripts avec du code, des résultats et du texte formaté dans un même document exécutable.
Version | Publié le | Notes de version | |
---|---|---|---|
1.0.0 |