function K = diffusion_matrix_sparse(integerN)
  %
  % A sparse representation of the matrix K in the advection-diffusion
  % equation. See advection_matrix.m for details.
  %

  if (integerN < 2)
    K = NA;
    return
  end

  % The negative ones directly above the diagonal.
  top = [ [zeros(integerN-1, 1), -speye(integerN-1)]; ...
          zeros(1, integerN)];

  % The negative ones directly below the diagonal.
  bottom = [ [zeros(1, integerN-1); ...
	     -speye(integerN-1)    ], zeros(integerN, 1)];

  % Combine the top and bottom.
  K = top + bottom + 2*speye(integerN);

  % Fill in the entries in the corner.
  K(1, integerN) = -1;
  K(integerN, 1) = -1;
end
