The town hall format for presidential debates originated in 1992 with Bush, Clinton and Perot and
isn't particularly traditional. That being said,
I don't see the point to it if they
are constraining those who are asking the questions.
The most problems I have had doing integration was trying to get OSS applications to build under SUN Solaris. SUN packages change the default locations for various things (most notably, apps you would normally find under/usr/local/... end up in/opt/sfw/...) - and the apps I have to build by hand are looking elsewhere. I have also had environment problems - mostly missing path variables for libraries. Given that, the problem is not unique to Linux - but I would suggest it is less of a problem with Linux (provided you try to stay inside of your distribution - and only integrate outside apps when absolutely necessary) than with other operating systems, from my own experiences.
Amen. And once you get any path issues worked out there are often deeper problems. I just spent the morning compiling GNU
common lisp under solaris so I could compile maxima to work out some rather tedious equations
without making any arithmetic errors on the coefficients. After pulling out most of my hair I found that newer GCC versions on solaris have revealed a bug in gcl and I found a patch to gcl that solved the problem. (My undying gratitude goes to the GCL people for fixing this quickly.) This sort of thing almost always happens to me when compiling any large free software under Solaris.
It may not be fair blaming Sun. I know I bring some of this trouble on myself by having tools that are half GNU/half Solaris. But a lot of software requires the GNU tools to compile. And since Sun doesn't by default bundle a C compiler with Solaris there is no standard Sun platform for people to write free software for. Everyone has a mix of Sun and GNU
and when compiling you always have to worry about which you are using. They may have made themselves some money selling compiler licenses, but by fragmenting the solaris "standard" for
compilation they seriously undermined the viability of Solaris for scientific workstation use. Any Linux distribution is a pleasure to work with by comparison. Presumably Sun only cares about selling servers.
My all time most annoying experience was with a patch cluster installation script, downloaded from Sun's own website, that wouldn't run with Sun's own version of awk (not a bug exactly; a limit on the number of records in a line that was exceeded by the size of the patch cluster). Gawk, of course, worked just fine.
I guess in scientific publishing, authors are expected to use TeX themselves, which seems like a ridiclous workflow.
LaTeX is the standard, but I don't generally see a required document format for submitting papers to mathematics journals. SIAM (Society for Industrial and Applied Mathematics) will accept Word and use word2tex. But I do some refereeing for (mostly) matrix theory and numerical analysis journals and I've never seen a paper written in Word (except for engineering journals). If you have something with a lot of equations LaTeX is a lot less work if you know how to use it. Using the equation editor in word is excruciatingly painful and slow.
In my experience for many types of scientific computation if your code runs into swapping you are in trouble. For highly tuned code in numerical libraries people even worry about L1 and L2 cache utilization.
I have been recently working on a code for solving linear systems of a specific structure (Toeplitz for those who care about such things).
The algorithm I'm using solves smaller linear systems of size 256-by-256 as a core operation.
Many of the smaller systems have the same system matrix but different right-hand-sides. I got clever and decided to store information (the Cholesky factor) of these systems to speed up their solution. This completely messed up the use of cache and I saw a big drop in performance. Another time I tried running this "improved" code on my 128M laptop. It hit swap and probably would have run forever (certainly longer than I had any patience for).
The only students that really succeed at math in U.S. schools are the ones that have the desire and ability to teach themselves.
I don't completely disagree but there are a lot of issues; it's not just that there are professors who aren't interested in teaching. I'm an assistant professor in a math department. I teach numerical analysis to classes comprised of about 75% computer science majors and the rest math majors. There are several things beyond the control of a professor that can impact the quality of instruction. One of the biggest is that many of the students are not interested in the topic; they just want to pass to meet their departmental requirement for a numerical analysis course.
Hence I get students trying to copy homework or codes. Just last week I had two students turn in spline code that was a bad C translation of Fortran code. I haven't hunted down the source but their codes were identical and neither student knew Fortran. Having to check for this sort of thing takes time and does not make it easy to teach.
To make matters even worse, the students
put off taking numerical analysis until they
are about ready to graduate by which time they have forgotten much of the calculus they learned
in their first two years. In less mathematical
disciplines, many students put off taking calculus
and end up forgetting their high school math. And that's assuming the high schools did an adequate job preparing them for calculus in the first place.
And then there are teaching load issues. Math departments generally teach more courses than
any other department with the exception of English. Everyone has to take some math. Proportionally we are overloaded with classes to teach. Further university guidelines on tenure are often not written to take this into account. Mathematicians at many universities are expected to write as many papers, get as many grants and supervise as many graduate students as computer science professors while teaching more courses. For some reason this doesn't always work even
when the professor has the best of intentions.
The closest thing to a solution that I know of is to hire non-tenure-track lecturers to specialize in teaching calculus, college algebra, etc. That is already done at most schools but often there are rules about retaining such faculty. Even when
they are doing a great job (and many do---teaching is what they do and they take it seriously) university policy can prohibit renewing their contracts past an arbitrary time (e.g. 3 years). This makes it difficult to maintain a staff of good teachers.
There may be professors slacking off but in my (possibly biased) opinion the institutional problems
are more common. Students shouldn't be able to put off taking math. The universities should hire some portion of permanent faculty
that is dedicated to teaching. And promotion guidelines should be written to reflect what
the university realistically expects from both tenure-track and non-tenure track faculty in each department.
Possibly that's more griping than you wanted to hear about university politics...
What I'd really like to know -- honestly, I'm not trolling -- is this. How can anyone using mathematical modelling software for mission-critical design calculations -- designing a road bridge, for example -- really dare to trust a closed-source product to do what they want? If the vendors won't show you the source code, how can you ever be certain it will do what it's supposed to do? And just what do the vendors have to hide anyway?
Most of the code used by Matlab for core computations is well known free software (LAPACK for linear algebra). The more specialized stuff is mostly written in Matlab itself. The Matlab code can be viewed. So the source to most of the computational code in matlab is available. You just can't redistribute it. I suppose this might make the job of cloning matlab easier. But the chief effort, octave, nice as it is for basic
linear algebra computations seems to move at a glacial pace. Perhaps
the problem is getting enough specialists to work
on code related to their area. As I said
this isn't work for anyone below PhD student level. And even the vast majority of PhD engineering students use numerical algorithms but aren't specialists in the algorithms used in engineering. The most reliable algorithms in some areas haven't penetrated into the textbooks or the
graduate curriculum. (e.g. Pole placement algorithms based on orthogonal factorization for
controller design.) Some of this stuff needs to
be written by people who are active researchers in an extremely specialized area.
That said I doubt structural modeling of a bridge is done in matlab. The finite element code in Matlab isn't the fanciest or most flexible. More specialized finite element codes are probably used for any sort of nontrivial structural simulation.
The sort of thing Matlab is used for in engineering is more along the lines of digital filter design, control system design and image processing.
I teach math. My area is numerical analysis. This isn't freshmen using calculators
in calculus class where I'd agree Mathematica is
not an appropriate tool.
Matlab is not in any way "just a tool to make the final simplification a little easier". It is a numerical, matrix oriented programming language. It is used extensively by engineers and has specialized toolboxes for signal processing, image processing and control system design. Similar open packages (like Octave, which I use a lot) don't have the same level of support for engineering applications.
The idea that engineering students should reimplement this stuff in a general purpose programming language is not realistic. You
might as well ask them to write their own CAD
application. I'd venture a guess that most universities do not have engineering students taking even a single numerical analysis course. (The University of Illinois did not when I was an undergrad there in the late 80s). And one numerical analysis course is not close to being sufficient for implementing acceptably reliable numerical code for the sorts of things that matlab does.
With that being said, I mostly run Octave, Mupad and a fortran compiler (g77 or Intel's zero price compiler for fortran 90) under linux. But there are times when I need matlab. And my grad students need it even more.
I disagree. Basically, it is a matter of principle that we should aim for more accurate theory. Now, it is true that one can put in more parameters to fit your measurements, but there is a "roughly well defined" way of ruling that kind of fitting invalid (the jargon is "fine tuning", which translates to having parameters which are not of the same order of magnitude).
We should only aim for a more accurate theory
if the uncertainties in our data merit that level
of accuracy and we are able to obtain different data after constructing the model to validate that it works. Otherwise you are just constructing a model to accurately describe your experimental errors. Such a model will wonderfully describe the data you used to construct it and nothing else.
There is lots of work in the area of system identification (modeling "black-box" systems based on knowledge of their input/output behavior and with no a priori internal information) on determining the order of the model. Even for systems that can be modeled by linear constant coefficient ordinary differential equations (linear time invariant systems in systems theory language) it isn't possible to determine how complex the model should be by just looking at the order of magnitude of parameters. There are fairly sophisticated statistical criteria. And while those criteria might serve as a guide the ultimate test is how your model describes data that was not used to construct the model (model validation). For developing a scientific theory the issues are even harder.
As a previous poster noted the same issues
arise just with drawing a curve through data points. Look up smoothing splines and generalized cross validation or L-curves to see a few fairly nontrivial things people use for fitting data with errors.
I more or less agree with the rest of your post except to note that Kepler's theory couldn't have been justified at the time by being derived from Newton's laws since Newton's laws didn't exist. This is a case in which a simpler theory pointed the way to important general laws. Which seems to me like an argument for simplicity whenever it can reasonably be achieved. A more accurate theory constructed to describe all available data but with no predictive power is often worse than the simple theory that approximately matches the same data.
Let's assume for now that the leakage from the motor is mostly a dipole field. (CAN'T be a monopole. B-) ) For a DC field, or the "near field" of an AC field, the dipole field dominates - and it falls off inverse cube. Get two inches from the shaver and the field is 1/8th what it was at one inch. Four inches makes it 1/64th, and so on. Falls off REALLY fast with distance.
I'm rusty on this stuff, but I just pulled my old electromagnetics text. The magnetic field for a dipole contains 1/r^2 and 1/r terms. The electric field contains 1/r^3, 1/r^2 and 1/r terms. The 1/r^2 term dominates the magnetic field and the 1/r^3 dominates the electric field in the near field approximation. For far field the 1/r terms dominate both. (For the far field, this is as expected since the Poynting vector ExH gives power flow density and it needs to fall of as 1/r^2 for the power crossing through spheres of different radius around the dipole to be constant.)
So it looks to me like the near field falls of fast, but for the magnetic field not REALLY fast.
You CAN fix the focus on an out of focus picture. You convert it into sinc functions, and re-interpret it mathematically to a properly focused image. The misplaced lens only acts as an analog spatial function, knowing the function, you can work backwards to the input light field.
You can deblur to some extent. However it is
an ill-posed problem: Roughly speaking, in one dimension for simplicity, if you blur
by a point spread function h(x), this is convolution of your original image f(x) to get a blurred image g(x):
g(x)=h(x)*f(x)
where "*" is convolution. If you take Fourier transforms, convolution becomes multiplication and
G(w)=H(w)F(w)
has zeros in the frequency domain and if you try to divide by H(w) to invert the blurring
F(w)=G(w)/H(w)
Then H(w_0)=0 for some frequency w_0 (actually
many frequencies) and you are dividing by zero
when computing F(w_0). This magnifies any
non-blurring related noise or error in G(w) (which
is always present) and you get garbage back.
Practical deblurring schemes like Wiener filtering, Tikhonov regularization and total variation regularization effectively limit the
component of the reconstructed F(w) at or near those frequencies. Thus some information is lost: you don't even try to get F(w_0) right. But the effect can still be quite good. Typically this results in a less blurry image with less sharp edges. I don't think you could do this sort of regularization with a lens, but I could be wrong.
Some pretty pictures and comparisons of various algorithms can be found at Deblurring
Re:Something I learned from Martin Gardner...
on
The Golden Ratio
·
· Score: 1
And you can figure out why all this stuff works using the
Fibonacci sequence and some algebra. If
F(n)=F(n-1) + F(n-2) with F(1)=1 and F(2)=1 then
F(n)=(a1^n-a2^n)/sqrt(5) where a1=(1+sqrt(5))/2 and a2=(1-sqrt(5))/2.
You can prove this identity by substituting into the recurrence for F(n) and checking that F(1)=F(2)=1. Since a2 is less than 1 in magnitude that term goes to zero and in the limit the ratio of successive terms is just a1.
That is all that is happening when you take the ratio of the last two terms in a Fibonacci sequence.
If you generate a sequence g(n+1)=1+1/g(n)
and you are interested in finding any fixed points a to which the sequence might converge that fixed point must satisfy
a=1+1/a
so that a^2 - a -1 =0. That quadratic has roots
a1=(1+sqrt(5))/2 and a2=(1-sqrt(5))/2.
However only the root a1 is a stable fixed point. If you
start the iteration near a2, but not exactly at a2, it won't stay there; it will converge to a1.
However if you start with g(0) exactly equal to a2 the sequence g(n) won't converge
to a1; it will stay at the fixed point a2 unless rounding error interferes and pushes it a little bit away from a2.
Now why someone like me who teaches math would goof off on Slashdot by teaching more math is a even bigger mystery for which I have no answer.
I guess I just don't care if the effort was put into the library or the compiler, as long as I didn't have to do it. Why should it matter?
Well, as a numerical analyst, my point of view is that of the guy who might have to do it. There are a lot of people like me working on algorithms who don't have a lot of interest in using C++ if it means more work to optimize the code. Since avoiding array aliasing for optimization reasons and crunching numbers in multidimensional arrays are of basic importance to scientific computing, I tend to think C++ is an unsuitable language from the ground up, whatever other cool features it might offer. It seems better to me to design a language tailored to scientific computing. That is the direction Fortran has been heading.
If end users want to use C++, maybe an interface to Fortran libraries like Lapack++ is an answer. But even now when I teach a numerical analysis course, it's always the people who want to use the algorithms for real reasons, the physics grad students, who want to code in Fortran. They want a number
or maybe an array as output, they want the code to run fast and they want
it to be relatively straightforward to write.
Interfacing with other languages is not an issue but interfacing with Fortran libraries is.
They aren't writing a GUI interface to a simulation code. (Obviously Fortran would be totally useless for this).
The advantages you've listed just aren't that important against C++:
What you have successfully argued is
that C++ can be extended to have the same features
as Fortran. However I suspect most people doing scientific computing still don't want to switch to C++ for the following reasons:
Complex numbers and multidimensional arrays
may be implementable in C++, but the possibility of getting everyone using the same package like boost::multi_array to do it seems somewhat unlikely. These are things that should be standardized in a language for scientific computing. I also note that the boost::multi_array
syntax for specifying subarrays is both longer and less standard than Fortran's Matlab style
notation. I would also worry about the
optimizability of some of this code unless
it was written with optimization in mind.
Efficiency. Some of the efficiency difference is inherent in the design of
the language. (e.g. array aliasing issues). As the Blitz++ homepage you link to points out, numerical libraries in C++ achieve greater performance by fairly sophisticated methods and a lot of work. As they say on their own page: "The solution may be to move high-level optimizations out of compilers and into libraries. The Blitz++ library demonstrates how this may be done in C++." This sounds like a lot like admitting defeat and giving
up on producing a C++ compiler that is any good for optimizing code for scientific computing. In
contrast decent Fortran compilers produce very
good executables with fairly straightforward coding
of algorithms and relatively little extra effort.
Modern Fortran compilers will compile all the old libraries. This is very nice. Sure you
can call libraries from C++, but with Fortran
you never have to worry about whether
the matrices are stored row-wise (C++) or column-wise (Fortran). Transposition may
sound easy, but having to do it unecessarily isn't exactly going to speed up your code.
C++ does not offer a lot of features that
are needed for number crunching and are lacking in Fortran. People don't have any incentive to switch. For things that C++ lacks
that Fortran has, see the above.
3) Laser had a patent which caused nobody to do anything with lasers. Once the patent expired we ended up with laser pointers, last light shows, etc, etc..
This is not accurate, although someone might have patented process for making laser diodes that slowed things down (I don't know that one way
or another). Check out
this link for a history of laser diodes. They were invented 40 years ago. Presumably the patent expired in 1982 or so. I don't remember a flood of consumer laser diodes in the early 80's.
For that matter Holonyak's laser was the first GaAsP diode light emmitting diode---a category that includes every red LED that you saw on alarm clocks, early digital watches and calculators in the 70's. If the patent on his laser had been enforced aggressively I'm pretty sure you wouldn't have seen red LEDs in cheap consumer items.
According to the Wikipedia link posted by someone else, the L1 point lies on a line
from the earth to the moon. Therefore it is only stable with respect to displacements perpendicular to this line. If an object at the L1 point is displaced slightly along the perpendicular, it will tend to return to the L1 point. But if it is displaced slightly toward the earth, the gravitational pull of the earth will dominate over the pull of the moon and an object will start to fall. That isn't stability. Presumably it would require some sort of correction to stay in place unless it was perfectly at the L1 point and there were no outside influences. This is apparently not a problem with the L4 and L5 points.
Just to make a simple but reasonblly respectable* site would need two years of university education if you never done it before.
If you have a reason to have a website, who
cares if it looks pathetic? I teach. Therefore my personal website has contact info, course handouts, exam dates and homework assignments. It's all text and all hand written HTML. No effort to make and no effort to update. Students can get the information they need and I don't care about anything else. But I will add that it looks great in lynx.
Regarding your first point: That's Oak Ridge National Laboratory.
Oak Ridge had several plants: X10, K25 and Y12.
Y12 did weapons components. K25 did isotope separation. X10 had a graphite reactor but is
now the home of ORNL. There is nuclear research going on at ORNL. But they also have an environmental sciences division. I worked at ORNL and then later at Y12 during summers as a college student and my mother still
works at ORNL in environmental sciences. I can't
swear to the correctness of the cited report, but I can safely say that ORNL researchers are not uniformly pro-nuclear and their research goals
are not strongly directed from above---just by what they can get DOE or NSF grants for. It has been that way for a while; the environmental sciences division at ORNL has been in existence since at least the early/mid 70's and has been doing independent research since that time.
Sun used to own the scientific workstation market. I have an Ultra 10 at work and I've been using Sun machines for far longer than I've been using PCs. (1987 for a pre-Sparc Sun machine vs. 1995 for my first Linux PC).
But these days Solaris is a pain for people like me who do their own administration and are used to Linux machines at home. Various annoying
decisions: not bundling a C compiler with Solaris, not using more of the gnu utilities or adding gnu features to the Solaris utilities (I once had a script downloaded from Sun fail because the version of awk that comes from Solaris 8 wouldn't handle
a sufficient number of fields on a line), CDE (enough said), not maintaining a (IMO) sufficient variety of freeware packages (a lot of free software has to be compiled---see my first gripe), while not shipping a compiler they ship their own set of binutils that are configured to work with the Sun compiler so that a GCC package doesn't fit in seamlessly without extra work. I realize that Sun machines don't come loaded down with everything in part because a Server OS should be lean and stable. But for a workstation the appropriate balance shifts toward giving the user a variety of software---particularly if the user is root and is not a professional sysadmin. The amount of work I have to put into making Sparc pleasant to use as a workstation is really phenomenal.
It's like they decided to give up on this part of the market because it wasn't as profitable as selling servers. Whatever happens to Sun, I've probably bought my last Sparc.
1733 Du Fay finds that there are two types of electric charges, and that unlike charges attract while like charges repel
1745 The Leyden Jar is invented by Kleist and van Musschenbroek for storing electric charge
**Leyden Jar - The first device used to store electricity because it was believed that electricity was a fluid ("Leyden").
Your chronology completely ignores the debate between proponents of the two fluid theory and the one fluid theory. Du Fay was a proponent of the two fluid theory, as your quote suggests. A quick google search turned up the following more detailed chronology:Electrostatics
which does discuss Franklin's contributions.
I will grant you that Priestly and Coulomb's work was earlier than I remembered. But Franklin's work was still among the most significant contributions to understanding of electricity during the 18th century.
This seems to be flamebait. The almanac was not his scientific legacy and wasn't even written with any pretence of contributing to science. Judging Franklin as a scientist on the basis of the almanac is like judging Newton on the basis of his theological writings.
The scientific legacy of Franklin was the "single fluid" theory of electricity. He was the first to hypothesize that electricity was a single conserved "fluid" instead of two fluids (corresponding to + and -). In fact, it was this hypothesis that gave us + (an excess of fluid) and
- (a lack of fluid). After learning about electrons, we now know that he got the signs wrong. But it's hard to see how an 18th century experiment could have determined that. It seems to me that this is a pretty enormous scientific contribution. He wasn't Faraday or Maxwell, but this is probably the single most important contribution to understanding electricity made in the 18th century.
Re:Fortran 95 oddly enough is multi-processor awar
on
Grid Processing
·
· Score: 2, Informative
Sadly GNU fortran 77, the free fortran, lacks these language features and there is no GNU fortran 95 yet. This is lack prevents a lot of people from writing code in this modern language.
I wouldn't put much blame on GNU. Fortran 77
was a fairly unpleasant language, even before GNU existed. Compiler extensions sometimes helped but
weren't too great for portability.
Not that I don't want to see a GNU Fortran 95, but if you can tolerate free as in beer software, Intel
makes their fortran compiler available for free for
noncommercial use on Linux:
IFC
There is also the F programming language which is a (mostly) tastefully selected subset of Fortran 95:
F.
Mostly it just throws out redundant features and stuff
inherited from Fortran 77. It's a little picky in a teaching-language sort of way and takes some getting used to, but I have ported code to F without pulling my hair out. And the code did end up a bit clearer for the changes.
For the Economist that was a pretty honest article. Considering the crowd that was about as close to a rousing endorsement as you're likely to see.
The Economist has been guardedly positive about open source for quite a while now. They advocated the anti-trust suit against Microsoft and they were covering Linux with a positive spin even back then. And every few weeks I see a big IBM ad on the back cover with Linux in big, bold letters. I'd say they are as big a booster of open source software as you will find
in the non-tech oriented press and in this they have been consistently ahead of the trend.
Now it seems that they have an open source related
article every week or two.
I sure hope this isn't really true. If mathematicans aren't really interested in helping understand the world, why should society fund them? I certainly know that a major motivation for my career in science is that understanding the world through science will help people, cure diseases, etc.
In most cases society doesn't fund them
to do mathematical research. Research grants
among pure mathematicians are not so prevalent.
They earn their keep teaching math to (mostly) scientists and engineers and then prove theorems in whatever time that leaves open.
Even aside from the argument that mathematics
is intrinsically beautiful like music, art or literature, it doesn't make practical sense to expect everyone to have an eye on applications of their work. People have to specialize if they
hope to learn enough to accomplish anything these days and a mathematician who also becomes enough of an expert in curing diseases to let that guide new mathematical research probably won't have time
to prove new theorems.
Letting mathematicians do math so that everyone can pull out what theorems they might apply in their own field has been pretty effective historically.
I don't know about you, but the only reason I ever even come close to touching coffee is for the caffeine. There are better beverages without caffeine
Of course there caffeine-free
beverages that are better than coffee. But all of those contain alcohol and some people occasionally want
to drink something that is both alcohol AND caffeine free.
The town hall format for presidential debates originated in 1992 with Bush, Clinton and Perot and isn't particularly traditional. That being said, I don't see the point to it if they are constraining those who are asking the questions.
Amen. And once you get any path issues worked out there are often deeper problems. I just spent the morning compiling GNU common lisp under solaris so I could compile maxima to work out some rather tedious equations without making any arithmetic errors on the coefficients. After pulling out most of my hair I found that newer GCC versions on solaris have revealed a bug in gcl and I found a patch to gcl that solved the problem. (My undying gratitude goes to the GCL people for fixing this quickly.) This sort of thing almost always happens to me when compiling any large free software under Solaris.
It may not be fair blaming Sun. I know I bring some of this trouble on myself by having tools that are half GNU/half Solaris. But a lot of software requires the GNU tools to compile. And since Sun doesn't by default bundle a C compiler with Solaris there is no standard Sun platform for people to write free software for. Everyone has a mix of Sun and GNU and when compiling you always have to worry about which you are using. They may have made themselves some money selling compiler licenses, but by fragmenting the solaris "standard" for compilation they seriously undermined the viability of Solaris for scientific workstation use. Any Linux distribution is a pleasure to work with by comparison. Presumably Sun only cares about selling servers.
My all time most annoying experience was with a patch cluster installation script, downloaded from Sun's own website, that wouldn't run with Sun's own version of awk (not a bug exactly; a limit on the number of records in a line that was exceeded by the size of the patch cluster). Gawk, of course, worked just fine.
OK. Having ranted, I now feel better.
"It puts the lotion on its skin or else it gets the hose again." ---Buffalo Bill Gates
LaTeX is the standard, but I don't generally see a required document format for submitting papers to mathematics journals. SIAM (Society for Industrial and Applied Mathematics) will accept Word and use word2tex. But I do some refereeing for (mostly) matrix theory and numerical analysis journals and I've never seen a paper written in Word (except for engineering journals). If you have something with a lot of equations LaTeX is a lot less work if you know how to use it. Using the equation editor in word is excruciatingly painful and slow.
In my experience for many types of scientific computation if your code runs into swapping you are in trouble. For highly tuned code in numerical libraries people even worry about L1 and L2 cache utilization.
I have been recently working on a code for solving linear systems of a specific structure (Toeplitz for those who care about such things). The algorithm I'm using solves smaller linear systems of size 256-by-256 as a core operation. Many of the smaller systems have the same system matrix but different right-hand-sides. I got clever and decided to store information (the Cholesky factor) of these systems to speed up their solution. This completely messed up the use of cache and I saw a big drop in performance. Another time I tried running this "improved" code on my 128M laptop. It hit swap and probably would have run forever (certainly longer than I had any patience for).
I don't completely disagree but there are a lot of issues; it's not just that there are professors who aren't interested in teaching. I'm an assistant professor in a math department. I teach numerical analysis to classes comprised of about 75% computer science majors and the rest math majors. There are several things beyond the control of a professor that can impact the quality of instruction. One of the biggest is that many of the students are not interested in the topic; they just want to pass to meet their departmental requirement for a numerical analysis course. Hence I get students trying to copy homework or codes. Just last week I had two students turn in spline code that was a bad C translation of Fortran code. I haven't hunted down the source but their codes were identical and neither student knew Fortran. Having to check for this sort of thing takes time and does not make it easy to teach.
To make matters even worse, the students put off taking numerical analysis until they are about ready to graduate by which time they have forgotten much of the calculus they learned in their first two years. In less mathematical disciplines, many students put off taking calculus and end up forgetting their high school math. And that's assuming the high schools did an adequate job preparing them for calculus in the first place.
And then there are teaching load issues. Math departments generally teach more courses than any other department with the exception of English. Everyone has to take some math. Proportionally we are overloaded with classes to teach. Further university guidelines on tenure are often not written to take this into account. Mathematicians at many universities are expected to write as many papers, get as many grants and supervise as many graduate students as computer science professors while teaching more courses. For some reason this doesn't always work even when the professor has the best of intentions.
The closest thing to a solution that I know of is to hire non-tenure-track lecturers to specialize in teaching calculus, college algebra, etc. That is already done at most schools but often there are rules about retaining such faculty. Even when they are doing a great job (and many do---teaching is what they do and they take it seriously) university policy can prohibit renewing their contracts past an arbitrary time (e.g. 3 years). This makes it difficult to maintain a staff of good teachers.
There may be professors slacking off but in my (possibly biased) opinion the institutional problems are more common. Students shouldn't be able to put off taking math. The universities should hire some portion of permanent faculty that is dedicated to teaching. And promotion guidelines should be written to reflect what the university realistically expects from both tenure-track and non-tenure track faculty in each department.
Possibly that's more griping than you wanted to hear about university politics...
Most of the code used by Matlab for core computations is well known free software (LAPACK for linear algebra). The more specialized stuff is mostly written in Matlab itself. The Matlab code can be viewed. So the source to most of the computational code in matlab is available. You just can't redistribute it. I suppose this might make the job of cloning matlab easier. But the chief effort, octave, nice as it is for basic linear algebra computations seems to move at a glacial pace. Perhaps the problem is getting enough specialists to work on code related to their area. As I said this isn't work for anyone below PhD student level. And even the vast majority of PhD engineering students use numerical algorithms but aren't specialists in the algorithms used in engineering. The most reliable algorithms in some areas haven't penetrated into the textbooks or the graduate curriculum. (e.g. Pole placement algorithms based on orthogonal factorization for controller design.) Some of this stuff needs to be written by people who are active researchers in an extremely specialized area.
That said I doubt structural modeling of a bridge is done in matlab. The finite element code in Matlab isn't the fanciest or most flexible. More specialized finite element codes are probably used for any sort of nontrivial structural simulation. The sort of thing Matlab is used for in engineering is more along the lines of digital filter design, control system design and image processing.
I teach math. My area is numerical analysis. This isn't freshmen using calculators in calculus class where I'd agree Mathematica is not an appropriate tool.
Matlab is not in any way "just a tool to make the final simplification a little easier". It is a numerical, matrix oriented programming language. It is used extensively by engineers and has specialized toolboxes for signal processing, image processing and control system design. Similar open packages (like Octave, which I use a lot) don't have the same level of support for engineering applications.
The idea that engineering students should reimplement this stuff in a general purpose programming language is not realistic. You might as well ask them to write their own CAD application. I'd venture a guess that most universities do not have engineering students taking even a single numerical analysis course. (The University of Illinois did not when I was an undergrad there in the late 80s). And one numerical analysis course is not close to being sufficient for implementing acceptably reliable numerical code for the sorts of things that matlab does.
With that being said, I mostly run Octave, Mupad and a fortran compiler (g77 or Intel's zero price compiler for fortran 90) under linux. But there are times when I need matlab. And my grad students need it even more.
We should only aim for a more accurate theory if the uncertainties in our data merit that level of accuracy and we are able to obtain different data after constructing the model to validate that it works. Otherwise you are just constructing a model to accurately describe your experimental errors. Such a model will wonderfully describe the data you used to construct it and nothing else.
There is lots of work in the area of system identification (modeling "black-box" systems based on knowledge of their input/output behavior and with no a priori internal information) on determining the order of the model. Even for systems that can be modeled by linear constant coefficient ordinary differential equations (linear time invariant systems in systems theory language) it isn't possible to determine how complex the model should be by just looking at the order of magnitude of parameters. There are fairly sophisticated statistical criteria. And while those criteria might serve as a guide the ultimate test is how your model describes data that was not used to construct the model (model validation). For developing a scientific theory the issues are even harder.
As a previous poster noted the same issues arise just with drawing a curve through data points. Look up smoothing splines and generalized cross validation or L-curves to see a few fairly nontrivial things people use for fitting data with errors.
I more or less agree with the rest of your post except to note that Kepler's theory couldn't have been justified at the time by being derived from Newton's laws since Newton's laws didn't exist. This is a case in which a simpler theory pointed the way to important general laws. Which seems to me like an argument for simplicity whenever it can reasonably be achieved. A more accurate theory constructed to describe all available data but with no predictive power is often worse than the simple theory that approximately matches the same data.
I'm rusty on this stuff, but I just pulled my old electromagnetics text. The magnetic field for a dipole contains 1/r^2 and 1/r terms. The electric field contains 1/r^3, 1/r^2 and 1/r terms. The 1/r^2 term dominates the magnetic field and the 1/r^3 dominates the electric field in the near field approximation. For far field the 1/r terms dominate both. (For the far field, this is as expected since the Poynting vector ExH gives power flow density and it needs to fall of as 1/r^2 for the power crossing through spheres of different radius around the dipole to be constant.)
So it looks to me like the near field falls of fast, but for the magnetic field not REALLY fast.
You can deblur to some extent. However it is an ill-posed problem: Roughly speaking, in one dimension for simplicity, if you blur by a point spread function h(x), this is convolution of your original image f(x) to get a blurred image g(x):
g(x)=h(x)*f(x)
where "*" is convolution. If you take Fourier transforms, convolution becomes multiplication and
G(w)=H(w)F(w)
has zeros in the frequency domain and if you try to divide by H(w) to invert the blurring
F(w)=G(w)/H(w)
Then H(w_0)=0 for some frequency w_0 (actually many frequencies) and you are dividing by zero when computing F(w_0). This magnifies any non-blurring related noise or error in G(w) (which is always present) and you get garbage back. Practical deblurring schemes like Wiener filtering, Tikhonov regularization and total variation regularization effectively limit the component of the reconstructed F(w) at or near those frequencies. Thus some information is lost: you don't even try to get F(w_0) right. But the effect can still be quite good. Typically this results in a less blurry image with less sharp edges. I don't think you could do this sort of regularization with a lens, but I could be wrong.
Some pretty pictures and comparisons of various algorithms can be found at Deblurring
And you can figure out why all this stuff works using the Fibonacci sequence and some algebra. If
F(n)=F(n-1) + F(n-2) with F(1)=1 and F(2)=1 then
F(n)=(a1^n-a2^n)/sqrt(5) where a1=(1+sqrt(5))/2 and a2=(1-sqrt(5))/2.
You can prove this identity by substituting into the recurrence for F(n) and checking that F(1)=F(2)=1. Since a2 is less than 1 in magnitude that term goes to zero and in the limit the ratio of successive terms is just a1. That is all that is happening when you take the ratio of the last two terms in a Fibonacci sequence.
If you generate a sequence g(n+1)=1+1/g(n) and you are interested in finding any fixed points a to which the sequence might converge that fixed point must satisfy
a=1+1/a
so that a^2 - a -1 =0. That quadratic has roots
a1=(1+sqrt(5))/2 and a2=(1-sqrt(5))/2.
However only the root a1 is a stable fixed point. If you start the iteration near a2, but not exactly at a2, it won't stay there; it will converge to a1. However if you start with g(0) exactly equal to a2 the sequence g(n) won't converge to a1; it will stay at the fixed point a2 unless rounding error interferes and pushes it a little bit away from a2.
Now why someone like me who teaches math would goof off on Slashdot by teaching more math is a even bigger mystery for which I have no answer.
Well, as a numerical analyst, my point of view is that of the guy who might have to do it. There are a lot of people like me working on algorithms who don't have a lot of interest in using C++ if it means more work to optimize the code. Since avoiding array aliasing for optimization reasons and crunching numbers in multidimensional arrays are of basic importance to scientific computing, I tend to think C++ is an unsuitable language from the ground up, whatever other cool features it might offer. It seems better to me to design a language tailored to scientific computing. That is the direction Fortran has been heading.
If end users want to use C++, maybe an interface to Fortran libraries like Lapack++ is an answer. But even now when I teach a numerical analysis course, it's always the people who want to use the algorithms for real reasons, the physics grad students, who want to code in Fortran. They want a number or maybe an array as output, they want the code to run fast and they want it to be relatively straightforward to write. Interfacing with other languages is not an issue but interfacing with Fortran libraries is. They aren't writing a GUI interface to a simulation code. (Obviously Fortran would be totally useless for this).
What you have successfully argued is that C++ can be extended to have the same features as Fortran. However I suspect most people doing scientific computing still don't want to switch to C++ for the following reasons:
This is not accurate, although someone might have patented process for making laser diodes that slowed things down (I don't know that one way or another). Check out this link for a history of laser diodes. They were invented 40 years ago. Presumably the patent expired in 1982 or so. I don't remember a flood of consumer laser diodes in the early 80's.
For that matter Holonyak's laser was the first GaAsP diode light emmitting diode---a category that includes every red LED that you saw on alarm clocks, early digital watches and calculators in the 70's. If the patent on his laser had been enforced aggressively I'm pretty sure you wouldn't have seen red LEDs in cheap consumer items.
According to the Wikipedia link posted by someone else, the L1 point lies on a line from the earth to the moon. Therefore it is only stable with respect to displacements perpendicular to this line. If an object at the L1 point is displaced slightly along the perpendicular, it will tend to return to the L1 point. But if it is displaced slightly toward the earth, the gravitational pull of the earth will dominate over the pull of the moon and an object will start to fall. That isn't stability. Presumably it would require some sort of correction to stay in place unless it was perfectly at the L1 point and there were no outside influences. This is apparently not a problem with the L4 and L5 points.
If you have a reason to have a website, who cares if it looks pathetic? I teach. Therefore my personal website has contact info, course handouts, exam dates and homework assignments. It's all text and all hand written HTML. No effort to make and no effort to update. Students can get the information they need and I don't care about anything else. But I will add that it looks great in lynx.
Regarding your first point: That's Oak Ridge National Laboratory. Oak Ridge had several plants: X10, K25 and Y12. Y12 did weapons components. K25 did isotope separation. X10 had a graphite reactor but is now the home of ORNL. There is nuclear research going on at ORNL. But they also have an environmental sciences division. I worked at ORNL and then later at Y12 during summers as a college student and my mother still works at ORNL in environmental sciences. I can't swear to the correctness of the cited report, but I can safely say that ORNL researchers are not uniformly pro-nuclear and their research goals are not strongly directed from above---just by what they can get DOE or NSF grants for. It has been that way for a while; the environmental sciences division at ORNL has been in existence since at least the early/mid 70's and has been doing independent research since that time.
Sun used to own the scientific workstation market. I have an Ultra 10 at work and I've been using Sun machines for far longer than I've been using PCs. (1987 for a pre-Sparc Sun machine vs. 1995 for my first Linux PC).
But these days Solaris is a pain for people like me who do their own administration and are used to Linux machines at home. Various annoying decisions: not bundling a C compiler with Solaris, not using more of the gnu utilities or adding gnu features to the Solaris utilities (I once had a script downloaded from Sun fail because the version of awk that comes from Solaris 8 wouldn't handle a sufficient number of fields on a line), CDE (enough said), not maintaining a (IMO) sufficient variety of freeware packages (a lot of free software has to be compiled---see my first gripe), while not shipping a compiler they ship their own set of binutils that are configured to work with the Sun compiler so that a GCC package doesn't fit in seamlessly without extra work. I realize that Sun machines don't come loaded down with everything in part because a Server OS should be lean and stable. But for a workstation the appropriate balance shifts toward giving the user a variety of software---particularly if the user is root and is not a professional sysadmin. The amount of work I have to put into making Sparc pleasant to use as a workstation is really phenomenal. It's like they decided to give up on this part of the market because it wasn't as profitable as selling servers. Whatever happens to Sun, I've probably bought my last Sparc.
1733 Du Fay finds that there are two types of electric charges, and that unlike charges attract while like charges repel
1745 The Leyden Jar is invented by Kleist and van Musschenbroek for storing electric charge
**Leyden Jar - The first device used to store electricity because it was believed that electricity was a fluid ("Leyden").
Your chronology completely ignores the debate between proponents of the two fluid theory and the one fluid theory. Du Fay was a proponent of the two fluid theory, as your quote suggests. A quick google search turned up the following more detailed chronology:Electrostatics which does discuss Franklin's contributions.
I will grant you that Priestly and Coulomb's work was earlier than I remembered. But Franklin's work was still among the most significant contributions to understanding of electricity during the 18th century.
This seems to be flamebait. The almanac was not his scientific legacy and wasn't even written with any pretence of contributing to science. Judging Franklin as a scientist on the basis of the almanac is like judging Newton on the basis of his theological writings.
The scientific legacy of Franklin was the "single fluid" theory of electricity. He was the first to hypothesize that electricity was a single conserved "fluid" instead of two fluids (corresponding to + and -). In fact, it was this hypothesis that gave us + (an excess of fluid) and - (a lack of fluid). After learning about electrons, we now know that he got the signs wrong. But it's hard to see how an 18th century experiment could have determined that. It seems to me that this is a pretty enormous scientific contribution. He wasn't Faraday or Maxwell, but this is probably the single most important contribution to understanding electricity made in the 18th century.
I wouldn't put much blame on GNU. Fortran 77 was a fairly unpleasant language, even before GNU existed. Compiler extensions sometimes helped but weren't too great for portability.
Not that I don't want to see a GNU Fortran 95, but if you can tolerate free as in beer software, Intel makes their fortran compiler available for free for noncommercial use on Linux: IFC
There is also the F programming language which is a (mostly) tastefully selected subset of Fortran 95: F. Mostly it just throws out redundant features and stuff inherited from Fortran 77. It's a little picky in a teaching-language sort of way and takes some getting used to, but I have ported code to F without pulling my hair out. And the code did end up a bit clearer for the changes.
The Economist has been guardedly positive about open source for quite a while now. They advocated the anti-trust suit against Microsoft and they were covering Linux with a positive spin even back then. And every few weeks I see a big IBM ad on the back cover with Linux in big, bold letters. I'd say they are as big a booster of open source software as you will find in the non-tech oriented press and in this they have been consistently ahead of the trend. Now it seems that they have an open source related article every week or two.
In most cases society doesn't fund them to do mathematical research. Research grants among pure mathematicians are not so prevalent. They earn their keep teaching math to (mostly) scientists and engineers and then prove theorems in whatever time that leaves open.
Even aside from the argument that mathematics is intrinsically beautiful like music, art or literature, it doesn't make practical sense to expect everyone to have an eye on applications of their work. People have to specialize if they hope to learn enough to accomplish anything these days and a mathematician who also becomes enough of an expert in curing diseases to let that guide new mathematical research probably won't have time to prove new theorems.
Letting mathematicians do math so that everyone can pull out what theorems they might apply in their own field has been pretty effective historically.
Of course there caffeine-free beverages that are better than coffee. But all of those contain alcohol and some people occasionally want to drink something that is both alcohol AND caffeine free.
I'm not sure why. People can be weird sometimes.