I LOVE this book. I've had a hard copy for years. I always felt kind of lonely, though - it's such a niche topic that I had trouble finding anyone else interested enough to actually work through it :) So it's great to see it on the front page of HN.
Depending on how much code is in this book I may be interested in porting it to work with Racket. I am very interested in investigating Lisps and Lisplikes for numerical work, so I'd be happy to work through it in parallel with you, if you're still looking for a partner.
It looks pretty interesting. I studied physics in school and have been thinking about going back for an MS in computational modeling, so I'm thinking I'll start in on this book over the weekend just for fun. I've never used a Lisp-like language before, and it looks to be a pretty comprehensive review of classical mechanics as well.
I really like the idea of introducing classical mechanics and methods of numerical solution alongside one another. I do feel that physics at the undergraduate level fetishizes pencil and paper to the detriment of understanding how complex a classical system really can be.
I am also ecstatic about the choice of not-Fortran for representing the algorithms.
Makes me tempted to try and write a "Structure and Interpretation of Neutron Transport"
Makes me tempted to try and write a "Structure and Interpretation of Neutron Transport"
Let me know if you do - I'd be interested in reviewing early drafts. I studied nuclear engineering in grad school, but enjoyed the computational aspects enough to leave the field and start a career in programming instead. I don't recall liking any of the textbooks.
I've taken several courses in classical mechanics, and I've never seen anyone give a proper treatment of complex (really, chaotic) systems unless the entire course in devoted to it. The ideas are so different and time-consuming that it just cannot be introduced alongside simple classical mechanics.
That said, numerical simulations of simple systems (harmonic oscillators, perturbed oscillators, etc.) can be a helpful partner to analytical study.
> The dimension of the configuration space of the juggling pin is six: the minimum number of parameters that specify the position in space is three, and the minimum number of parameters that specify an orientation is also three.
Can somebody explain this? Isn't the number of parameters that specify an orientation two, totaling five?
Pick two atoms in the pin and specify the location of one atom. Now the other atom can only be located on a sphere around the first atom. The sphere is a 2d surface for which you need two parameters.
Another problem is that you can encode two real numbers into one, for example by interleaving digits. So you could specify the entire pin with one real number. What exactly is the problem here and how can you eliminate it? You need to impose more conditions than simply continuity, because you can make a continuous bijection [0,1] <-> [0,1]^2?
I really like the approach of this book. I often don't feel like I understand (or even know what there is to understand) something until I code a program for it. For example you understand collisions if you can write a program that given an initial configuration of polygons at t=0, gives the configuration at later time. If you don't do this then you don't know exactly what you understand. Perhaps you understand collisions of point masses, but not general collisions.
The dimension of the configuration space of the juggling pin is six: the minimum number of parameters that specify the position in space is three, and the minimum number of parameters that specify an orientation is also three.
Can somebody explain this? Isn't the number of parameters that specify an orientation two, totaling five?
Pick two atoms in the pin and specify the location of one atom. Now the other atom can only be located on a sphere around the first atom. The sphere is a 2d surface for which you need two parameters.
It is not enough to specify the position of two atoms. You need to specify the positions of three atoms. The first atom can go anywhere, so it contributes 3 parameters. The second atom is limited to the 2-D surface of a sphere around the first atom, so its position only contributes 2 parameters as you said. The third atom is limited to the 1-D edge of a circle around an axis that connects the first two atoms, so its position contributes 1 parameter.
If you choose the position of the point of a pencil, and also a point in the center of the pencil's eraser, the pencil can still spin, with the pencil lead as the axis.
Another problem is that you can encode two real numbers into one, for example by interleaving digits. So you could specify the entire pin with one real number. What exactly is the problem here and how can you eliminate it? You need to impose more conditions than simply continuity, because you can make a continuous bijection [0,1] <-> [0,1]^2?
The concept of dimension of a vector space is handled much more rigorously in proof-oriented linear algebra textbooks. This book gives a loose definition for the dimension of a configuration space, which is just good enough to be able to follow the issues they are talking about. You looked too closely at their definition and discovered a flaw. Dimension is not really the number of parameters required for encoding a position in the space, but this can still be a good enough working definition for many problems if you don't get too fancy about your encoding.
I'm not sure this is actually going to be a useful explanation, but I'll give it a go.
One problem has to do with rotational symmetry. The selection of a juggling pin is perhaps not the best example, but let us assume for now that the juggling pin has a dot somewhere on its surface that ensures it is not rotationally symmetric about any axis. If you are only concerned with the with orienting a body subject to symmetry you can sometimes do better (for example, a perfectly uniform sphere would only require three components), but the general case requires six components.
Your approach of pinning two atoms in the pin effectively specifies an axis. Yes, it would accurately position and constrain two points on the pin. Those two points form a line. Consider what happens if I now rotate the rest of the atoms in the pin around that line. I have not changed the representation in your coordinate system, because I've kept the two atoms you specified fixed, but I have changed the orientation of the pin for an external observer. If, on the other hand, you constrained another atom that was not colinear with the first two, I would no longer be allowed this freedom of rotation. The system would be said to be fully constrained.
To put this into concrete terms with our pin, let's assume the two atoms I picked were the center of the top and the center of the bottom. Because the pin is symmetric about this axis, with five numbers I can specify the orientation of the pin sufficiently to juggle it, but what about the dot I mentioned before? By rotating the pin about this principal axis I could change the position of the dot without changing the coordinates of the pin.
Stated more simply: if I tell you the position of the center of the earth and my location in terms of latitude and longitude, you can locate me precisely, but you can't tell whether I'm looking north or south.
Also, you can only encode a (countably infinite) subset of the reals by interleaving digits. Consider the set of irrational numbers. Any scheme you provide that tries to reduce the dimension of a vector of n reals into n-1 will face the same problem: you cannot project from a space who's components are made up of members uncountably infinite sets into a space of lower dimension without losing information.
I also once took the course on which this book is based at MIT. A programmer by trade at the time, I found out a bit more about my learning style. Namely, I was able to relatively easily complete the assignments without developing a very deep understanding of classical mechanics along the way. It was only later in physics graduate school, and after semesters of doing calculations by hand, that I was able to put my previous work in a larger context. I'd love to revisit the course with that new perspective and a bit more time than that haggered MIT student of yore. In summary I'd echo another poster's comment that "it's liberating to have unambiguous notation but it doesn't replace intuition".
The class was definitely out of my comfort zone in terms of the physics, but I loved the scheme system that allowed us to focus on the concepts, and leave the grunge to the computer. It's liberating to have an unambiguous notation, but it doesn't replace intuition.
Classical mechanics bears approximately the same relationship to calculus that calculus does to first-year algebra. You have to have a very good grasp of calculus to appreciate, or even survive, classical mechanics.
if you mean calculus as taught today --no-- newton did not invent that calculus -furthermore- in newtons book known as -principia- newton does not use -calculus- in any shape or form to -calculate- orbits - newton uses only proportions -- but feel free to downvote me for daring to -question- such a cherished -myth- instead of reading -principia- for yourself
Its software, scmutils, includes an emacs-like editor and execution environment called Edwin. Here's an oooold blog post I wrote about using GNU Emacs with scmutils instead: http://ai.redsymbol.net/2007/06/using-gnu-emacs-with-scmutil...