import matplotlib
from matplotlib import pyplot
import numpy as np
from common import draw_classic_axes, configure_plotting
configure_plotting()
pi = np.pi
Solutions for lecture 7 exercises¶
Warm up exercises¶
1. Check by yourself
2.
3.
4.
where is the free electron mass. This is expected because the free elctrons are not subject to a potential
5. If the dispersion relation is parabolic, so in the free electron model.
Exercise 1: Lattice vibrations¶
1. The group velocity is given by which can be written as
2. The density of states is where we substituted back the dispersion relation.
3.
pyplot.subplot(1,2,1)
k = np.linspace(-pi+0.01, pi-0.01, 300)
pyplot.plot(k[0:149], np.sin(k[0:149])/(np.sqrt(1-np.cos(k[0:149]))),'b');
pyplot.plot(k[150:300], np.sin(k[150:300])/(np.sqrt(1-np.cos(k[150:300]))),'b');
pyplot.xlabel(r''); pyplot.ylabel('');
pyplot.xticks([-pi, 0, pi], [r'', 0, r'']);
pyplot.yticks([-np.sqrt(2), 0, np.sqrt(2)], [r'', 0, r'']);
pyplot.tight_layout();
pyplot.subplot(1,2,2)
w = np.linspace(0, 0.95, 300);
g = 1/np.sqrt(1-w**2);
pyplot.plot(w, g, 'b');
pyplot.xlabel(r''); pyplot.ylabel('');
pyplot.xticks([0, 1], [0, r'']);
pyplot.yticks([0.5, 1], [0, r'']);
pyplot.tight_layout();

4.
Hint: The group velocity is given as , draw a coordinate system under or above the dispersion graph with on the x-axis in which you draw . Draw a coordinate system next to the dispersion with on the y-axis in which you graph .
Plots
Exercise 2: Vibrational heat capacity of a 1D monatomic chain¶
1.
For the energy we have: with being the DOS calculated in exercise 1 and .
2.
For the heat capacity we have:
Exercise 3: Next-nearest neighbors chain¶
1.
The Schrödinger equation is given by: such that we find
2.
Solving the Schrödinger equation yields dispersion:
3.
Plot for t=t':
k1 = np.linspace(-pi, -pi/2-0.01, 300);
k2 = np.linspace(-pi/2+0.01, pi/2-0.01, 300);
k3 = np.linspace(pi/2+0.01, pi, 300);
pyplot.plot(k1, 1/(5*np.cos(k1)),'b');
pyplot.plot(k2, 1/(5*np.cos(k2)),'b');
pyplot.plot(k3, 1/(5*np.cos(k3)),'b');
pyplot.xlabel(r'$k$'); pyplot.ylabel('$m_{eff}(k)$');
pyplot.xticks([-pi,0,pi],[r'$-\pi/a$',0,r'$\pi/a$']);
pyplot.yticks([],[]);
pyplot.tight_layout();

4.
Plots for 2t'=t, 4t'=t and 10t'=t:
def m(k,t):
return 1/(np.cos(k)+4*t*np.cos(2*k))
k1 = np.linspace(-1.6, -0.83, 300);
k2 = np.linspace(-0.826, 0.826, 300);
k3 = np.linspace(0.83, 1.6, 300);
pyplot.plot(k1, m(k1,2),'b');
pyplot.plot(k2, m(k2,2),'b');
pyplot.plot(k3, m(k3,2),'b',label='t=2t\'');
pyplot.xlabel('$k$'); pyplot.ylabel('$m_{eff}(k)$');
pyplot.xticks([-1.6,0,1.6],[r'$-\pi/a$',0,r'$\pi/a$']);
pyplot.yticks([0],[]);
pyplot.tight_layout();
k1 = np.linspace(-1.58, -0.81, 300);
k2 = np.linspace(-0.804, 0.804, 300);
k3 = np.linspace(0.81, 1.58, 300);
pyplot.plot(k1, m(k1,4),'r');
pyplot.plot(k2, m(k2,4),'r');
pyplot.plot(k3, m(k3,4),'r',label='t=4t\'');
k1 = np.linspace(-1.575, -0.798, 300);
k2 = np.linspace(-0.790, 0.790, 300);
k3 = np.linspace(0.798, 1.575, 300);
pyplot.plot(k1, m(k1,10),'k');
pyplot.plot(k2, m(k2,10),'k');
pyplot.plot(k3, m(k3,10),'k',label='t=10t\'');
pyplot.legend();
