3
$\begingroup$

Every now and then there are questions asked in this site related to the shooting method for boundary value problems (see 1, 2, 3). Nevertheless, in some of the cases that I have seen here, the problem is better solved turning the boundary value problem into an algebraic system directly using a discretization method such as finite differences or finite elements.

So, my questions are the following:

  • What is an application where the shooting method is the preferred approach to solve a problem?
  • Is there another, maybe theoretical reason, for people to prefer the shooting method?
$\endgroup$
6
  • 1
    $\begingroup$ For a nonlinear problem a shooting method probably is not any worse (and perhaps easier to implement) than using discretization - either way you'd have to minimize a residual using some kind of iterative procedure. $\endgroup$ May 18, 2021 at 0:31
  • 1
    $\begingroup$ I know some applications in finance, for example Chapters 3-6 of The financial mathematics of market liquidity : from optimal execution to market making by Olivier Guéant discusses such a problem. If the initial value is known and the final value is desired to be zero but also continuously dependent on a parameter which we are trying to estimate, then the shooting method is a pretty good method to use. A full-blown FEM would complicate the situation. (Of course, it may also be a more theoretically solid approach, I don't know) $\endgroup$ May 18, 2021 at 4:19
  • 2
    $\begingroup$ I just learned that (from Wikipedia nonetheless) that some parallel-in-time methods can be derived from the multiple shooting method. So that may be of theoretical interest. $\endgroup$ May 18, 2021 at 6:32
  • $\begingroup$ In frequency-domain analysis of nonlinear circuits, the dominant method is harmonic-balance, but there are uses for the shooting method, in particular for highly nonlinear circuits. See: community.cadence.com/cadence_blogs_8/b/rf/posts/… $\endgroup$ May 18, 2021 at 9:34
  • 2
    $\begingroup$ The choice to use shooting is independent of the choice to use finite differences or elements. Shooting is a way of solving the algebraic equations that result after discretization. So this question doesn't make sense as currently written. $\endgroup$ May 18, 2021 at 20:24

1 Answer 1

3
$\begingroup$

A shooting method is easy, general, and can be directly derived from existing ODE solvers (which means it can benefit from the efficiency poured into ODE solvers). Want to solve a BVP defined in quaternions? Sure go ahead, the Julia shooting method will do it without breaking a sweat (I didn't even know it would work until a user showed me the example haha). GPUs? Yes, it works. TPUs? Yes. It just takes what you throw at it and if the ODE solver can do it, then this can. So there's a major practical benefit there because many more resources have been poured into IVPs.

But there are some other more subtle reasons. In IVPs it's very easy to have state dependent event handling. Technically you can define a boundary value problem where if the ball ever hits the ground during the time interval you flip the velocity. With an IVP there's very established ways to solve this. With MIRK tableaus and such, it can be a bit harder since you have to make sure you have a point at the implicitly defined discontinuity. But if an IVP can do it, then shooting methods can!

Also they generalize very well. Two point boundary value problem? Sure. Interior boundary points? Why not, you can still define the nonlinear solve to use the interior points of the ODE solution. What if you want to solve a BVP, where one of the conditions is that the maximum of the ODE solve occurs at exactly the middle of the interval? Well, you can define that residual using a shooting method like:

function bc2!(residual, u, p, t) 
    residual[1] = Optim.optimize(u,0,1).minimizer - 1/2
    ...
end

and boom automatic differentiation through the optimizer to get a good Jacobian and you have yourself a nice algorithm to do what you want.

So as a numerical analyst I would say shooting methods are bad, but as someone who has maintained open source software with now tens of thousands of monthly users to the documentation asking hundreds of questions per day, sometimes shooting methods are a good answer for problems that are like "gosh, I really didn't expect anyone to ever want to do that, but by golly the shooting method will do it with a smile on its face" (if the problem is non-stiff enough), and that's what it's useful for.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.