Please check my quantum physics browser game for accuracy
linkingideasblog.wordpress.com
linkingideasblog.wordpress.com
Full disclosure: I didn't play. I'm not launching a Java applet. So I'm just reading your description for physics content.
> (The independence of quantum systems from absolute phase is called gauge symmetry)
Gauge symmetry isn't the independence of the global phase---it's the independence of a spacetime-dependent phase. This is a much much bigger symmetry than the independence of global absolute phase.
> Until that question is answered, then we can’t rule out the possibility that consciousness does have something to do with it.
Are you sure you only read Feynman? This is an extreme fringe position. I don't know any physicists who actually holds this position, unless they're trying to get on TV.
> Interestingly, the Schrodinger equation states that a particle can’t exist at all in a place with more potential than the particle has energy. It will simply “jump” down any available holes to satisfy the equation. The same jumping behaviour is what gives rise to tunelling, when a particle jumps as if by magic from one hole to another.
That's exactly the opposite of what the Schrodinger equation says! A particle can exist in a place where the potential energy is more than the total energy. That cannot happen classically, but is allowed quantum-mechanically. However, the wavefunction dies off exponentially fast. But it's never 0 unless the potential is infinite. That's what allows tunneling---the exponentially small tail is real.
There is no "jumping" in quantum mechanics. The Schrodinger equation implies the continuity equation [continuity].
> Decoherence doesn’t explain, though, why the wavefunction collapses to a singular thing we call “reality”. So quantum mysticism still has room to flourish.
No. Decoherence is the thing that lets you avoid the need to collapse at all. The point of decoherence is that many quantum particles interacting together looks like a quantum superposition of many classical systems. So if you "are" one of those particles and look around, you'll see things behaving classically---only if you are "outside" (ie. have full access to the wf) can you see anything quantum going on.
If the wavefunction doesn't collapse, why does it look like it does collapse?! Well, you're inside the wavefunction. Before the different classical possibilities decohere, you wait with anticipation. After decoherence, a version of you is in each branch of the wavefunction, each observing different outcomes, wondering how the wavefunction collapsed! But, it didn't---it's just hard to see that from where you're standing.
This is the claim of the Many Worlds interpretation --- the wavefunction never collapses. Everything just evolves according to the Schrodinger equation, forever. There is no place or regime where quantum mechanics breaks down. Every branch of the wavefunction is equally real and continues to exist forever.
So, why don't we see all sorts of zany, quantum effects in our every day life? Decoherence saves the day: even with a few dozen particles the different branches of the wavefunction have decohere enough that it'd take a massive, huge, gargantuan coincidence for two parts of the wavefunction to interfere. It's still possible! But it's extremely unlikely. Now scale up to Avogadro's number of particles, and forget it: things just look classical.
> You could also massively simplify particle interactions to make some reasonable gameplay; perhaps even simulate a quantum computer. Do get in touch with me if you want to do this; I’d be keen to help.
If you can find a way to simulate an arbitrarily-sized quantum computer with a reasonable amount of computing, you will get famous. A few particles should be possible but it won't scale well. You're right to worry about how to draw it. You might consider (fixed-in-space) spin systems instead, where you can draw the density matrix with (relative) simplicity. But then you lose the moving-around-in-space intuition.
> Feynman dedicates a lot of his book to two state systems, because these are ultimately responsible for the strong and weak nuclear forces. > Nuclear forces arise when you vary the size of the system, and the two possible stationary states display slightly different energy characteristics. This means the system has a lower energy at a certain size.
Oy. This is wrong.
Two state systems are interesting in-and-of-themselves because you can exactly solve them, they have many actual instatiations in nature (in fact, anything you might consider making a qubit out of!), and they provide toy models for many kinds of other physical systems.
Nuclear forces do not arise from two state systems. There is a pecularity in nuclear physics---the proton and the neutron look (almost) exactly the same. OK, they have different electric charge, but nuclear force doesn't care about electromagnetism. What's interesting is that they have almost exactly the same mass: m_Neutron = 939 MeV, m_Proton = 938 MeV. Well, that's quite surprising! Why should that be? Most particles we know have dramatically differing masses (eg. m_electron = 0.511 MeV, etc). So, what's making these masses come out the same? Moreover, people noticed empirically that the interaction between protons and neutrons seemed to look roughly the same (once you account for electromagnetism).
This led people to hypothesize a symmetry called isospin symmetry---the symmetry between protons and neutrons [isospin]. You can make a lot of progress by assuming that protons and neutrons form two-state system and that the nuclear force doesn't care which state you're in. Then, you can incorporate the slight differences on top.
In fact, you can get a lot farther once you have this idea in hand. You realize that the pions form an iso-triplet, the delta baryons form an iso-fourplet, etc [fourplet]. Then you find particles with strangeness, and you really get going. You wind up recognizing deeper underlying patterns that reveal beautiful symmetry.
Isospin symmetry is not a true symmetry of nature, but it's a very good approximation, and it's related in some ways to weak isospin [weak].
I find that unlikely...
> Base states are arbitrary things, like a trap or a goal in QMM, but you can still ask what the chances are of a particle being in one of them.
You're right that basis states can be arbitrary. However, that's not their most important characteristic. We say we have a basis if we have a set of states that covers all the possibilities and they're not redundant. That is, if any state can be written as a unique sum of basis states.
> Stationary states are more like wavefunctions in QMM that have settled into a stable condition. Their phase may go on changing, but the amplitude doesn’t.
The set of stationary states is a special basis. It's the set that when evolved in time only change by a phase, as you suggest---these states don't get mixed together when time marches on. So, how can a system "settle" into such a state? In other words, if you rewind the Schrodinger equation, what state was the system in before? Simple: it was in the same stationary state!
Because stationary states form a basis, any non-stationary state is a unique sum of stationary states. In fact, if you know this basis and their corresponding energies you know all there is to know about a system's dynamics! If you take an arbitrary state and decompose it as a sum over stationary states (which is always possible, since they form a basis) then you immediately know how that state evolves in time, because you know how the individual components evolve in time.
Since the individual stationary-state components don't mix together, the only thing that changes in time is their relative phases. So, if a system doesn't start in a stationary state, it cannot possibly reach one, without there being some kind of perturbation (ie. alteration of the system).
Postscriptum
Not having played, I can't say that it's not faithful to a deep understanding of quantum mechanics. But, I am skeptical, because your write-up seems to have a lot of confusion about what QM actually is / says. That's OK---it's a tricky subject. But I would avoid trying to push your game as a pedagogical learning tool unless it's been thoroughly vetted by actual physicists, because you could easily confuse neophytes.
In some sense, the learning approach you have laid out stresses the parts of quantum mechanics that are the least interesting and least novel---they can be understood from playing with a wave equation. What's new is superposition, commutation of operators (or failure to commute), interference. That's why most modern approaches start with two-state systems (which immediately require bras and kets) and only go to systems with spatial extent later. In other words, it's better pedagogically to understand the operating system (quantum mechanics) before you start studying particular programs (particular systems).
When you study particular systems there's a lot of intricate detail that doesn't matter for you to learn the lesson. You don't really need to know about the Laguerre polynomials or whatever. The way you learn quantum mechanics is by showing a bunch of wavefunctions are orthogonal---it's not about performing integrals. You're better off understanding orthogonality, linearity, and unitarity.
> I found myself baffled trying to understand the connection between state notation, continuous wavefunctions...
Moving from bras and kets to wavefunctions is, honestly, trivial---if you have a firm understanding of what's going on. That's why I'm nervous about trying to translate your game (which again, may be faithful to QM---I haven't played) into actual education.
[continuity] https://en.wikipedia.org/wiki/Continuity_equation#Quantum_me...
[isospin] https://en.wikipedia.org/wiki/Isospin
[fourplet] after triplet the words we use vary a bit. I've seen sextet, octet, and decuplet, but almost everything else is a n-plet or, generically, a multiplet.
[weak] https://en.wikipedia.org/wiki/Weak_isospin
Sorry about the multi-comment. When I tried to post it as one thing I just got "That comment was too long."
There’s lots of really interesting stuff here to follow up, some of which will take me a very long time. All of it is appreciated as I haven’t yet had the opportunity to discuss the subject with somebody who truly has a handle on the subject - at least not since the optional first year physics module I took as part of my CS degree 17 years ago, and that didn’t go this far.
In no particular order…
> I would avoid trying to push your game as a pedagogical learning tool unless it's been thoroughly vetted by actual physicists
Noted, though vetting is exactly what I’m trying to make a start on here :) Your comments on the learning process are interesting and don’t square with my own experience, though perhaps they would if I were formally taught. I might scale them back.
While we’re talking about vetting, if you’d like to be credited for your efforts towards that, by real name or HN handle, please let me know as I feel it would only be fair to add an acknowledgement.
>Gauge symmetry isn't the independence of the global phase---it's the independence of a spacetime-dependent phase.
I don’t quite follow what the latter means, but is it correct to say that independence of global absolute phase arises from gauge symmetry?
>That's exactly the opposite of what the Schrodinger equation says!
Noted and understood. I should replace “can’t exist” with “has low probability” and modify accordingly.
>If you can find a way to simulate an arbitrarily-sized quantum computer with a reasonable amount of computing, you will get famous. A few particles should be possible but it won't scale well.
Yup. A few particles was what I had in mind.
>> Nuclear forces arise when … >Oy. This is wrong.
Excellent advice, thanks for the heads up: I’ll cut the entire footnote. Are nuclear forces getting beyond QM then – into QFT? I would love to go on and learn that but haven’t got there yet.
>> Until that question is answered, then we can’t rule out the possibility that consciousness does have something to do with it. >Are you sure you only read Feynman? This is an extreme fringe position. I don't know any physicists who actually holds this position, unless they're trying to get on TV. >No. Decoherence is the thing that lets you avoid the need to collapse at all. >This is the claim of the Many Worlds interpretation
With interpretations of QM I think we’re getting more into philosophy than physics, until the day comes that we get different predictions from any of them. Somehow this makes me feel qualified to argue with a nuclear physicist...
I may be discussing a fringe position, but am I right in thinking your counterargument relies on invoking many worlds, which isn’t mainstream either? To summarize the popular interpretations
- Copenhagen is mainstream but doesn’t explain collapse
- Many worlds is quite popular but possibly the least parsimonious theory in the entire history of science
- Pilot wave theory holds promise as it doesn’t need collapse, it isn’t mainstream though seems to be gaining popularity at the moment
So at the moment I’d say there is still room for a consciousness based interpretation. I’m a former AI researcher btw, I used to take the strong AI consciousness-as-emergence position but I no longer think that explanation cuts the mustard. At the present state of science I think all we can say about consciousness is “there is some very big important process going on and we don’t have the first clue what, where and how”... as such I don’t think it’s scientific to completely rule out the possibility that consciousness is involved in collapse as the latter is a process we haven’t adequately explained yet either. Presumably most physicists steer clear of this as consciousness is so far beyond where science is now that they’d rather (quite sensibly) not speculate, lest they be remembered as the Victorian engineer who thought life came from electricity. My aim is to discuss not support that view by the way – I think a newcomer to the subject would naturally be curious about why some people think consciousness is involved. Still, until there’s experimental evidence I’m hedging my bets.
Anyway enough pub chat!
Finally I’d be interested to know your take on leni536’s point about uncertainty further down this thread? That seems to be an unresolved technical discussion to me.
Porting would also be a potentially helpful way for me to understand some of the concepts.
Yes, the whole thing is at experimental stage right now and as you may guess from the title of the post I'm more concerned with the physics than anything else. Thanks for the pointer to a better library - it's the first time I even parsed XML and was happy to stop with that class as soon as I got something that worked. Glad you spotted the generative sound.
As for the cert: it _could_ be stolen.
Least flak wouldv'e been a github repo. Most people wouldn't even bother check what's in it and if it matches a binary download, they'd just assume someone else would check ;)
I bet the XML parsing and the sound synth are exactly the two things you're least and most proud of? :D I honestly recommend taking a look at JAXB. You start from a schema description and generate java classes from it. Then you just stuff these classes and a conforming XML file into a JAXB Unmarshaller and get a clean instance tree of the file. Such a tree can then be poured back into a file by way of a Marshaller.
Alas there are a few things to not be proud of in the code, but I'm proud I got it working enough for hundreds of people to play. The synth ... meh ... I had higher hopes for that part, but it turned out to be a lot harder than I imagined, and it's honestly a bit of a hack that doesn't truly represent the wavefunction to my satisfaction. I had to prioritize making it bearable to listen to. Audio is hard (I've worked in that field as well).
Re: multiple account breaches: keybase.io aims to make that harder. Have you heard about that? (I know, I digress, sorry.)
If you'd upload your code to github that'd make reviewing it easier.
Perhaps you could port your game to something like Processing.js? It allows for very Java-like syntax, compiles to html5/js and is good with graphics.
It's as easy as running '$ appletviewer URL'
$ appletviewer http://tropic.org.uk/~crispin/quantum/
And also, moderns browsers allow you to have the plugin installed, but disabled unless you activate it on a specific page.Google Chrome does not support applets in any way since the deprecation of NPAPI.
I think I'm not the target audience, I hope OP finds some good physicists to show this to :)
The uncertanity principle is about the uncertanity of non-commuting observables at any given time (eg. position and momentum), it's not about the time dependence of the wave function.
You can certainly talk about it in terms of Fourier components or that sort of thing, too. There's a degree to which the uncertainty principle as applied to the position/momentum degrees of freedom is nothing but a statement about Fourier transforms. But I don't think it's a bad conceptual shorthand, especially for students who aren't yet experts in thinking about Fourier stuff.
The uncertainty of position and momentum is fundamentally about the Fourier transform, and is definitely about the time dependence of the wave function. You don't even need a full description of quantum mechanics to get the uncertainty principle, "momentum is the Fourier transform of position" gets you there immediately.
> This is not true, spreading out is due to dispersion.
In this case, for a massive particle, the spreading out is due to the uncertainty principle. That uncertainty principle might be the cause of the dispersion, but you don't need to invoke anything else to get the spreading out.
>Why you don't see particle like wave packets on water surface? Also dispersion. In fact you can create particle like waves on a guitar string, which is pretty much dispersionless. Also you can describe massless particles in QM which are also dispersionless.
You can create particle like waves on water surface, on a guitar string (which IS dispersive, just not to first order), and in massless particles. They are called solitons, and are a pretty cool area of research.
Are you saying then that by allowing people to directly observe the wavefunction I'm not really demonstrating uncertainty at all? As that only arises when you force observation via position/momentum?
Also if a massless quantum particle is dispersionless does that mean you can say "the particle is in this small area and will stay here forever"? Doesn't that violate uncertainty?
I think I made a mistake about massless quantum particles, since in 3D a packet disperses in all directions. But in 1D it works. It can't stay stationary, but it moves with "c" in either direction but it stays in a localized area, still the uncertainty principle still holds.
IcedTea-Web Plugin version: 1.6.2 6/1/16 7:49 AM Exception was: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet. For more information click "more information button". at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:764) at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:686) at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:933) Caused by: java.lang.ClassNotFoundException: quantum.GameWindow at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1562) at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:753) ... 2 more This is the list of exceptions that occurred launching your applet. Please note, those exceptions can originate from multiple applets. For a helpful bug report, be sure to run only one applet. 1) at 6/1/16 7:49 AM net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet. For more information click "more information button". at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:764) at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:686) at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:933) Caused by: java.lang.ClassNotFoundException: quantum.GameWindow at net.sourceforge.jnlp.runtime.JNLPClassLoader.loadClass(JNLPClassLoader.java:1562) at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:753) ... 2 more
Second edit: It's because I had OpenJDK 7 as the default JRE. It works fine when I switch it to OpenJDK 8.
Tip: stick 4 spaces before the stack trace to not munge newlines.
Edit: If I run it with appletviewer, I get a more helpful exception:
$ appletviewer http://tropic.org.uk/~crispin/quantum/
java.lang.UnsupportedClassVersionError: quantum/GameWindow : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
[snip] IcedTea-Web java error manual log:
Application title was not found in manifest. Check with application vendor
IcedTea-Web java error - for more info see itweb-settings debug options or console. See http://icedtea.classpath.org/wiki/IcedTea-Web#Filing_bugs for help.For getting feedback from quantum information researchers, I recommend posting to https://www.facebook.com/groups/qinfo.scientists.unite/.
I see that you have similar taste/inspirations to mine (I am also a big fan of Test Tube Games (Velocity Raptor & Agent Higgs)). See also: https://hackpad.com/J0X4MSberlM?r=0 for more picks (and feel invited to add more).
For quantum games - in a week or so I plan to release my own - https://github.com/stared/quantum-game
With this list - don't try to play it all at once. Some of these are potent drugs - not only addictive, but mind-altering (e.g. Hyperrogue, when you walk on a hyperbolic plane).
I'm also working on a game that at one point had a quantum mechanical theme, however it is more backstory than science. Quantum Traffic Control. Watch for it on the App Store sometime in this decade. Hopefully.
It's a bunch of QM applets I created about 12 years ago to aid in visualising different aspects of quantum mechanics. I was a grad student at the time, and made these as part of a fellowship. Several of these were used in corresponding homework assignments and lectures for both grad and undergrad QM classes.
http://www.pha.jhu.edu/~javalab/
I decided to apply for this fellowship after an enlightening experience seeing the time evolution of Coherent States of a quantum simple harmonic oscillator.
I was actually thinking of making my own little Quantum game to see if it could be made fun. I was thinking of making a QGolf system, where you tweak an initial stationary wavefunction which is then collapsed after a certain time. Although these kinds of mechanics probably work better.
>Until I made this game I was pretty confused about the uncertainty principle. The way it’s usually taught, without resorting to maths, is to say something like this:
>Until I made Quantum Marble Maze (QMM) I had never heard a satisfying explanation for why frequency and momentum are the same thing. This is called Planck’s relation. Sure, you can demonstrate classically that higher frequency waves carry more energy, but does that really mean a particle changes frequency if you change its momentum – in other words if you push it?
If you know how to do Fourier Transforms, note that the momentum-wavefunction is the Fourier Transform of the postion-wavefunction. And in order to make a well defined peak using sines & cosines, you need a lot of high frequency (high momentum) waves. IIRC this is shown in Griffiths Introduction to Quantum Mechanics, quite a good introduction to QM.
On the other hand, most of the comments have been about the Java rather than the physics. I suppose I should have expected that.
A few words on quantum mechanics - it is very tricky. Someone doesn't understand quantum mechanics by taking a class in it or in getting an undergraduate physics degree. I am sure even many (or all) physics professors have limitations in their knowledge. It's not that the rules are complicated, it is the implications when it is applied in the real world. You do seem to have gained a good level of understanding though.
I have a comment on the nature of a wave function, as described in the section "It's wavelike, but not watery". It states that wavefuntions can act like particles. This may be wording that I just do not understand, but I would want to clarify it.
Take the wave function for an electron - this is not a wave of "electon". It is a wave of probability (sort of) for an electron. The electron itself is always a particle. The motion of the electron is described by the wave. In this way the electron has wave properties.
To take an example, let's shoot an electron gun at a target. Suppose the resulting wavefunction of the electron has a uniform amplitude over the target when it "hits". What is the damage to the plate? Is it uniform damage? No. The damage is always at a single point of impact. We see the result of the electron hitting the target, not the wave function hitting the target.
Now, if we shoot lots of electrons, the damage will be pretty uniform, since they will be distributed all over the plate. But it will still consist of a bunch of point impacts.
I just wanted to be clear about differentiating the wave function from the object whose state (position, momentum, whatever) is described by the wave function.
> This can lead to a bit of confusion, because a lot of people take that to mean that a particle does have definite position and momentum (I mean, all things do, right?!) but you’re sadly not able to find out what it is. Maybe because trying to measure one changes the other – logically that makes sense, right?
> But this is QM, so until you start turning it into computer games, it won’t make sense
I am, of course, just "playing devil's advocate" here a bit. NPAPI clearly had issues and I'm not enough of an expert to say if it would have been possible to simply improve it, or whether it was truly necessary to go to a whole new model. And you can certainly argue that the other browser vendors could adopt NaCL / PNaCL. I guess they have their reasons for not doing so.
It's sad really, because "Java on the Web" has a ton of value, but Sun screwed the pooch years ago with some of their decision making, leaving us where we are now. Oh well, at least there is JWS / JNLP. Hmm... come to think of it, I wonder if the OP could just rework their app to run as a JWS app, instead of as an applet? That might make everybody happy...
Maybe that's a good place to start? Kotlin is a good language anyway.
For the sake of argument I'll accept that it's maybe difficult to compare two languages in general, but in terms of Kotlin/Scala they are extremely similar languages targeting extremely similar use cases.
Kotlin is a simpler language which is a huge benefit.
https://kotlinlang.org/docs/reference/comparison-to-scala.ht...
(If you want an actually simpler language, look at Ceylon)
I'd be very interested in how you eventually decide to update your applet to be more web friendly for current browsers, as I'd like to do the same, but know very little of modern web design.
Right now only one of mine is on GitHub : Squankum, for showing operations of single-qubit operations on input qubits, both graphically and in eigenvector form : https://github.com/jeffwass/Squankum/blob/master/README.md
Remember there's no friction so if you accelerate over half the screen you need to decelerate over the other half if you're going to stop before the other side.
Level 2 can be solved by accelerating/decelerating to follow three straight lines (east-south-west) to the goal. Alternatively if you're feeling cocky you can accelerate east then throw in some south as you approach the corner: you'll bounce off the walls and break the wavefunction a bit but about 50% of the time the goal will trigger.
If you haven't discovered already you can also skip levels from the menu ;)
http://quantumminigolf.sourceforge.net/
Instead of arrow keys, you use a putter to tap the quantum golf ball.
* Like many others here, I was a bit dismayed to see this implemented as a Java applet. Increasing security concerns have meant that I've been able to use fewer and fewer of those in my classes: it's just not reasonable to ask students to jump through those hoops anymore.
* When I look at the menu, it only goes up through level 7.
* I have made very little progress on level 8 (the one with the diffraction grating in the middle that's trying to get you to reach 2% transmission at about an 80 degree angle on each side). I have a general idea of what you want me to do, but I get so little visible transmission most of the time that it feels all but impossible to fine-tune my momentum or other aspects of my strategy. (Is there any way to increase the slit widths or number of slits or something to make that easier?)
* What exactly do the arrow keys do? Are you imposing a linear potential gradient across the whole screen for a short time? It's hard to judge "accuracy" when I'm not quite sure what I'm looking at. (That also means I'm not entirely sure how to teach it.)
* Along similar lines, do you have a sense of what exactly is leading to the visible interference effects during motion? (The ones that you point out can be guides as to which direction the wave is moving?) Maybe I ought to have a direct intuition for this! Is it purely an effect of reflections off of the walls, or would I see the same thing if I started with a Gaussian wave packet in a linear potential without any boundaries at all? (And if it's reflection related, why is it mostly showing the direction of primary motion rather than the direction of the reflections?) Some explanation for this might be nice in a teaching tool.
* Do you think you could allow the user to toggle the phase-rainbow mode on and off? (That's the mode that I would expect to always give an indication of the dominant momentum of the wave function.)
* The "collapse" mechanic is very helpful for game play, but might deserve some sort of explanation. In particular, I worry that it could train students to believe a critical misconception: that if the probability of a particular state becomes high enough, that state immediately becomes "true". Maybe that wouldn't turn out to be a serious concern, but I'm not certain that beginners are well-equipped to recognize which weird aspects of game play are supposed to reflect real physics and which are mere game enhancements. (The way collapse works here feels a lot like Copenhagen, but not quite, since it doesn't obey the Born probability rule.)
* It would allow for significantly richer strategy and game play if the player had a wider menu of potential functions to choose from. (For instance, what if the arrow keys continued to be linear potential functions and a mouse click provided a harmonic oscillator?)
* In your explanatory text, I'm not comfortable with your discussion of decoherence. I'm far from an expert on that subject, so I'm hesitant to try to offer specific corrections. But it feels off to me. (In particular, a single quantum particle bouncing off of strict potential energy walls should not be a manifestation of decoherence, because the particle's state isn't becoming entangled with the state of those walls in any way. I don't see any manifestation of decoherence in the game.)
In case you're interested, my current favorite intro level textbook on quantum mechanics is Tom Moore's "Six Ideas that Shaped Physics: Unit Q". It doesn't go as far as I'd like for a really thorough course (which is especially true in the recent 3rd edition, though the material that's still there is presented much more clearly), but as part of an introductory sequence it does a great job. Much like Townsend's fantastic Jr/Sr level text, Moore first introduces the "rules" of quantum mechanics in the context of two-state spin systems (in a slightly simplified version of Dirac's bra-ket notation), and only moves to wave functions once the fundamental concepts are established. (It doesn't manage to do a whole lot with time dependent position/momentum systems like the ones you're simulating, though.)
Level 8 is odd. You thought more diffraction would occur with slower speed right? In the simulation it doesn't; bounce off the left wall and hit the grating fast to complete. I have to admit this bothers me. I can only assume this is because sidebands which would otherwise hit the grating itself move inwards to hit the 2% targets or something. Not good at all from a learning point of view.
Yes, the arrow keys impose a linear potential gradient while they are being held. It fades in gradually as well so no sharp transients (unless you differentiate). Not sure if that detail was required but it's there now.
The interference effects during motion are not wall reflections as far as I can tell. Some levels such as the traps don't have walls but (imperfect) absorbers and they exhibit it just as much. You're right, it's easy to see why this occurs in the rainbow mode but not so much in the amplitude mode. Genuine physics or artifact of simulation - presumably somebody can do some calculus and work that one out!
Decoherence, I acknowledge should involve multiple quantum particles. What we do see here though is an evolution from a single particle with coherent phase, which interferes with itself, into one with incoherent phase, that doesn't. Conceptually that seems similar to decoherence.
I think all your pedagogical points are good ones btw.
Like I said to evanb, if you would like to be acknowledged for your review I'm more than happy to. Best wishes.
If I were you, I'd leave out the discussion of decoherence entirely. It's a subtle topic (evanb did it justice, I think), and I'm reasonably convinced that it doesn't really apply to the game. (Even if I might be wrong about that, is that tidbit of background info important enough to your discussion to be worth the effort and/or the risk?)
Thanks for a fun take on quantum stuff, regardless! (I don't know what's in the higher levels, but might be fun to see some more examples of things like tunneling through different barriers. And I wonder if there's any way of setting up resonance in a cavity in an interesting way...)
Regarding credit: I don't feel like I've contributed that much at this point, but if you wind up with a moderate list of thank you's at some point, you're welcome to include "Steuard Jensen" on the list.
[As for my comment not being more upvoted: I think I got some sort of black mark on my record here a few months ago after I tried to insist that recent reports about reactionless propulsion systems are very unlikely to pan out. Ever since then, I've gotten the sense that my comments are showing up with an initial scoring penalty.]
[Really? Wow, that's harsh. I haven't the foggiest how HN scores work, it's all rather secretive isn't it.]
It's not my intent to attack the choice of Java, but I can't avoid noticing that Java applets as a web technology are getting seriously obsolete these days. It's a challenge to get these applets running.
JavaScript works way better on the web (I hate to say it, but beware the silly name: JS as a programming language has nothing to do with Java).
The traceback follows.
Exception was:
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet. For more information click "more information button".
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:739)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
Caused by: net.sourceforge.jnlp.LaunchException: The applet is signed but its manifest specifies Sandbox permissions. This is not yet supported. Try running the applet again, but choose the Sandbox run option.
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:217)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
... 2 more
Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
... 8 more
This is the list of exceptions that occurred launching your applet. Please note, those exceptions can originate from multiple applets. For a helpful bug report, be sure to run only one applet.
1) at 6/1/16 7:09 PM
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
2) at 6/1/16 7:09 PM
net.sourceforge.jnlp.LaunchException: The applet is signed but its manifest specifies Sandbox permissions. This is not yet supported. Try running the applet again, but choose the Sandbox run option.
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:217)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
... 8 more
3) at 6/1/16 7:09 PM
net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Could not initialize applet. For more information click "more information button".
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:739)
at net.sourceforge.jnlp.Launcher.getApplet(Launcher.java:668)
at net.sourceforge.jnlp.Launcher$TgThread.run(Launcher.java:901)
Caused by: net.sourceforge.jnlp.LaunchException: The applet is signed but its manifest specifies Sandbox permissions. This is not yet supported. Try running the applet again, but choose the Sandbox run option.
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:217)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkAll(ManifestAttributesChecker.java:82)
at net.sourceforge.jnlp.runtime.JNLPClassLoader. (JNLPClassLoader.java:288)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.createInstance(JNLPClassLoader.java:351)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:418)
at net.sourceforge.jnlp.runtime.JNLPClassLoader.getInstance(JNLPClassLoader.java:394)
at net.sourceforge.jnlp.Launcher.createApplet(Launcher.java:704)
... 2 more
Caused by: net.sourceforge.jnlp.LaunchException: Fatal: Initialization Error: Run in Sandbox call performed too late. The classloader was notified to run the applet sandboxed, but security settings were already initialized.
at net.sourceforge.jnlp.runtime.JNLPClassLoader$SecurityDelegateImpl.setRunInSandbox(JNLPClassLoader.java:2386)
at net.sourceforge.jnlp.runtime.ManifestAttributesChecker.checkPermissionsAttribute(ManifestAttributesChecker.java:214)
... 8 more