-
-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discontinuous observable #31
Comments
Moving some of the slack convo here for future reference/discussion: Some quadrature algorithms can handle the discontinuity better than others. The default does not converge, but I find switching to This also support batch processing, so you can do EnsembleThreads() which is used by default with MonteCarlo() .
solves in 5.6s in my machine w/ ~3400 simulations |
Cubature methods are just a bad choice for characteristic functions, and this is a common use case for quadrature in the Koopman setup since characteristic functions give the probability of the outcome, which is a pretty important quantity. To handle this better, I think we probably want to define some new special quadrature method in Quadrature.jl specifically for this type of problem. My idea is that you somehow want to use something like arclength continuation to trace the boundary and then calculate the volume of the convex hull of the points, and that last part has a pretty well-established solution: https://www.cs.princeton.edu/~chazelle/pubs/ConvexHullAlgorithm.pdf. I asked @stevengj if he knew of any methods and he mentioned Mathematica does a rootfinding problem for the boundaries. I am not seeing a mention of it in here though: https://reference.wolfram.com/language/tutorial/NIntegrateIntegrationRules.html . This would probably be a fun topic but it'll take time. That said, I think for higher dimensions the adaptive Monte Carlo quadrature methods will likely be pretty good because they adapt the sampling to try and ignore the zero region, so for now |
From @dpsanders, https://github.com/bachrathyd/MDBM.jl looks like a perfect way to do this. |
This issue is a follow up to our slack discussion. To compute the size of the basin of attraction I am using a discontinuous observable (
converged
). With the default setting the quadrature does not converge. With reltol and abstol >0.08 it always finds the same (approximately correct) answer and for reltol and abstol <0.07 it doesn't converge at all.maxiters
seems to have no effect.The discontinuous observable seems to be at the heart of the problem. When I replace it with a bump function the Koopman algorithm behaves reasonably.
The text was updated successfully, but these errors were encountered: