| As somebody who came to scientific computing late in life, after
spending years as a physicist then an engineer, I will step up to
defend NR, if only for fun (and because I like the book for what it
is). At least one commenter here dismissed NR, saying that it is equivalent
to an undergraduate numerical analysis book. Well, duh! That's one
of its strengths! It is a good book for an audience like me --
somebody with scientific background but with no formal numerical
analysis training who needs to write some numerical code. The target reader is an engineer who needs to implement something
specific. That's a very common scenario -- you are given the job of
implementing some calculation as part of a larger project. You're not
an expert in the particular mathematical discipline. You don't want
to fool around trying to find an algo in some book since you don't
know which of the zillions of numerical analysis books to look at.
Also, most books will just give you a general algo, not ready-to-run
code. Everybody knows how hard it can be to translate a wordy
description of an algo into real code. If you had the budget you'd
just hire somebody to do it for you. NR solves your problem -- you
use the code and your problem is solved so you can move on to the next
step of your project. A different commenter here suggested using Golub and Van Loan
instead. That's laughable. First off, as others pointed out, their
"Matrix Compuations" book addresses numerical linear algebra
exclusively. NR is a general-purpose numerical analysis book, so
covers a much larger topic set. But secondly, Matrix Computations is
difficult reading for non-mathematicians. Even if I needed to
implement some sort of matrix decomposition, I would find it a pain
to use that book as a source. (Yes, I am sure some testosterone-soaked HN commenter will now say
that they read "Matrix Computations" in 3rd grade as a way to prove
how smart they are. Allow me to roll my eyes now.) The real complaint made in the linked post involves the licensing
terms of the code in NR. I agree the license stinks by today's
standards. But the book was originally written back in the 1980s. My
copy is from the early 1990s. Back then the GPL was basically unknown
outside of a group of happy hackers at MIT. Software licensing
certainly not a topic occupying mindspace of ordinary scientists or
engineers. There was some DOS-based "freeware" circulating on 3.5"
disks, but the whole "free (libre) software" movement was still in the
future -- it needed the internet to become widespread in order to take
off. Finally, I can imagine the NR authors wanted some sort of
copyright or license which prevented wholesale copying of their work
by folks who would try to profit off it. It's reasonable for them to
have wanted to get some monetary reward for their hard work.
Their license is probably an artifact of its time. In my travels I have seen situations where code used in commercial
products incorporates this or that function presented in NR. For
example, I saw the FFT algo used in a test widget. (I authored none
of the copied code -- I simply observe it in projects done by others.)
What's funny is that NR's FFT algo is not particularly great.
However, the guys who needed an FFT probably didn't know that. They
probably would not have cared anyway -- they just wanted a working
solution and that's what they got from NR. I am sure that little
violations of the NR license happen all the time. It may not be
strictly legal, but I also see people making Xerox copies of
copyrighted books and journal articles all the time too. Finally, regarding alternatives like GSL, ccmath, or whatever is
available on netlib, those projects post-date NR. In any event, the
internet is what made all those things widely available. I bought my
copy of NR in a bookstore before that happened. |
If there’s a better book that is accessible to the masses I’d like to know about it. But I haven’t found it yet.