I am working on solving the time-independent Schrodinger equation using the method of finite differences. This approach has been discussed previously on this site (here, for instance). My code is written in Mathematica and is able to reproduce the energy eigenvalues and wavefunctions for a 1D particle-in-a-box and the harmonic oscillator.

When I take the particle-in-a-box potential and add in a large barrier in the middle third of the box, such that $$ V(x) = \begin{cases} 0, & 0 < x < \frac{1}{3} \text{ and } \frac{2}{3} < x < 1 \\ 2000, & 1/3 \leq x \leq 2/3 \\ \infty, & \text{otherwise} \end{cases}$$

I get an interesting result. The solutions appear to be particle-in-a-box wavefunctions that are constrained to exist in either the left or right partitions (see picture below). Now, I know that quantum tunneling causes some probability density to leak through, but I don't believe that this is important. The oddity is that the wavefunctions come in pairs, and their energy eigenvalues appear to be pair-wise degenerate.

According to problem 2.44 in the third edition of Quantum Mechanics (Griffiths and Schroeter), the 1-D Schrodinger equation does not permit degenerate eigenvalues for linearly-independent solutions. There are a few assumptions that go into the derivation, one of which is that the solutions approach 0 as $x \rightarrow \infty$. This is certainly the case here, and $\psi_1$ and $\psi_2$ are definitely linear-independent.

With all of that said, where is the issue? Is the theorem wrong? Am I not accounting for an assumption that is violated in this problem? Or does it have to do with some voodoo relating to the indistinguishability of electrons or entanglement? Or perhaps the solutions are linearly-dependent in phase space, and Griffiths over-simplified the wording of the theorem?

Either way, I'd love some insight.

First four wavefunctions


I may have found the reason. When I force Mathematica to compute the eigenvalues using infinite precision, then I get symmetric or antisymmetric wavefunctions, as expected. I only tried this for small matrix sizes (50), and will try to confirm with a larger size.

Here's my Mathematica code. I apologize if it is messy. I am a python programmer and did just enough to get this thing to run:

(* Matrix size *)
n = 100;

(* Range = 0 < x < a *)
a = 1;

(* Calculate \[CapitalDelta]x *)
\[CapitalDelta]x = a / (n + 1);

(* Specify \[Nu](x) = V / \[Lambda] where V = potential function and \
\[Lambda] = \[HBar]^2/(2m(\[CapitalDelta]x)^2) *)
\[Nu][x_] = If[x <= a/3 || x >= 2 a/3, 0, 2000];

(* Create and populate array. *)
data = Array[0 &, {n, n}];
For[i = 0, i < n, i++,
    For[j = 0, j < n, j++,
        If [i == j, 
   data[[i + 1, j + 1]] = 2 + \[Nu][(j + 1) * \[CapitalDelta]x ]  , 0];
        If [j == i - 1 || j == i + 1, data[[i + 1, j + 1]] = -1, 0];
N[data] // MatrixForm;

(* Find all eigenvectors and eigenvalues. Sort them by ascending \
energy values *)
eigensystem = Eigensystem[data, -n];
eigensystem = Transpose@SortBy[Transpose[eigensystem], First];

(* Define state. k = 1 represents ground state *)
k = 3;

(* Extract energy value. *)
energy = \[HBar]^2/(2 m (\[CapitalDelta]x)^2)*eigensystem[[1]][[k]]

(* Extract eigenvector of choice (and append 0 in beginning and end *)

eigenvector = Insert[eigensystem[[2]][[k]], 0.0, {{1}, {n + 1}}];

(* Plot potential, wavefunction, and probability density *)
plot1 = Thread[{Subdivide[a, n + 1], eigenvector}];
plot2 = Thread[{Subdivide[a, n + 1], eigenvector^2}];
GraphicsRow[{Plot[\[Nu][x], {x, 0, a}, PlotRange -> All], 
  ListLinePlot[plot1, PlotRange -> All], 
  ListLinePlot[plot2, PlotRange -> All]}, ImageSize -> 1000]

(* Plot a range of wavefunctions and probability densities *)
kstart = 1;
kend = 4;
   Thread[{Subdivide[a, n + 1], 
     Insert[eigensystem[[2]][[i]], 0.0, {{1}, {n + 1}}]}], 
   PlotRange -> All], {i, kstart, kend}], ImageSize -> 1500]
   Thread[{Subdivide[a, n + 1], 
     Insert[eigensystem[[2]][[i]]^2, 0.0, {{1}, {n + 1}}]}], 
   PlotRange -> All], {i, kstart, kend}], ImageSize -> 1500]
  • 1
    $\begingroup$ This sounds like an issue with your numerical integration, the eigenstates should be symmetric or antisymmetric with non-degenerate energies. You should look up the literature on double well potentials. $\endgroup$
    – AfterShave
    Mar 4, 2022 at 23:44
  • $\begingroup$ The approach turns the Schrodinger equation into a matrix equation and finds the eigenvalues. The plots shown were generated by finding the eigenvalues of a 500 x 500 matrix. I get the same result with a 5000 x 5000 matrix, so I don't think that numerical accuracy is the issue. Perhaps the problem is the approach itself or my implementation. $\endgroup$
    – Dr. Momo
    Mar 4, 2022 at 23:49
  • $\begingroup$ As AfterShave has indicated, the energy eigenstates should be symmetric or antisymmetric about $x = 1/2$, so your plots don't correspond to the actual eigenstates. The issue could be with your implementation or it could be a numerical issue. You could try lowering the height of the potential barrier separating the wells and see if you get sensible results. $\endgroup$
    – Puk
    Mar 4, 2022 at 23:59
  • $\begingroup$ When your work contradicts an established theorem, you should probably blame your work first and the theorem second. $\endgroup$
    – Javier
    Mar 5, 2022 at 0:30
  • $\begingroup$ @Javier With all due respect, a theorem is only as good as the assumptions that go into it. And there's a chance that the parameters of my problem do not fit the theorem. The energy eigenvalues of the 1-D particle-on-a-ring are degenerate, after all. $\endgroup$
    – Dr. Momo
    Mar 5, 2022 at 0:37

1 Answer 1


Running your Mathematica code with using Eigensystem[N[data], -k] results in your original results while with precise values the eigenstates are symmetric/antisymmetric (but any large size will take a much longer time for Mathematica to compute).

This is all an issue in what Mathematica rounds as an eigenvector: you can mathematically show the approximation matrix $A$ (data) used is nondegenerate and does not have any eigenvectors that aren't symmetric or antisymmetric by its inherent structure. If one assumes $\psi$ is an eigenvector of $A$ with eigenvalue $\lambda$, then given a fixed value of $\psi_0$ the necessary value of $\psi_1$ can be uniquely determined ($\lambda \psi_0 = 2 \psi_0 - \psi_1$ turns into $\psi_1 = (2 - \lambda)\psi_0$), and then $\psi_2$ can be uniquely found given $\psi_0$ and $\psi_1$ through re-arranging $\lambda \psi_1 = -\psi_0 + 2\psi_1 - \psi_2$ from there and so on since the effect of $A$ on an element of $\psi$ always relies on its nearest neighbors, even within the middle potential well. This implies vectors corresponding to the same eigenvalue of $A$ can only differ multiplicatively, and thus the eigenstates are nondegenerate. Since running this logic backwards from the last element works exactly the same (since the potential is centered), and any multiplication on a starting element exactly carries over to all generated elements, $\psi_0$ and the last value $\psi_f$ can only differ in sign or they would not result in each other for both inductions. Thus, for this discrete approximate Hamiltonian the energy levels are not degenerate and are either symmetric or antisymmetric over the center.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.