Timeline for Schrödinger eigenvalue problem in two dimensions (Harmonic Oscillator)
Current License: CC BY-SA 3.0
39 events
when toggle format | what | by | license | comment | |
---|---|---|---|---|---|
Apr 13, 2017 at 12:55 | history | edited | CommunityBot |
replaced http://mathematica.stackexchange.com/ with https://mathematica.stackexchange.com/
|
|
Jun 15, 2016 at 4:49 | comment | added | Jens | @AlexeiBoulbitch I'd say it's both. The rescaling helps avoid setting an artificial cutoff distance, but the finite element method adds the nice ability to have an adaptive mesh (which the method in this answer doesn't have). The finite-difference method with a rigid grid (i.e. what I do here) has the advantage of being pretty fast, though. | |
Jun 14, 2016 at 8:32 | comment | added | Alexei Boulbitch |
@Jens Thank you for this answer. Its a great help. My equations are not really physical Schrödinger ones. They come from bifurcation theory and only look like Schrödinger. But they are 2D, no angular momentum and no rotational symmetry. Anyway, before I asked you, I tried to use the NDEigensystem approach by placing the zero Dirichlet condition at a finite, large distance from the origin. The result has been poor. My question now is, if the good result that you show in your answer cited above is due to the mapping r=tan(ksi) you used, or it is the Method you used, that matters?
|
|
Jun 13, 2016 at 17:44 | comment | added | Jens | @AlexeiBoulbitch The method in this answer actually works fine for the Coulomb potential, too - provided you discard solutions with angular momentum $m=0$. You can recognize the nonzero-$m$ solutions by the fact that they are going to appear in approximate doublets (almost equal eigenvalues). Those solutions can be made to agree with the exact solutions because they have vanishing measure at the singularity. Of course, you also need ever larger spatial domains when approaching the ionization threshold. | |
Jun 13, 2016 at 17:30 | comment | added | Jens | @AlexeiBoulbitch To numerically get the known solutions for the problem you mentioned, see my answer here. | |
Jun 13, 2016 at 17:21 | comment | added | Jens | @AlexeiBoulbitch It definitely also works for other well-behaved potential shapes - but the Coulomb potential, even with the small cutoff you added, is not well-behaved. Whenever you have near-singularities, the finite-difference method won't work unless you scale out the singularity somehow (by using known analytic behavior near the singularity). Of course for the Coulomb case, you should instead use rotational symmetry first. | |
Jun 13, 2016 at 9:47 | comment | added | Alexei Boulbitch |
@ Jens Dear Jens, I tried to substitute off-hand here a potential of a different kind: v[x_, y_] := -(1/Sqrt[(x^2 + y^2) + 0.0001]) for which the solution is known, but this ListPlot3D[Partition[v[[10]], 2 nX + 1], PlotRange -> All] shows something looking quite unexpectedly. Could you please comment, if the above approach will also work with potentials of different (from harmonic) types?
|
|
Mar 16, 2015 at 23:28 | comment | added | Jens |
It's relatively simple: if you have chosen a length unit by specifying a in the code, you need to bring the kinetic-energy term into the form $-(1/2) d^2/dx^2$. To do this, you have to choose the unit of energy appropriately.
|
|
Mar 16, 2015 at 13:38 | comment | added | user26958 | @Jens: Maybe I could ask you even one more thing; how would I change a particles mass in the code? | |
Mar 15, 2015 at 22:01 | comment | added | user26958 | @ Jens: yes, I think this does the trick. Thanks a lot. | |
Mar 15, 2015 at 16:55 | history | edited | Jens | CC BY-SA 3.0 |
In last code block, removed additive term in Hamiltonian left over from previous method.
|
Mar 15, 2015 at 3:06 | history | edited | Jens | CC BY-SA 3.0 |
deleted 9 characters in body
|
Mar 15, 2015 at 2:55 | comment | added | Jens | @andi I added the info that you were asking for (I think). | |
Mar 15, 2015 at 2:52 | history | edited | Jens | CC BY-SA 3.0 |
Added built-in functionality for DifferenceOrder
|
Mar 13, 2015 at 11:17 | comment | added | user26958 | @ Jens. Great! I really did not get how to achieve this myself! Thank you very much! | |
Mar 12, 2015 at 16:31 | comment | added | Jens | @andi I may be able to do that - give me a few hours. | |
Mar 12, 2015 at 15:00 | comment | added | user26958 | Thanks for this very detailed answer. You write: 'Finally, we have to construct the kinetic energy, i.e., the Laplacian. This is the only off-diagonal part of the matrix. How far off the diagonal its matrix elements extend depends on the order of the finite-difference approximation by which we replace the second derivatives in the Laplacian. Here I chose the simplest possible approximation.' Could you also explain how to construct the a more general case? I would really appreciate that. | |
Jul 18, 2014 at 9:44 | comment | added | acl | This deserves more upvotes... | |
Jun 15, 2014 at 4:23 | comment | added | Jens |
@NoOne With the scaling I used, the issue is that small a must be compensated by larger nX in order to avoid overlap of the wave function with the grid boundary where the finite-difference method fails. I added that to the end of the answer.
|
|
Jun 15, 2014 at 4:21 | history | edited | Jens | CC BY-SA 3.0 |
Clarified meaning of grid spacing versus boundary effects
|
Jun 15, 2014 at 1:59 | history | edited | Jens | CC BY-SA 3.0 |
responded to comment
|
Jun 15, 2014 at 0:48 | comment | added | NoOne | Why do the eigenvalues drastically change by changing the length of the grid step, i. e. "a", for example from 0.2 to 0.05 or to 0.1? | |
Jun 14, 2014 at 19:19 | history | edited | Jens | CC BY-SA 3.0 |
Generalize first approach
|
Jun 14, 2014 at 19:13 | history | edited | Jens | CC BY-SA 3.0 |
Generalize first approach
|
Jun 14, 2014 at 18:38 | vote | accept | NoOne | ||
Jun 14, 2014 at 18:26 | history | edited | Jens | CC BY-SA 3.0 |
Added more basic approach.
|
Jun 14, 2014 at 17:48 | comment | added | Jens |
@NoOne Ah, version 7 doesn't have AdjacencyMatrix - I'll add an alternative approach later. I thought what I did was actually more likely to work in all versions, but I guessed wrong...
|
|
Jun 14, 2014 at 16:33 | comment | added | NoOne | Yes, "AdjacencyMatrix" is not included in Mathematica 7.0 . | |
Jun 14, 2014 at 13:02 | comment | added | NoOne | I am using Mathematica 7.0, I think my problem is due to this fact. | |
Jun 14, 2014 at 10:30 | comment | added | NoOne | When I used your above code (for (1/2)(x^2 + y^2)), it did not return any eigenvalues, and it seems, it is working... . Is this problem caused by the low speed of my laptop? And why does the number that has been returned as "Null" is different from you, what does it mean? | |
Jun 14, 2014 at 6:00 | comment | added | NoOne | It is x^2 + y^2 + xy in the original question. | |
Jun 14, 2014 at 5:56 | comment | added | Jens | @NoOne No, you do have to modify the potential to make it consistent with the periodic boundary conditions. This could be done artificially while still maintaining a parabolic minimum in the center. But I'll have to let you try to figure that out yourself... in the meantime, could you modify your original question to include the ho potential $x^2 + y^2 + x y$? That's the more doable test case, after all. | |
Jun 14, 2014 at 5:52 | history | edited | Jens | CC BY-SA 3.0 |
Added anisotropy
|
Jun 14, 2014 at 5:52 | comment | added | NoOne | I would like to go through a Fourier analysis of its wave packet. Is your approach here for finding the evolution of the wave packet, applicable for 2D H. O.? Because there, the potential you have considered is periodic, but here is not. | |
Jun 14, 2014 at 5:38 | comment | added | Jens |
Actually, this is pretty much the simplest approach I can think of. By using NDSolve functionality, I only meant that the approximation for the second derivatives in the kinetic energy can be improved using some built-in functions. But the remainder, i.e., the construction and diagonalization of h , will stay the same. I'll hopefully get to that modification tomorrow.
|
|
Jun 14, 2014 at 5:36 | history | edited | Jens | CC BY-SA 3.0 |
added 1220 characters in body
|
Jun 14, 2014 at 5:26 | comment | added | NoOne | It seems to me NDSolve will be more straightforward. I am looking enthusiastically for how it works. God bless you! | |
Jun 14, 2014 at 5:21 | comment | added | NoOne | Fantastic. But it is very concise. I am going through it, but it would be great if you could add some extra explanation to it. | |
Jun 14, 2014 at 5:15 | history | answered | Jens | CC BY-SA 3.0 |