Message Boards Message Boards


Names of the algorithms in Wolfram Language functions ?

Posted 8 years ago
7 Replies
3 Total Likes

Hello everyone,

How do we know the name of the algorithms used by Mathematica functions ? For example, what is the algorithm used by Mathematica to raise a matrix to the power of n ? Diagonalization and eigenvalue decomposition or use of Cayley–Hamilton theorem or whatever.

A list containing the different functions with the algorithms involved would be nice.

Thank you.

7 Replies

Thank you all for your answers. Not knowing the algorithm used by Mathematica is quite bothersome for me because without that I don't know how to consider the answers, notably regarding the questions of completeness and soudness in the following senses :

  • Completeness : given a generic problem, does Mathematica explore all the possibilities and then return the best answer ? or does Mathematica only partially explore all the possibilites and then return an approximation of the best answer ?
  • Soundness : given a generic problem, when Mathematica gives an answer, is the answer always correct ? or are there cases the answers may not be correct ?

I understand that Mathematica is a proprietary product and that SomeNotesOnInternalImplementation is probably the much they can disclose, but I hoped they would have revealed a little more.

Given a choice of options, I can always try all of them and see which one gives the same result as Automatic. It wouldn't be giving anything away to reveal which option choice was used.

POSTED BY: Frank Kampas

"Given a choice of options, I can always try all of them and see which one gives the same result as Automatic. It wouldn't be giving anything away to reveal which option choice was used.":

But the choice will depend upon the particular differential equation, so still the documentation could not tell you in any general way which of the non-stiff Adams method or the stiff Gear backward differentiation formula is used for the explicit, or default, option Method -> Automatic.

Moreover, even if you find through experimentation that an Adams method was used, it won't tell you which order Adams method; for that you'd have to do additional experimentation (including, quite likely, implementing the particular order method).

In principle, Mathematica could be enhanced with an option that, at evaluation time, reports the choice. But that's a different level of functionality from what Mathematica currently has, and it could unduly complicate the underlying code, with unwanted effects on efficiency.

POSTED BY: Murray Eisenberg

In some situations, it would be useful to know what method option was chosen when the default "Automatic" is used.

POSTED BY: Frank Kampas

Take, for example, NDSolve. The Documentation Center page for that asserts: "With the default setting Method->Automatic, the Wolfram Language will automatically try to pick the best method for a particular computation."

This strongly suggests that Method -> Automatic does pick one and the same method for all differential equations, but instead that the method may depend on the form of the equation(s), tests to see whether a stiff system is involved, etc., and also that the method is changed dynamically as the integration proceeds.

In fact, if you look at the SomeNotesOnInternalImplementation page cited in a previous answer, you'll read that, for ODEs, NDSolve "by default uses an LSODA approach, switching between a non-stiff Adams method and a stiff Gear backward differentiation formula method."

With Mathematica being a proprietary product, I hardly expect Wolfram Research to reveal much more than that!

POSTED BY: Murray Eisenberg

Some functions use multiple algorithms and choose a particular one based on the kind of input they recieve. Most of these have a "Method" option that allows you to select a specific method to use.

The closest thing that exists to what you describe is this documentation page:

POSTED BY: Sean Clarke

There are thousands of functions, so a simple list isn't going to work. For specific topics, you can search in documentation (for example search for "decomposition" or "matrix") usually there are tutorials as well that the documentation will point to. Another good source often is mathworld . Hope that helps!

POSTED BY: Kay Herbert
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
or Discard

Group Abstract Group Abstract