| I'm an Engineer I have NR sitting on my desk shelf I refer to it often. A lot of my peers use it as well. NR is hugely helpful. One example a few years ago I needed to implement technique from a math paper in some C code. The paper included such classic math terms like "Tridiagonal Matrix" and "Cholesky Decomposition" I'm sure they mean a lot to someone with a math background but baffled me at the time. It wasn't until I pulled out my handy copy of NR I was able to even slightly wrap my head around just what the hell a "Cholesky Decomposition" even was. Let alone how I would code it. And even then I had to dredge up my old Linear Algebra textbook from Uni to re familiarise myself with basic Matrix operations. The code I wrote ended up being full of comments like this: "/* Newton's method to compute positive root
f(p)^2 = (u^T)(Q^T)(D^2)Qu and F(dF/dp) = (u^T)(Q^T)(D^2)Q(du/dp) */ " Which is basically me trying to wrap my head around just what the hell the mathematical paper is talking about whilst writing the algorithm programatically. Even now opening the .C file some years later it took me a few minutes to make sense of that comment I had to realise that U^T was shorthand for transpose of Matrix U. Numerical techniques are hugely complicated especially when you don't deal with them every day I have yet to find a book better than NR at breaking them down and presenting them in a way someone like me (with Science/Eng background) can understand them. I'll gladly take any recommendations you have for updated references. As far as I know NR and the GSL (GNU scientific library) documentation are considered the gold standard by all my peers. |
BLAS and LAPACK themselves are constantly evolving to add new or better production-quality algorithms as the field develops, and I highly recommend using the functionality they provide instead of trying to reimplement any of the basic algorithms in-house. There are heavily optimised versions of these libraries available for almost every platform you can imagine, their own documentation is pretty good, and often recent research in the field also gets written up as background papers and incorporated fairly quickly (the magic words to search for are "LAPACK working note").
If memory serves, the GSL actually depends on having a BLAS implementation available for some of its functionality, so if you're not limited by the licensing you might already be using the same sort of code under the hood anyway. :-)