Skip to main content
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