8  Hybridization and orbital geometry

Hybrid orbitals provide a useful example of how vectors, matrices, geometry, and chemistry fit together. In this chapter we use the familiar atomic-orbital labels \(s\), \(p_x\), \(p_y\), and \(p_z\) as an orthonormal basis for a four-dimensional vector space. A hybrid orbital is then simply a linear combination of these basis functions,

\[ h=a s+b_xp_x+b_yp_y+b_zp_z. \]

It is convenient to represent this orbital by its coefficient vector

\[ \mathbf{h}= \begin{bmatrix} a\\ b_x\\ b_y\\ b_z \end{bmatrix}. \]

The coefficients multiplying \(p_x\), \(p_y\), and \(p_z\) also have a geometrical interpretation. If

\[ \mathbf{n}= \begin{bmatrix} n_x\\ n_y\\ n_z \end{bmatrix}, \qquad \|\mathbf{n}\|=1, \]

is a direction in ordinary three-dimensional space, then the linear combination

\[ p_{\mathbf n}=n_xp_x+n_yp_y+n_zp_z \]

is a \(p\) orbital oriented along \(\mathbf n\). A hybrid orbital pointing in this direction may therefore be written

\[ h=a s+b\,p_{\mathbf n} =a s+b(n_xp_x+n_yp_y+n_zp_z). \]

In this exercise we use normalization, orthogonality, dot products, and matrix transformations to construct \(sp\), \(sp^2\), and \(sp^3\) hybrid orbitals. The emphasis is on the linear-algebraic structure of hybridization. The orbitals used for visualization are simple analytic model functions intended to show their shapes and orientations, rather than quantitatively accurate atomic orbitals.

Exercises

Exercise 8.1 (Hybrid orbitals from vectors and matrices) Assume that the four orbitals

\[ s,\qquad p_x,\qquad p_y,\qquad p_z \]

form an orthonormal basis.

A hybrid orbital directed along a unit vector

\[ \mathbf n= \begin{bmatrix} n_x\\ n_y\\ n_z \end{bmatrix} \]

will be written as

\[ h=a s+b(n_xp_x+n_yp_y+n_zp_z). \]

  1. Consider two \(sp\) hybrids directed along the positive and negative \(x\) axes,

    \[ \mathbf n_1= \begin{bmatrix} 1\\0\\0 \end{bmatrix}, \qquad \mathbf n_2= \begin{bmatrix} -1\\0\\0 \end{bmatrix}. \]

    Assume that the two hybrids have the form

    \[ h_i=a s+b\,p_{\mathbf n_i}. \]

    Require both hybrids to be normalized and mutually orthogonal. Determine \(a\) and \(b\), and write the two normalized \(sp\) hybrids explicitly in terms of \(s\) and \(p_x\).

  2. Now consider three directions in the \(xy\) plane separated by \(120^\circ\),

    \[ \mathbf n_1= \begin{bmatrix} 1\\0\\0 \end{bmatrix}, \qquad \mathbf n_2= \begin{bmatrix} -\frac12\\\frac{\sqrt3}{2}\\0 \end{bmatrix}, \qquad \mathbf n_3= \begin{bmatrix} -\frac12\\-\frac{\sqrt3}{2}\\0 \end{bmatrix}. \]

    Verify using dot products that

    \[ \mathbf n_i^T\mathbf n_j=-\frac12,\qquad i\neq j. \]

    Assume three hybrids of the form

    \[ h_i=a s+b\,p_{\mathbf n_i}. \]

    Use normalization and mutual orthogonality to determine \(a\) and \(b\). Write the three \(sp^2\) hybrids explicitly as linear combinations of \(s\), \(p_x\), and \(p_y\).

  3. Consider the four tetrahedral directions

    \[ \mathbf n_1=\frac{1}{\sqrt3} \begin{bmatrix} 1\\1\\1 \end{bmatrix}, \qquad \mathbf n_2=\frac{1}{\sqrt3} \begin{bmatrix} 1\\-1\\-1 \end{bmatrix}, \]

    \[ \mathbf n_3=\frac{1}{\sqrt3} \begin{bmatrix} -1\\1\\-1 \end{bmatrix}, \qquad \mathbf n_4=\frac{1}{\sqrt3} \begin{bmatrix} -1\\-1\\1 \end{bmatrix}. \]

    Verify that every \(\mathbf n_i\) is a unit vector and that

    \[ \mathbf n_i^T\mathbf n_j=-\frac13,\qquad i\neq j. \]

    Use the dot product to calculate the angle between any two tetrahedral directions.

  4. Assume four \(sp^3\) hybrids of the form

    \[ h_i=a s+b\,p_{\mathbf n_i}. \]

    Require the hybrids to be normalized and mutually orthogonal. Determine \(a\) and \(b\), and show that the four hybrid orbitals can be written

    \[ \begin{bmatrix} h_1\\ h_2\\ h_3\\ h_4 \end{bmatrix} = U \begin{bmatrix} s\\ p_x\\ p_y\\ p_z \end{bmatrix}, \]

    where

    \[ U=\frac12 \begin{bmatrix} 1&1&1&1\\ 1&1&-1&-1\\ 1&-1&1&-1\\ 1&-1&-1&1 \end{bmatrix}. \]

  5. Show by direct matrix multiplication that

    \[ U^TU=I. \]

    What does this tell you about the transformation between the original atomic-orbital basis and the hybrid-orbital basis? Find \(U^{-1}\) and use it to express \(s\), \(p_x\), \(p_y\), and \(p_z\) in terms of the four \(sp^3\) hybrids.

  6. Use Python to visualize the tetrahedral directions as arrows from the origin. Confirm visually that the four vectors point toward the corners of a tetrahedron. A possible starting point is

    import numpy as np
    import plotly.graph_objects as go
    
    directions = np.array([
        [ 1,  1,  1],
        [ 1, -1, -1],
        [-1,  1, -1],
        [-1, -1,  1]
    ], dtype=float)
    
    directions /= np.linalg.norm(directions, axis=1)[:, None]
    
    # Build a Plotly figure and add one line and one cone
    # for each direction vector.
    #
    # Hint:
    #   go.Scatter3d(...) can be used for the lines.
    #   go.Cone(...) can be used for arrowheads.
    #
    # Make the x, y, and z axis scales equal.
  7. Finally, visualize the four \(sp^3\) hybrid orbitals as isosurfaces. For the visualization, use the simple model functions

    \[ s(\mathbf r)=e^{-\alpha r}, \qquad p_x(\mathbf r)=x e^{-\alpha r}, \qquad p_y(\mathbf r)=y e^{-\alpha r}, \qquad p_z(\mathbf r)=z e^{-\alpha r}, \]

    where \(r=\sqrt{x^2+y^2+z^2}\) and \(\alpha>0\) controls the radial decay.

    Construct the four hybrids by applying the matrix \(U\) to these four functions point by point on a three-dimensional grid. Plot positive and negative isosurfaces for each hybrid using Plotly or any tool you like. The following skeleton may be used as a starting point:

    import numpy as np
    import plotly.graph_objects as go
    
    alpha = 1.0
    L = 4.0
    n = 50
    
    x = np.linspace(-L, L, n)
    y = np.linspace(-L, L, n)
    z = np.linspace(-L, L, n)
    X, Y, Z = np.meshgrid(x, y, z, indexing="ij")
    
    R = np.sqrt(X**2 + Y**2 + Z**2)
    
    s  = np.exp(-alpha * R)
    px = X * np.exp(-alpha * R)
    py = Y * np.exp(-alpha * R)
    pz = Z * np.exp(-alpha * R)
    
    U = 0.5 * np.array([
        [1,  1,  1,  1],
        [1,  1, -1, -1],
        [1, -1,  1, -1],
        [1, -1, -1,  1]
    ])
    
    basis = np.stack([s, px, py, pz])
    
    # Apply U to the first axis of `basis`.
    # One convenient possibility is np.tensordot.
    hybrids = ...
    
    # Select one hybrid, for example:
    h = hybrids[0]
    
    # Choose an isovalue. It is often convenient to define it
    # as a fraction of max(abs(h)).
    isovalue = ...
    
    fig = go.Figure()
    
    # Add one isosurface for +isovalue and one for -isovalue.
    # Plotly's go.Isosurface expects flattened coordinate and
    # value arrays.
    #
    # fig.add_trace(go.Isosurface(
    #     x=X.ravel(),
    #     y=Y.ravel(),
    #     z=Z.ravel(),
    #     value=h.ravel(),
    #     isomin=...,
    #     isomax=...,
    #     surface_count=1,
    #     caps=dict(x_show=False, y_show=False, z_show=False)
    # ))
    #
    # Repeat for the opposite sign.
    #
    # Then repeat for h = hybrids[1], hybrids[2], hybrids[3],
    # either in separate figures or by arranging the results
    # in a layout of your choice.
    
    fig.show()

    Compare the directions of the large lobes in your plots with the four vectors \(\mathbf n_1,\ldots,\mathbf n_4\). Explain how the coefficients of \(p_x\), \(p_y\), and \(p_z\) determine the spatial orientation of each hybrid.