Timeline for Strategies to solve an oscillatory integrand only known numerically
Current License: CC BY-SA 3.0
13 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Apr 21, 2013 at 16:42 | history | edited | J. M.'s missing motivation♦ | CC BY-SA 3.0 |
added 16 characters in body
|
Oct 18, 2012 at 14:06 | comment | added | Andrew Moylan | No, LevinRule will not help if it's really a black box. | |
Oct 18, 2012 at 14:05 | comment | added | Andrew Moylan | With sufficiently few digits of WorkingPrecision, roundoff error may lead to spurious appearance of convergence. Generally I would suggest WorkingPrecision at least 16 (i.e. around MachinePrecision) at 10 greater than PrecisionGoal. | |
Oct 18, 2012 at 7:37 | comment | added | fpghost | Also I've come across the strange feature that if I actually give NIntegrate PrecisionGoal->3, WorkingPrecision->5, it doesn't complain sometimes, but give it the same integrand with Pg->3, Wp->10 and it says ::slwcon and ::ncvb; why would it do this? | |
Oct 18, 2012 at 7:30 | comment | added | fpghost | OK. I if it really turns out to just be Exp(-is) xBlackOscillatoryBoxInterpolatingFunc[..]. Is there anything I can do at all? Is it still worth putting in Method->"LevinRule"; are there things like putting up the MaxRecursion etc worth a go? or other options in NIntegrate that may help.. | |
Oct 18, 2012 at 5:40 | comment | added | Andrew Moylan | "This w[s] doesn't directly solve an ODE but it's constructed by taking the modulus of two particular solutions of an ODE (with some other complicated factors)." It sounds like the w[s] doesn't satisfy a linear ODE then. However, you may be able to reformulate in terms of e.g. the modulus of an integral or two, rather than the integral of something with a modulus? Tricks like this (in which you keep everything analytic/smooth as long as possible) can be helpful to let you use standard numerical methods. | |
Oct 18, 2012 at 5:37 | comment | added | Andrew Moylan | LevinRule definitely won't be able to automatically detect the linear ODE of the oscillatory part of your integrand if it is solely in the form of an Interpolating function. | |
Oct 18, 2012 at 5:37 | comment | added | Andrew Moylan | If the oscillatory part of your integrand satisfies a nonlinear rather than linear ODE, then LevinRule can't be applied. | |
Oct 17, 2012 at 18:21 | comment | added | fpghost | I don't think my integrand osc bit satifies a differential Kernal, so don't know what to put there, but If I try Method->{"LevinRule"} alone I see no improvement in timing or ::slwcon errors going away. If I try Method->{"LevinRule","Kernal"->w[s]} where w[s] is the oscillatory bit, I get ::nonlev errors, saying Integrand not a Levin function. If I try Method->{"LevinRule","ExcludedForms"->Exp[-iEs]} then again no increase in speed and ::slwcon errors still present. Not sure what to do as I can't really increase the number of good decimals of my integrand either, as this is limited by NDSolve | |
Oct 17, 2012 at 18:13 | comment | added | fpghost | I'm finding the very strange behaviour that for a given integrand, if I stick with WorkingPrecision->5. Then the NIntegrate goes through with PrecisionGoal->3, but gives ::slwcon with PrecisionGoal->1. This is the opposite of what I would have expected, why could this happen? | |
Oct 17, 2012 at 8:12 | comment | added | fpghost | Using your example it's a bit like my integrand was Exp[-is] (g(s) osc1[C]osc1*[C-s]+h(s) osc2[C]osc2*[C-s]) , where C is some constant, g(s),h(s) are just functions of integration var, and osc1, osc2 are two distinct solutions to the ODE for different ICs. | |
Oct 17, 2012 at 8:08 | comment | added | fpghost | Thanks. My integrand looks like Exp[-iEs] w[s], where it's actually not the Exp[..] that causes rapid oscillation it's the w[s] bit. This w[s] doesn't directly solve an ODE but it's constructed by taking the modulus of two particular solutions of an ODE (with some other complicated factors). It's these solutions of the ODE that are highly oscillatory. Given this, would it be possible for me to form the "DifferntialMatrix" ? | |
Oct 17, 2012 at 2:36 | history | answered | Andrew Moylan | CC BY-SA 3.0 |