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 CayleyHamilton theorem or whatever.
A list containing the different functions with the algorithms involved would be nice.
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 :
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.
"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.
In some situations, it would be useful to know what method option was chosen when the default "Automatic" is used.
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!
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:
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!