5 ms·
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 (a
by sbrorson 4y ago
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.
- GlenTheMachine 4y agoCompletely agree. You shouldn’t go to NR for the code. You should go to it because, even decades after it was first published, it’s still the only reasonably comprehensive text on scientific computing that doesn’t assume you’re in a graduate program in applied mathematics. And I say that as someone who actually took those graduate level applied mathematics classes. I can pick up NR and understand the basics of some algorithm within fifteen minutes, without hurting my brain. 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.
- owlbite 4y agoDon't roll your own numerics. There are normally many subtle gotchas that affect numerical stability of a method, as well as great attention to detail required to handle degenerate edge cases. And that's before we get to subtle bugs that only trigger occasionally or are otherwise hard to detect. It's not like NAG/ISML/HSL etc don't predate NR, in some cases by several decades. Libraries were always available, though back in the day you may have needed to pay for them.
- gnufx 4y ago> Finally, regarding alternatives like GSL, ccmath, or whatever is available on netlib, those projects post-date NR. No, Netlib started in April 1985[1], though as a physicist or engineer you likely had access to NAG or something similar already. It must have made an impression on me as I still remember F02ABF... (I hasten to add I hit scientific computing early in life.) 1. https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.73.7679&rep=rep1&type=pdf https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.73...