Treating propagators like unit vectors

I recently taught myself a trick that I want to hold onto. Most people know propagators can be treated like matrices, since these objects also satisfy some sort of non-communative multiplication rule. I need a way to treat a propagator like a vector object (don't ask why, but I have a very good reason). Let \{A_i\} be a complete basis for the unitary matrices. What I mean is that for any unitary U in the N -dimensional Hilbert space,

U(t) = \sum_i x_i(t) A_i.

Further, I am going to introduce the inner product \langle \alpha, \beta \rangle = \mathrm{tr} (\alpha^\dagger \beta) and require that \langle A_i, A_j \rangle = N \delta_{ij} . Then the components x_i(t) form a vector. It's easy to show that for any unitary,

\langle U(t), U(t) \rangle = \mathrm{tr}(I) = N = N \sum_i x_i^*(t) x_i(t).

Therefore the vector \vec{x}(t) = (x_1(t), x_2(t), \dots ) represents a unitary if and only if it a unit vector.

How should matrix multiplication be represented in terms of vectors? Since \{A_i\} is a complete basis for the unitary matrices, any product between unitary operators may be written in terms of the basis elements. To aid multiplications, introduce a rank-3 tensor defined by A_i A_j = \sum_k g_{ijk} A_k . The individual elements of the tensor can be computed using \langle A_k, A_i A_j \rangle = N g_{ijk} . Then for any two unitaries U = \sum_i x_i(t) A_i and V = \sum_j y_j(t) A_j their product is

UV = \sum_{ijk} x_i(t) y_j(t) g_{ijk} A_k.

Further if \vec{z} is a vector associated with the unitary W = UV , their vectors are related by z_k(t) = \sum_{ij} x_i(t) y_j(t) g_{ijk} .

What about dynamics? A propagator is a solution to a Schrödinger equation. Similarly, we can produce a simple Schrödinger equation for the vector,

i \hbar \dot{x}_i(t) = \sum_j \tilde{H}_{ij} x_j(t),

where \tilde{H}_{ij} = \langle A_i, H(t) A_j \rangle / N is a pseudo-Hamiltonian.

GNU Make + Inkscape

Producing figures for scientific papers can be a time consuming task. When I make a figure, I usually follow the following steps:

  1. Draw figure in a graphing program (matplotlib, Igor Pro, Mathematica, etc.) and export to a vector-compatible format
  2. Touch up figure in Inkscape
  3. Convert from SVG to PDF
  4. Compile a \LaTeX document using the PDF figure

Frequently however, I have to return to Inkscape to make minor modifications to figure colours, fonts, line weights, and other attributes.  I now use Make + Inkscape to automate steps (3) and (4).  Make is smart enough to detect whether I modified an SVG file, and automatically converts the modified SVG images to PDFs before the document is compiled.  Here is how it works:

I organize the project like this ...

project/
    Makefile
    master.tex
    figures/
        Makefile
        pdf/
            figure1.pdf
            figure2.pdf
            ...
        svg/
            figure1.svg
            figure2.svg
            ...

The main Makefile has a build target for the \LaTeX document that depends on a PHONY target for the figures. Here is how I do it:

LATEXFILE = master
FIGURES = figures
TEX = pdflatex -interaction=batchmode
BIBTEX = bibtex

#
# Make targets
#
all: $(LATEXFILE).pdf

# Builds figures, latex, bibtex, and reruns latex until linked
$(LATEXFILE).pdf: $(LATEXFILE).bbl
	while ($(TEX) $(LATEXFILE); \
		grep -q "Rerun to get cross" $(LATEXFILE).log) do true; \
	done; \
	echo "********************************************"; \
	echo "* REPORT: summary of compilation warnings  *"; \
	echo "********************************************"; \
	cat $(LATEXFILE).log | grep "LaTeX Warning:";

# Reconstructs PDF figures using SVG sources
.PHONY: figures
figures:
	cd $(FIGURES) && $(MAKE)

# Builds main document
$(LATEXFILE).aux: figures
	$(TEX) $(LATEXFILE)
	$(TEX) $(LATEXFILE)

# Links bibliography
$(LATEXFILE).bbl: $(LATEXFILE).aux
	$(BIBTEX) $(LATEXFILE)

Before running the first \LaTeX pass, Make switches to the figures directory and runs the following Makefile.

#
# MAKEFILE
#
INKSCAPE = inkscape
SOURCE = svg
TARGET = pdf

#
# Construct lists
#
SOURCES = $(wildcard $(SOURCE)/*.svg)
TARGETS = $(patsubst $(SOURCE)/%.svg, $(TARGET)/%.pdf, $(SOURCES))

all: $(TARGETS)

$(TARGET)/%.pdf: $(SOURCE)/%.svg
	$(INKSCAPE) -z --file=$< --export-pdf=$@

.PHONY: clean
clean:
	rm -f $(TARGETS)

An atom says...

Here is a little animation of a hydrogen-like atom being driven along the ^2\mathrm{S}_{1/2} \rightarrow {}^2\mathrm{P}_{1/2} transition.  The image you see is a density plot of the probability.  Used Mathematica.

h

Operations for quantum operators

A unary operation is an operation with only one operand.  Specifically it is a function of the form f: \mathcal{A} \mapsto \mathcal{A} where \mathcal{A} is a set.  Here we consider unary maps where \mathcal{A} corresponds to the set of quantum operators in a Hilbert space.  Let A \in \mathcal{A} be a quantum operator.  We may represent A in any particular basis by a matrix of the form A = \sum_{ij} A_{ij} |i \rangle \langle j | .  Then

Operation f(A)
Negation -A \sum_{ij} (- A_{ij}) |i \rangle \langle j|
Complex conjugate A^* \sum_{ij} A_{ij}^* |i \rangle \langle j |
Transpose A^T \sum_{ij} A_{ij} |j \rangle \langle i |
Conjugate transpose A^\dagger \sum_{ij} A_{ij}^* |j \rangle \langle i |