I've been using Mathematica to solve nonlinear partial differential equations for my doctoral research for the last 2 years or so. I am not an expert in Mathematica or mathematics and I am an engineer trying to express thermodynamic and fluid dynamic phenomena through math equations which subsequently need solving using numerical methods!

I find that Mathematica is definitely the way to go and I am a big fan of the NDSolve[...] function.

With that short background, here's my question:

If I am to publish numerical results obtained in Mathematica, how should I go about it? I obviously validate my results against previously published data but here is the thing: say we have a non-linear PDE:

h_t + N[h[x,t]]=0 where h=h[x,t] and N[h[x,t]] is the nonlinear part.

Most scientific publications would mention the method used to solve the equation (Eq: the BDF method, the Newton-Kantorovich method etc.)

When I solve this in Mathematica in a vanilla style without using any Method options in NDSolve thus allowing Mathematica to adapt and select it's own method, how do I cite the method? I haven't come across publications that do, so I ask...

I do realize that there is the Trace option available that allows for the user to figure out what method was used but it isn't very intuitive!

Any suggestions? Inputs?

  • $\begingroup$ Well, there's the question of how essential the method is to your results. If it is essential, you can set an explicit Method option. But if the method is really very important (i.e. a trivial method such as forward Euler won't give you good results), then it's likely that it is necessary to set a method option just to get a good output. If the method itself is not an important part of your research (or if it is not essential for the reproducibility of the results), then I don't think it's important to mention the precise method, or you can just say you used Mma ... $\endgroup$
    – Szabolcs
    Commented Mar 22, 2012 at 16:17
  • $\begingroup$ That said, I'm also a grad student, so I don't have that much experience. My point is that we mention the method to make results reproducible. In many cases, a simple forward Euler will work just fine (if a bit slow), thus the method is not essential for reproducibility. Only the equations are. $\endgroup$
    – Szabolcs
    Commented Mar 22, 2012 at 16:18
  • $\begingroup$ @Szabolcs for instance, when I used the Trace option, I came to realize that the LSODA method was used to solve my PDE. So should I cite LSODA or is there some way I can cite NDSolve itself? $\endgroup$
    – dearN
    Commented Mar 22, 2012 at 16:20
  • 5
    $\begingroup$ My suggestion was not to cite the method at all, or just say that it was solved using Mathematica, if the method is not essential to the results (in many cases it really isn't). If it is essential, then read the NDSolve docs, set a Method manually, and mention that method while also mentioning that you used Mathematica (as you didn't implement it yourself, only set the parameters). $\endgroup$
    – Szabolcs
    Commented Mar 22, 2012 at 16:26

1 Answer 1


This question is somewhat subjective, but here's my take on it:

The reason the precise methods are mentioned in papers is to make results reproducible. One has to draw a line when it comes to describing methods. Will you mention what method you used to add or multiply numbers on a computer? What if the numbers are huge and you used FFT-accelerated convolution for arithmetic? It all comes down to how essential the method was in obtaining your results.

If the method is really not essential to your results (solving differential equations on a computer can be considered rather trivial these days), then I don't believe it is necessary to mention the method. If someone wants to reproduce your results, they can just implement any trivial method, or more likely use some package like Mathematica (or any other) that has it built-in. If you feel like, you can say "the PDEs were solved numerically using Mathematica 8".

If a trivial method won't work (e.g. you have stiff equations), you may need to mention the method. In this case it's likely that you also need to select a method manually and tune its parameters. The available method are described in some detail here. Again, you can just say that you used Mathematica and mention the method it uses for PDEs (the method of lines) and the exact settings you chose (e.g. an implicit Runge Kutta scheme).

If your equations are such that the method is absolutely essential to the results, then you likely have implemented the method yourself, and this question wouldn't come up.

To sum up: There's nothing wrong with saying that you used Mathematica, and there's nothing wrong with not mentioning the exact method for as long as this is not essential to getting the results. People could reproduce your results using a naive application of MATLAB or SciPy as well.

Example: I've used a Delaunay triangulation in my work. I didn't mention how I got it, nor do I think it is necessary. (In fact I don't even know how the triangulation algorithm works.) It is just a detail that would distract. Similarly, the subject of your research might be the system described using the PDE, and you don't need to know any advanced PDEs solving methods to obtain your results.

  • $\begingroup$ I agree with all points you have posed here except that some journals, may be very specific about the method of solution, out of a sense of completion. But thanks for the answer. I'll know more as the days progress! $\endgroup$
    – dearN
    Commented Mar 22, 2012 at 20:10
  • $\begingroup$ @DNA If there's a requirement that you must mention the method, then you could set a method explicitly ... This'll take some effort because you'll need to read the relevant parts of the NDSolve documentation that I linked to (it's a book-length document ...), and understand the difference between the methods. You probably don't want to re-do all the calculations with an explicitly chosen method, so you'd need to figure out what Mma uses automatically, but I am not sure how to do that reliably ... I guess that's what your question is about. $\endgroup$
    – Szabolcs
    Commented Mar 22, 2012 at 20:21
  • $\begingroup$ I actually did figure out what mathematica resorts to in case I set the method as Automatic from here: mathematica.stackexchange.com/questions/145/… ...in case you are interested. Thanks! $\endgroup$
    – dearN
    Commented Mar 22, 2012 at 20:35
  • $\begingroup$ @DNA The only problem with that is that I don't see "LSODA" in the docs, and I don't know what it is. But maybe you can google it up. $\endgroup$
    – Szabolcs
    Commented Mar 22, 2012 at 20:44
  • $\begingroup$ @DNA This might be of use, as well as ruebenko's answer in your link ... alright, bedtime for me! $\endgroup$
    – Szabolcs
    Commented Mar 22, 2012 at 20:45

Your Answer

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

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