Jupyter notebook mode
4.3. Connection formulas¶
Expected prerequisites
Before the start of this lecture, you should be able to:
 Write down the Schrödinger equation.
 Do the Taylor expansion of a function and perform simple integrations.
Learning goals
After this lecture, you will be able to:
 Describe the behaviour of the Airy functions and why they arise in the WBK approximation.
 Write down the WKB wave function for a given potential in all regions.
4.3.1. On why turning points are problematic¶
So far, we have only derived the WKB wave function for cases where either for all or for all . If we have a potential and an energy such that both regions and are present, there will be a point where . In classical mechanics, is the point where the motion of a particle is reversed, and is hence referred to as turning point.
The WKB approximation inevitably breaks down as we approach the turning point . On a mathematical level, we see that as , and hence, appears in the middle region as can be observed in the plot below. At this point we have that, As the result, the wave function becomes infinite and unphysical. The underlying reason for the failure of this model is the following: As we approach , the wavelength becomes longer and longer. Thus, the condition that the potential must be smooth compared to the wavelength can no longer be satisfied and WKB breaks down.
Strategy to deal with turning points in WKB approximation
This is a fundamental problem of WKB  it will always fail at a turning point. We can however solve this problem by:
 defining three wellbehaved regions,
 solving for the wave functions in each region,
 and finally matching the solutions.
The regions are indicated in the plot below.
import common common.configure_plotting() import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, np.pi, 100) y = np.cos(x) z = xnp.pi/2 fig, ax = plt.subplots(figsize=(10, 5)) plt.plot(x, y, label=r'$V(x)$', color='black', linewidth=1) plt.axhline(0, color='r', label=r'$E$') plt.axvline(1, linestyle='dashed', color='gray') plt.axvline(2.15, color='gray', linestyle='dashed') plt.plot(x, z, label='Linear approx.', linewidth=3, color='darkblue') plt.legend(fontsize=12) plt.ylim(1.1, 1.1); plt.xlim(0, 3.15); plt.yticks([]); plt.xticks([]); plt.xlabel(r'$x_t$', fontsize=15) plt.text(0.3, 0.1, r'$\Psi_I$', fontsize=18) plt.text(1.5, 0.8, r'$\Psi_{II}$', fontsize=18) plt.text(2.7, 0.1, r'$\Psi_{III}$', fontsize=18) plt.scatter(np.pi/2, 0, color='black', zorder=10) plt.vlines(x=np.pi/2, ymin=2, ymax=0, color='black', linestyle='dashed') fig.show()
The solutions for each of the three regions that we will consider are:
The idea for solving this problem is to use a different approximation in region II, and match it with the WKB solution at the boundaries with regions I and III.
4.3.2. Quantum solution for a linear potential  the Airy functions¶
We now consider a linear approximation for the potential around a turning point, i.e. Taylor expansion of the potential around . To keep the notation simple, we will set in the following. We can get the general result by shifting the final result back by .
In the linear approximation, the potential reads We then define Around the turning point, the Schrödinger equation then becomes The last equation corresponds to the Airy equation. The solution to this equation is given by Airy functions, and so the general solution to the Airy equation reads: The Airy functions are special functions, but luckily enough they have been studied long enough that we know a lot about their properties. In particular, we will need the asymptotic form for , which for the first Airy function reads
The function is shown together with the asymptotic form in the following plot:
import common common.configure_plotting() import numpy as np from scipy.special import airy import matplotlib.pyplot as plt def Ai_asymp_neg(z): return 1.0/(np.sqrt(np.pi) * (z)**0.25) * np.sin(2.0/3.0 * (z)**1.5 + np.pi/4.) def Ai_asymp_pos(z): return 1.0/(2 * np.sqrt(np.pi) * (z)**0.25) * np.exp(2.0/3.0 * z**1.5) xs = np.linspace(10, 10, 101) xs_neg = np.linspace(10, 0, 201, endpoint=False) xs_pos = np.linspace(0.00001, 10, 101) fig, ax = plt.subplots(figsize=(10,5)) ax.plot(xs, airy(xs)[0], lw=2.5, label="$\mathrm{Ai}(z)$") ax.plot(xs_neg, Ai_asymp_neg(xs_neg), "r", label="asymptote $z<0$") ax.plot(xs_pos, Ai_asymp_pos(xs_pos), "g", label="asymptote $z>0$") ax.legend() ax.set_xlim(10,10); ax.set_ylim(0.6,2); ax.set_xlabel("$z$") fig.show()
shows oscillating behavior for and decaying behavior for , as expected from physical intuition. We can observe that smoothly connects these two regions (unlike the WKB wave function!). Observe that the asymptotic solutions match the expected behavior away from the turning point at . In fact, the asymptotic forms agree very well with the Airy function already for small values of , less than one oscillation length!
The asymptotic behavior of the second Airy function is given by
The function is shown in the following plot. The behaviour is similar as in the previous case, except that this function grows exponentially for .
import common common.configure_plotting() import numpy as np from scipy.special import airy import matplotlib.pyplot as plt def Bi_asymp_neg(z): return 1.0/(np.sqrt(np.pi) * (z)**0.25) * np.cos(2.0/3.0 * (z)**1.5 + np.pi/4.) def Bi_asymp_pos(z): return 1.0/(np.sqrt(np.pi) * (z)**0.25) * np.exp(2.0/3.0 * z**1.5) xs = np.linspace(10, 10, 101) xs_neg = np.linspace(10, 0, 201, endpoint=False) xs_pos = np.linspace(0.00001, 10, 101) fig, ax = plt.subplots(figsize=(10,5)) xs = np.linspace(10, 5, 101) xs_neg = np.linspace(10, 0, 1001, endpoint=False) xs_pos = np.linspace(0.00001, 5, 101) ax.plot(xs, airy(xs)[2], lw=2.5, label="$\mathrm{Bi}(z)$") ax.plot(xs_neg, Bi_asymp_neg(xs_neg), "r", label="asymptote $z<0$") ax.plot(xs_pos, Bi_asymp_pos(xs_pos), "g", label="asymptote $z>0$") ax.legend() ax.set_ylim(0.6, 2) ax.set_xlim(10, 10) ax.set_xlabel("$z$") fig.show()
Airy functions  basis for a solution around the turning point
The Airy functions thus form a basis for a solution around the turning point, smoothly connecting the regions:
We achieved this by using a specific approximation, namely, by approximating (linearising) the potential around the turning point, and finding asymptotically exact solutions of the Schrödinger equation.
In the next step, we will use these solutions to "glue" our WKB wave functions in region I and III together.
4.3.3. Derivation of the connection formulas¶
Once we will have found the solution for region , we will extend the approximation to the overlapping region and .
 Using the linear approximation for the potential in the WKB wave function, we find:
 For region , we have that . Therefore, we expect that the solution behaves as exponentially decaying or blowing up. Computing the integral in the exponent of the WKB wave function we find: By inserting this into the WKB wave function, we arrive at:
 Now, let us compare this result with the result from the asymptotic forms of the Airy functions in region , By matching the coefficients, i.e. , we find that,

For , in region , we can apply a similar derivation. However, the behaviour of the solutions will be oscillatory and not decaying: It turns out that these formulas become simpler when we perform a change of basis. The wave function above is written in terms of planewavelike solutions. We can redefine the coefficients to write in terms of and instead: Here we included a phase shift for convenience.

Let us now compare this solution with the asymptotic solution from region II, By matching the coefficients again, , we find
 As a final step, we now eliminate and from the system of equations \eqref{eq:conn1} and \eqref{eq:conn2}, giving We thus found a relation between the coefficients in region and those in region !
We can now relate wave functions at both sides of the potential, and write down the solution of the system. In fact, these connection formulas dictate that if we know the form of the WKB wave function in e.g. region (i.e. the coefficients and ), the WKB wave function in region is uniquely determined. This is very similar to the wave function matching method which you know from quantum mechanics, namely, matching and at a potential step.
4.3.4. Summary of the connection formulas¶
We now give the full form of the connection formulas, for a general turning point and potentials of either positive and negative slope.
Positive slope¶
import common common.configure_plotting() import matplotlib.pyplot as plt import numpy as npx = np.linspace(1, 1, 100) y1 = x E = 0 fig, ax = plt.subplots(figsize=(4, 4)) ax.plot(x, y1, color='black', label=r'V(x)') ax.hlines(y=E, xmin=1, xmax=1, color='red', label='E') ax.vlines(x=0, ymin=2, ymax=0, linestyle='dashed', color='black') ax.scatter(0, 0, color='black', zorder=100) ax.set_ylim(1, 1); ax.legend(fontsize=15) ax.set_xlabel(r'', fontsize=15) ax.set_xticks([]); ax.set_yticks([]); fig.show()
Negative slope¶
import common common.configure_plotting() import matplotlib.pyplot as plt import numpy as np x = np.linspace(1, 1, 100) y1 = x E = 0 fig, ax = plt.subplots(figsize=(4, 4)) ax.plot(x, y1, color='black', label=r'V(x)') ax.hlines(y=E, xmin=1, xmax=1, color='red', label='E') ax.vlines(x=0, ymin=2, ymax=0, linestyle='dashed', color='black') ax.scatter(0, 0, color='black', zorder=100) ax.set_ylim(1, 1); ax.legend(fontsize=15) ax.set_xlabel(r'$x_t$', fontsize=15) ax.set_xticks([]); ax.set_yticks([]); fig.show()
Warning
In these tables, we also indicated which wave functions are decaying and which are blowing up as you move away from the turning point.
When using these formulas, be careful to use exactly the forms given here, and pay attention to the different integral boundaries!
Integration tricks
To deal with WKB problems, one often requires to change the limits of integrations. The simplest case is to flip the integrations limits as, Another useful trick when is
4.3.5. Validity of the connection formulas¶
We did a rather involved derivation above taking several approximations, but when are the connection formulas actually valid?
From our derivation, it is clear that there should be a region where the Airy solution has at least some overlap with the WKB wave functions and  otherwise it does not "connect" those solutions well. In the interactive plot below, we show the WKB wave functions as well as the Airy function around the turning point for different values of the energy:
import common from IPython.display import HTML, display common.configure_plotting() import numpy as np from wkb import plot_patching_region_pltdef V(x): return 0.01 * (x+10)**2 2
anim = plot_patching_region_plt(V, Erange=np.round(np.linspace(1.98, 2.4, 101), 2), start=11, stop=11, m=1, wf_scaling_factor=0.5, y_range=(5,5))
display(HTML(anim.to_jshtml(default_mode='reflect')))