Math Abuse

When I shows a mathematician some of the homework problems I have done, he was a little shocked. So I went on and looked for other notations that physicists use differently or even naively.

Multiple Integrals

This is a multiple integral in the regular notation:

\int_0^R \int_0^\pi \int_0^{2\pi} f(r, \theta, \phi) \, \mathrm d\phi \,
\mathrm d\theta \, \mathrm dr

Theoretical physicists often use the following notation:

\int_0^R \mathrm d r \int_0^\pi \mathrm d \theta
\int_0^{2\pi} \mathrm d \phi \, f(r, \theta, \phi)

The integrals is not \int 1 \, \mathrm dx, but the integrate everything after the \mathrm dx! The advantage is that, just like with a summation sign, you can see the bounds right away, and swap integrals easier.

Summation Convention

Let me start with the regular inner product. A mathematician would write it either \langle v, w \rangle or (v, w).

Physicists might use the mathematician’s notation, or write \vec v \cdot \vec
w, since we write vector arrows (or bold vectors, then \boldsymbol v \cdot
\boldsymbol w). I prefer bold vectors by now, so I will continue to use them.

If you assume a particular basis for your vector space, then you can access the components of your vectors with upper index, if they are regular (contravariant) vectors: v^i. If you transpose the vector, it will become a covector (covariant) and has a lower index: v_i. If your “transpose” is a “complex conjugate transpose”, the inequality v^i \neq v_i holds in the general case.

With that in mind, you can write the scalar product like so:

\langle \boldsymbol v, \boldsymbol w \rangle
= \boldsymbol v^{\mathrm T} \boldsymbol w
= \sum_i v_i w^i

And physicists like to omit the summation sign and just write v_i w^i for the scalar product.

The transpose is induced by a metric tensor \eta, so the transpose works like this: x_i = \eta_{ij} x^j.

As a corollary, the physicist distinguishes between Latin and Greek indexes in the summation. A Latin index i means \sum_{i=1}^3, where a Greek index \mu means \sum_{\mu=0}^3. This is important for the theory of special relativity, where the zeroth coordinate is the time. That way, one can construct the Laplace (\triangle) and d’Alambert (\Box) Operators:

\triangle &= \partial_i \partial^i
= \sum_{i=1}^3 \frac{\partial^2}{\partial x_i^2} \\
\Box &= \partial_\mu \partial^\mu
= \sum_{\mu=0}^3 \frac{\partial^2}{\partial x_i^2}
= \frac{\partial^2}{\partial t^2} - \triangle

Where I have used the metric tensor of special relativity:

\eta = \begin{pmatrix}
1 & 0 & 0 & 0 \\
0 & -1 & 0 & 0 \\
0 & 0 & -1 & 0 \\
0 & 0 & 0 & -1 \\
\end{pmatrix}

Separation of Variables

Say a physicist is given the following ordinary differential equation: f'(x) =
f(x). He might do the following:

\frac{\mathrm df}{\mathrm dx} &= f \\
\mathrm d f &= \mathrm d x f \\
\frac{\mathrm d f}{f} &= \mathrm d x \\
\int \frac{\mathrm d f}{f} &= \int \mathrm d x \\
\ln(f) &= x + C \\
f(x) &= C \exp(x)

Symbol overloading

In some programming languages, it is possible to overload a function with different arguments:

int f();
int f(int x);
int f(int x, int y);

Those all have the same name, but the compiler will be able to distinguish that from your arguments. f(1) and f(1, 1) will call two distinct functions.

The same applies for different types. So this is also possible:

int h(int x);
int h(std::string x);

When you call h(1) and h(""), it will pick out the right function to call. Unless the functions do a roughly the same thing, this will lead to confusion pretty easily.

Now physicists are doing it even worse! Say you have a function f \colon
X \subseteq \mathbb R \mapsto Y \subseteq \mathbb R. Then you use x \in X and write stuff like f(x) which is fine. Now you create the Fourier transform that I will denote with a \mathcal F. With \omega \in \Omega \subseteq
\mathbb R you could write:

g(\omega) = [\mathcal F f](\omega) = \frac1{\sqrt{2\pi}} \int \mathrm dx \,
f(x) \exp(- \mathrm i x \omega)

This seems correct and unambiguous to me. Physicists like decorators more than different letters, so they would write \hat f instead of g, which should be fine as well.

But even that seems to much writing. So they write f(\omega) for the Fourier transformed function and f(x) for the original function. That means that even if \omega = x, it does not need to follow that f(\omega) \neq f(x), since they are different functions! The function is overloaded, and the correct one is chosen by the symbol you write the argument with. I think this is a gross violation of scoping.

I have seen a case where somebody wrote f(\omega = 0) to make sure the reader understands that the transformed function is meant. Just write \hat f(0)!