QSoas> generate-buffer -10 10 bessel_j0(x) /samples=100001 QSoas> integrate Current buffer now is: 'generated_int.dat' QSoas> find-peaks Found 6 peaks buffer what x y index width left_width right_width generated_int.dat min -8.6538 -0.201157042341714 6731 1.7798 0.905999999999999 0.873800000000001 generated_int.dat max -5.52 0.398165469321319 22400 2.2854 1.1862 1.0992 generated_int.dat min -2.4048 -0.403288737672291 37976 1.8232 0.973 0.850199999999999 generated_int.dat max 2.4048 2.53731134529594 62024 nan 2.2026 nan generated_int.dat min 5.52 1.73585713830231 77600 nan 5.7198 nan generated_int.dat max 8.6538 2.33517964996535 93269 nan 8.5532 nan
Compare that with the values given on Mathematica's website. This strategy is reasonably resistant to noise, since integration decreases high-frequency noise, but you may have to play with the
/window
option to find-peaks to avoid detecting the same zero (peak) several times.Hopefully, I'll come back with more regular postings of tips and tricks !
2 comments:
Oops, updated broken documentation links
Note that this will not work in some corner cases, i.e. when the first derivative is also 0 when the function is 0. I expect these cases not to happen too often when dealing with real data, though. Thanks to Thomas Viehmann for pointing this out.
Post a Comment