Due Nov 18, 2005
In this worksheet, you will write C++ code to solve an eigenvalue problem from quantum mechanics, using the iterative power method code you developed in the preceding worksheet.
Problem 1.
First, write and test a new C++ function that computes both the largest and the smallest
eigenvalue of a matrix by (1) calling your previous function to find the eigenvalue of
largest magnitude; (2) creating a new matrix by subtracting that eigenvalue times the identity
matrix from the original matrix and calling your previous function again to find a
new extreme eigenvalue; (3) calculating the other extreme eigenvalue of the original
matrix by combining these results.
Problem 2.
Find the
lowest eigenvalue and eigenvector of a particle in
the potential V(x), i.e. solve the Schroedinger equation
V(x) = x2 + b x4, |
To do this calculation, you will make the continuous problem into a discrete one by limiting the range in x to -L < x < +L, and representing the wave function by its value at uniformly spaced lattice points within that interval. You will of course have to check that your final results are independent of L and the lattice spacing. (This approach has an enormous range of applications in modern physics and engineering.)
You will need to set up a matrix that represents the operator d2/dx2 by finite differences. Use Taylor's series for the wave function expanded about each lattice point to see how to do this. The simplest method uses only the nearest neighbors. However, it is not difficult to figure out how to do better by also using next-nearest neighbors; or even next-next-nearest; if you prefer to get fancy.
Problem 3.
Compare your result to the result expected expected from first order
perturbation theory, which you can calculate with the help of Mathematica.
(Recall that for a harmonic oscillator
,
and the ground-state wavefunction is a Gaussian.)
Problem 4.
Also compare your result for the ground state energy as a function of the parameter b
to the result obtained from a variational calculation using
a Gaussian trial wave function. Explicitly, use a trial wave function of the form
psi(x) = c1 * exp(-c2*x^2), where c1 is a normalization constant and c2
is adjusted for each value of b to minimize the expectation value of the Hamiltonian.
This calculation gives an upper bound to the ground state energy, and it becomes exact
in the limit b-->0 since the true wave function for the harmonic oscillator
is well known to be a Gaussian. Use Mathematica to do this calculation.
Extra credit
A different approach to converting this Schroedinger Equation problem to matrix
form would be to use harmonic oscillator basis states, i.e., the full set of
eigenstates of the Hamiltonian with b set to 0. The resulting infinite dimensional
matrix would be truncated at some appropriate dimension. Feel free to try it
this way also, if you are sufficiently familiar with the ``raising'' and ``lowering''
operators. (Hint: to find the infinite-dimensional matrix of x^4, you can just
find the infinite-dimensional matrix of x^2 and square it!)