Francis Su has created an iPhone app MathFeed that gives a stream of new math content: blog posts, book reviews, popular journal articles, and tweets. You can also get the same content via Twitter. Check it out!

# Math

# Truncated exponential series inequality

Define *T*_{n} to be the Taylor series for exp(*x*) truncated after *n* terms:

How does this function compare to its limit, exp(*x*)? We might want to know because it’s often useful to have polynomial upper or lower bounds on exp(*x*).

For *x* > 0 it’s clear that exp(*x*) is larger than *T*_{n}(*x*) since the discarded terms in the power series for exp(*x*) are all positive.

The case of *x* < 0 is more interesting. There exp(*x*) > *T*_{n}(*x*) if *n* is odd and exp(*x*) < *T*_{n}(*x*) if *n* is even.

Define *f*_{n}(*x*) = exp(*x*) – *T*_{n}(*x*). If *x* > 0 then *f*_{n}(*x*) > 0.

We want to show that if *x* < 0 then *f*_{n}(*x*) > 0 for odd *n* and *f*_{n}(*x*) < 0 for even *n*.

For *n* = 1, note that *f*_{1} and its derivative are both zero at 0. Now suppose *f*_{1} is zero at some point *a* < 0. Then by Rolle’s theorem, there is some point *b* with *a <* *b* < 0 where the derivative of *f*_{1} is 0. Since the derivative of *f*_{1} is also zero at 0, there must be some point *c* with *b* < *c* < 0 where the second derivative of *f*_{1} is 0, again by Rolle’s theorem. But the second derivative of *f*_{1} is exp(*x*) which is never 0. So our assumption *f*_{1}(*a*) = 0 leads to a contradiction.

Now *f*_{1}(0) = 0 and *f*_{1}(*x*) ≠ 0 for *x* < 0. So *f*_{1}(*x*) must be always positive or always negative. Which is it? For negative *x*, exp(*x*) is bounded and so

*f*_{1}(*x*) = exp(*x*) – 1 – *x*

is eventually dominated by the –*x* term, which is positive since *x* is negative.

The proof for *n* = 2 is similar. If *f*_{2}(*x*) is zero at some point *a* < 0, then we can use Rolle’s theorem to find a point *b* < 0 where the derivative of *f*_{2} is zero, and a point *c* < 0 where the second derivative is zero, and a point *d* < 0 where the third derivative is zero. But the third derivative of *f*_{2} is exp(*x*) which is never zero.

As before the contradiction shows *f*_{2}(*x*) ≠ 0 for *x* < 0. So is *f*_{2}(*x*) always positive or always negative? This time we have

*f*_{2}(*x*) = exp(*x*) – 1 – *x* – *x*^{2}/2

which is eventually dominated by the –*x*^{2} term, which is negative.

For general *n*, we assume *f*_{n} is zero for some point *x* < 0 and apply Rolle’s theorem *n*+1 times to reach the contradiction that exp(*x*) is zero somewhere. This tells us that *f*_{n}(*x*) is never zero for negative *x*. We then look at the dominant term –*x*^{n} to argue that *f*_{n} is positive or negative depending on whether *n* is odd or even.

Another way to show the sign of *f*_{n}(*x*) for negative *x* would be to apply the alternating series theorem to *x* = -1.

# A short, unusual proof that there are infinitely many primes

Sam Northshield [1] came up with the following clever proof that there are infinitely many primes.

Suppose there are only finitely many primes and let *P* be their product. Then

The original publication gives the calculation above with no explanation. Here’s a little commentary to explain the calculation.

Since prime numbers are greater than 1, sin(π/*p*) is positive for every prime. And a finite product of positive terms is positive. (An infinite product of positive terms could converge to zero.)

Since *p* is a factor of *P*, the arguments of sine in the second product differ from those in the first product by an integer multiple of 2π, so the corresponding terms in the two products are the same.

There must be some *p* that divides 1 + 2*P*, and that value of *p* contributes the sine of an integer multiple of π to the product, i.e. a zero. Since one of the terms in the product is zero, the product is zero. And since zero is not greater than zero, we have a contradiction.

* * *

[1] A One-Line Proof of the Inﬁnitude of Primes, *The American Mathematical Monthly*, Vol. 122, No. 5 (May 2015), p. 466

# A curious property of catenaries

Suppose you have a flat line *f*(*x*) = *k* and an interval [*a*, *b*]. Then the area under the line and over the interval is *k* times the length of the segment of the line.

Surprisingly, the same is true for a catenary with scale *k*.

With the flat line, the length of the segment of the graph is the same as the length of the segment [*a*, *b*] on the *x*-axis, but in general the curve will be longer. The catenary is convex, and it bends so that area under the curve decreases exactly enough balance out the increase in arc length.

The area under a curve *f*(*x*) and over the interval [*a*, *b*] is simply the integral of *f* from *a* to *b*:

The length of the curve from *a* to *b* is also given by an integral:

You can prove the claim above by showing that the first integral is *k* times the second integral when *f*(*x*) = *k* cosh((*x*–*c*)/*k*),* *the catenary centered at *c* with scale *k*.

By the way, this result was discovered independently by Johann Bernoulli and Gottfried Liebnitz three centuries ago.

# When does a function equal its Taylor series?

Taylor’s theorem says

When does the thing on the left equal the thing on the right?

A few things could go wrong:

- Maybe not all the terms on the right side exist, i.e. the function
*f*might not be infinitely differentiable. - Maybe
*f*is infinitely differentiable but the series diverges. - Maybe
*f*is infinitely differentiable but the series converges to something other than*f*.

The canonical example of the last problem is the function *g*(*x*) defined to be exp(-1/*x*^{2}) for positive *x* and 0 otherwise. This function is so flat when it approaches the origin that all derivatives are zero there. So all the coefficients in Taylor’s formula are zero. But the function *g* is positive for positive *x*.

Everything above can be found in a standard calculus text, but the following results are hardly known.

Being infinitely differentiable is necessary but not sufficient for a function to be real analytic. What additional requirements would be sufficient?

We start by examining what went wrong with the function *g*(*x*) above. It has a Taylor series at every point, but the radii of convergence go to zero as we get close to the origin. At the origin it is not analytic because the radius of convergence collapses to 0.

Alfred Pringsheim claimed that it is enough to require that the radii of convergence be bounded below on an interval. If we let ρ(*x*) be the radius of convergence for a series centered at *x*, then a function *f* is analytic in an open interval *J* if ρ(*x*) has some lower bound δ > 0 in *J*. Pringsheim’s theorem was correct, but his proof was flawed. The proof was accepted for 40 years until Ralph Boas discovered the flaw.

Here is a generalization of Pringsheim’s theorem. (It’s not clear to me from my source [1] who first proved this theorem. Perhaps Boas, but in the same context Boas mentions the work of others on the problem.)

Let *f* be infinitely differentiable in an open interval *J*. Suppose the radius of convergence ρ(*x*) for a Taylor series centered at *x* is positive for each *x* in the interval *J*. Suppose also that for every point *p* in *J* we have

Then *f* is analytic on the interval *J*.

Note that if ρ(*x*) is bounded below by δ > 0 then the limit above is infinite and so Pringsheim’s theorem follows as a special case.

The function *g*(*x*) above does not satisfy the hypothesis of the theorem on any open interval around 0 because if we set *p* = 0, the limit above is 1, not greater than 1.

* * *

[1] R. P. Boas. When Is a *C*^{∞} Function Analytic? Mathematical Intelligencer, Vol 11, No. 4, pp. 34–37.

# Floating point: between blissful ignorance and unnecesssary fear

Most programmers are at one extreme or another when it comes to floating point arithmetic. Some are blissfully ignorant that anything can go wrong, while others believe that danger lurks around every corner when using floating point.

The limitations of floating point arithmetic are something to be aware of, and ignoring these limitations can cause problems, like crashing airplanes. On the other hand, floating point arithmetic is usually far more reliable than the application it is being used in.

It’s well known that if you multiply two floating point numbers, *a* and *b*, then divide by *b*, you might not get exactly *a* back. Your result might differ from *a* by one part in ten quadrillion (10^16). To put this in perspective, suppose you have a rectangle approximately one kilometer on each side. Someone tells you the exact area and the exact length of one side. If you solve for the length of the missing side using standard (IEEE 754) floating point arithmetic, your result could be off by as much as the width of a helium atom.

Most of the problems attributed to “round off error” are actually approximation error. As Nick Trefethen put it,

If rounding errors vanished, 90% of numerical analysis would remain.

Still, despite the extreme precision of floating point, in some contexts rounding error is a practical problem. You have to learn in what context floating point precision matters and how to deal with its limitations. **This is no different than anything else in computing**.

For example, most of the time you can imagine that your computer has an unlimited amount of memory, though sometimes you can’t. It’s common for a computer to have enough memory to hold the entire text of Wikipedia (currently around 12 gigabytes). This is usually far more memory than you need, and yet for some problems it’s not enough.

**More on floating point computing**:

# What is calculus?

When people ask me what calculus is, my usual answer is “the mathematics of change,” studying things that change continually. Algebra is essentially static, studying things frozen in time and space. Calculus studies things that move, shapes that bend, etc. Algebra deals with things that are exact and consequently can be fragile. Calculus deals with approximation and is consequently more robust.

I’m happier with the paragraph above if you replace “calculus” with “analysis.” Analysis certainly seeks to understand and model things that change continually, but calculus per se is the mechanism of analysis.

I used to think it oddly formal for people to say “differential and integral calculus.” Is there any other kind? Well yes, yes there is, though I didn’t know that at the time. A calculus is a system of rules for computing things. Differential and integral calculus is a system of rules for calculating derivatives and integrals. Lately I’ve thought about other calculi more than differential calculus: propositional calculus, lambda calculus, calculus of inductive constructions, etc.

In my first career I taught (differential and integral) calculus and was frustrated with students who would learn how to calculate derivatives but never understood what a derivative was or what it was good for. In some sense though, they got to the core of what a calculus is. It would be better if they knew what they were calculating and how to apply it, but they still learn something valuable by knowing how to carry out the manipulations. A computer science major, for example, who gets through (differential) calculus knowing how to calculate derivatives without knowing what they are is in a good position to understand lambda calculus later.

# Duality in spherical trigonometry

This evening I ran across an unexpected reference to spherical trigonometry: Thomas Hales’ lecture on lessons learned from the formal proof of the Kepler conjecture. He mentions at one point a lemma that was awkward to prove in its original form, but that became trivial when he looked at its spherical dual.

The sides of a spherical triangle are formed by great circular arcs through the vertices. Since the sides are portions of a circle, they can be measured as angles. So in spherical trig you have this interesting interplay of two kinds of angles: the angles formed at the intersections of the sides, and the angles describing the sides themselves.

Here’s how you form the dual of a spherical triangle. Suppose the vertices of the angle are *A*, *B*, and *C*. Think of the arc connecting *A* and *B* as an equator, and let *C*‘ be the corresponding pole that lies on the same side of the arc as the original triangle *ABC*. Do the analogous process to find the points *A*‘ and *B*‘. The triangle *A*‘*B*‘*C*‘ is the dual of the triangle *ABC*. (This idea goes back to the Persian mathematician Abu Nasr Mansur circa 1000 AD.)

The sides in *A*‘*B*‘*C*‘ are the supplementary angles of the corresponding intersection angles in *ABC*, and the intersection angles in *A*‘*B*‘*C*‘ are the supplementary angles of the corresponding sides in *ABC*.

In his paper “Duality in the formulas of spherical trigonometry,” published in American Mathematical Monthly in 1909, W. A. Granville gives the following duality principle:

If the sides of a spherical triangle be denoted by Roman letters

a,b,cand the supplements of the corresponding opposite angles by the Greek letters α, β, γ, then from any given formula involving any of these six parts, we may wrote down a dual formula simply by interchanging the corresponding Greek and Roman letters.

**Related**: Notes on Spherical Trigonometry

# Tensors 5: Scalars

There are two uses of the word *scalar*, one from linear algebra and another from tensor calculus.

In linear algebra, vector spaces have a field of scalars. This is where the coefficients in linear combinations come from. For real vector spaces, the scalars are real numbers. For complex vector spaces, the scalars are complex numbers. For vector spaces over any field *K*, the elements of *K* are called scalars.

But there is a more restrictive use of *scalar* in tensor calculus. There a scalar is **not just a number, but a number whose value does not depend on one’s choice of coordinates**. For example, the temperature at some location is a scalar, but the first coordinate of a location depends on your choice of coordinate system. Temperature is a scalar, but *x*-coordinate is not. Scalars are numbers, but not all numbers are scalars.

The linear algebraic use of *scalar* is more common among mathematicians, the coordinate-invariant use among physicists. The two uses of *scalar *is a special case of the two uses of *tensor* described in the previous post. Linear algebra thinks of tensors simply as things that take in vectors and return numbers. The physics/tensor analysis view of tensors includes behavior under changes of coordinates. You can think of a scalar as a oth order tensor, one that behaves as simply as possible under a change of coordinates, i.e. doesn’t change at all.

# Tensors 4: Behavior under change of coordinates

In the first post in this series I mentioned several apparently unrelated things that are all called tensors, one of these being objects that behave a certain way under changes of coordinates. That’s what we’ll look at this time.

In the second post we said that a tensor is a multilinear functional. A *k*-tensor takes *k* vectors and returns a number, and it is linear in each argument if you hold the rest constant. We mentioned that this relates to the “box of numbers” idea of a tensor. You can describe how a *k*-tensor acts by writing out *k* nested sums. The terms in these sums are called the **components** of the tensor.

Tensors are usually defined in a way that has more structure. They vary from point to point in a space, and they do so in a way that in some sense is independent of the coordinates used to label these points. At each point you have a tensor in the sense of a multilinear functional, but the emphasis is usually on the changes of coordinates.

## Components, indexes, and coordinates

Tensors in the sense that we’re talking about here come in two flavors: covariant and contravariant. They also come in mixtures; more on that later.

We consider two coordinate systems, one denoted by *x*‘s and another by *x*‘s with bars on top. The components of a tensor in the *x*-bar coordinate system will also have bars on top. For a covariant tensor of order one, the components satisfy

First of all, coordinates are written with superscripts. So *x*^{r} is the *r* coordinate, not *x* to the power *r*. Also, this uses Einstein summation notation: there is an implicit sum over repeated indexes, in this case of *r*.

The components of a contravariant tensor of order one satisfy similar but different equation:

The components of a covariant tensor are written with subscripts, and the components of a contravariant tensor with superscripts. In the equation for covariant components, the partial derivatives are with respect to the new coordinates, the *x* bars. In the equation for contravariant components, the partial derivatives are with respect to the original coordinates, the *x*‘s. Mnemonic: when the indexes go down (covariant tensors) the new coordinates go down (in the partial derivatives). When the indexes go up, the new coordinates go up.

For covariant tensors of order two, the change of coordinate formula is

Here there the summation convention says that there are two implicit sums, one over *r* and one over *s*.

The contravariant counter part says

In general you could have tensors that are a mixture of covariant and contravariant. A tensor with covariant order *p* and contravariant order *q* has *p* subscripts and *q* superscripts. The partial derivatives have *x*-bars on bottom corresponding to the covariant components and *x*-bars on top corresponding to contravariant components.

## Relation to multilinear functionals

We initially said a tensor was a multilinear functional. A tensor of order *k* takes *k* vectors and returns a number. Now we’d like to refine that definition to take two kinds of vectors. A tensor with covariant order *p* and contravariant order *q* takes *p* contravariant vectors and *q* covariant vectors. In linear algebra terms, in stead of simply taking *k* elements of a vector space *V*, we say our tensor takes *p* vectors from the dual space *V** and *q* vectors from *V*.

## Relation to category theory

You may be familiar with the terms *covariant* and *contravariant* from category theory, or its application to object oriented programming. The terms are related. As Michael Spivak explains, “It’s very easy to remember which kind of vector field is covariant, and which is contravariant — it’s just the opposite of what it logically ought to be [from category theory].”

# Tensors 3: Tensor products

In the previous post, we defined the tensor product of two tensors, but you’ll often see tensor products of **spaces**. How are these tensor products defined?

## Tensor product splines

For example, you may have seen tensor product splines. Suppose you have a function over a rectangle that you’d like to approximate by patching together polynomials so that the interpolation has the specified values at grid points, and the patches fit together smoothly. In one dimension, you do this by constructing splines. Then you can bootstrap your way from one dimension to two dimensions by using tensor product splines. A tensor product spline in *x* and *y* is a sum of terms consisting of a spline in *x* and a spline in *y*. Notice that a tensor product spline is not simply a product of two ordinary splines, but a *sum* of such products.

If *X* is the vector space of all splines in the *x*-direction and *Y* the space of all splines in the *y*-direction, the space of tensor product splines is the tensor product of the spaces *X* and *Y*. Suppose a set *s*_{i}, for *i* running from 1 to *n,* is a basis for *X*. Similarly, suppose *t*_{j}, for *j* running from 1 to *m*, is a basis for *Y*. Then the products *s*_{i} *t*_{j} form a basis for the tensor product *X* and *Y*, the tensor product splines over the rectangle. Notice that if *X* has dimension *n* and *Y* has dimension *m* then their tensor product has dimension *n**m*. Notice that if we only allowed products of splines, not sums of products of splines, we’d get a much smaller space, one of dimension *n*+*m*.

## Tensor products of vector spaces

We can use the same process to define the tensor product of any two vector spaces. A basis for the tensor product is all products of basis elements in one space and basis elements in the other. There’s a more general definition of tensor products that doesn’t involve bases sketched below.

## Tensor products of modules

You can also define tensor products of *modules*, a generalization of vector spaces. You could think of a module as a vector space where the scalars come from a ring ideas of a field. Since rings are more general than fields, modules are more general than vector spaces.

The tensor product of two modules over a commutative ring is defined by taking the Cartesian product and moding out by the necessary relations to make things bilinear. (This description is very hand-wavy. A detailed presentation needs its own blog post or two.)

Tensor products of modules hold some surprises. For example, let *m* and *n* be two relatively prime integers. You can think of the integers mod *m* or *n* as a module over the integers. The tensor product of these modules is zero because you end up moding out by everything. This kind of collapse doesn’t happen over vector spaces.

## Past and future

The first two posts in this series:

I plan to leave the algebraic perspective aside for a while, though as I mentioned above there’s more to come back to.

Next I plan to write about the analytic/geometric view of tensors. Here we get into things like changes of coordinates and it looks at first as if a tensor is something completely different.

# Tensors 2: Multilinear operators

The simplest definition of a tensor is that it is a multilinear functional, i.e. a function that takes several vectors, returns a number, and is linear in each argument. Tensors over real vector spaces return real numbers, tensors over complex vector spaces return complex numbers, and you could work over other fields if you’d like.

A dot product is an example of a tensor. It takes two vectors and returns a number. And it’s linear in each argument. Suppose you have vectors *u*, *v*, and *w*, and a real number *a*. Then the dot product (*u +* *v*, *w*) equals (*u*, *w*) + (*v*, *w*) and (*au*, *w*) = *a*(*u*, *w*). This shows that dot product is linear in its first argument, and you can show similarly that it is linear in the second argument.

Determinants are also tensors. You can think of the determinant of an *n* by *n* matrix as a function of its *n* rows (or columns). This function is linear in each argument, so it is a tensor.

The introduction to this series mentioned the interpretation of tensors as a box of numbers: a matrix, a cube, etc. This is consistent with our definition because you can write a multilinear functional as a sum. For every vector that a tensor takes in, there is an index to sum over. A tensor taking *n* vectors as arguments can be written as *n* nested summations. You could think of the coefficients of this sum being spread out in space, each index corresponding to a dimension.

Tensor products are simple in this context as well. If you have a tensor *S* that takes *m* vectors at a time, and another tensor *T* that takes *n* vectors at a time, you can create a tensor that takes *m* + *n* vectors by sending the first *m* of them to *S*, the rest to *T*, and multiply the results. That’s the tensor product of *S* and *T*.

The discussion above makes tensors and tensor products still leaves a lot of questions unanswered. We haven’t considered the most general definition of tensor or tensor product. And we haven’t said anything about how tensors arise in application, what they have to do with geometry or changes of coordinate. I plan to address these issues in future posts. I also plan to write about other things in between posts on tensors.

**Next post in series**: Tensor products

# Tensors 1: What is a tensor?

The word “tensor” is shrouded in mystery. The same term is applied to many different things that don’t appear to have much in common with each other.

You might have heared that a tensor is a box of numbers. Just as a matrix is a rectangular collection of numbers, a tensor could be a cube of numbers or even some higher-dimensional set of numbers.

You might also have heard that a tensor is something that has upper and lower indices, such as the Riemann tensor above, things that have arcane manipulation rules such as “Einstein summation.”

Or you might have heard that a tensor is something that changes coordinates like a tensor. A tensor is as a tensor does. Something that behaves the right way under certain changes of variables is a tensor.

And then there’s things that aren’t called tensors, but they have tensor *products*. These seem simple enough in some cases—you think “I didn’t realize that has a name. So it’s called a tensor product. Good to know.” But then in other cases tensor products seem more elusive. If you look in an advanced algebra book hoping for a simple definition of a tensor product, you might be disappointed and feel like the book is being evasive or even poetic because it describes what a tensor product *does* rather than what it *is*. That is, the definition is behavioral rather than constructive.

What do all these different uses of the word “tensor” have to do with each other? Do they have anything to do with the TensorFlow machine learning library that Google released recently? That’s something I’d like to explore over a series of blog posts.

**Next posts in the series**:

# Yet another way to define fractional derivatives

**Fractional integrals** are easier to define than fractional derivatives. And for sufficiently smooth functions, you can use the former to define the latter.

The Riemann-Liouville fractional integral starts from the observation that for positive integer *n*,

This motivates a definition of fractional integrals

which is valid for any complex α with positive real part. Derivatives and integrals are inverses for integer degree, and we use this to define **fractional derivatives**: the derivative of degree *n* is the integral of degree –*n*. So if we could define fractional *integrals* for any degree, we could define a *derivative* of degree α to be an integral of degree -α.

Unfortunately we can’t do this directly since our definition only converges in the right half-plane. But for (ordinary) differentiable *f*, we can integrate the Riemann-Liouville definition of fractional integral by parts:

We can use the right side of this equation to define the left side when the real part of α is bigger than -1. And if *f* has two ordinary derivatives, we can repeat this process to define fractional integrals for α with real part bigger than -2. We can repeat this process to define the fractional integrals (and hence fractional derivatives) for any degree we like, provided the function has enough ordinary derivatives.

See previous posts for two other ways of defining fractional derivatives, via Fourier transforms and via the binomial theorem.

# Family tree numbering

When you draw a tree of your ancestors, things quickly get out of hand. There are twice as many nodes each time you go back a generation, and so the size of paper you need grows exponentially. Things also get messy because typically you know much more about some lines than others. If you know much about your ancestry, one big tree isn’t going to work.

There’s a simple solution to this problem, one commonly used in genealogy: assign everyone in the tree a number, starting with yourself as 1. Then follow two simple rules:

- The father of person
*n*has number 2*n*. - The mother of person
*n*has number 2*n*+ 1.

You can tell where someone fits into the tree easily from their number. Men have even numbers, women odd numbers. The number of someone’s child is half their number (rounding down if you get a fraction). For example, person 75 on your tree must be a woman. Her husband would be 74, her child 37, her father 150, etc.

Taking the logarithm base 2 tells you how many generations back someone is. That is, person *n* is ⌊ log_{2}*n* ⌋ generations back. Going back to our example of 75, this person would be 6 generations back because log_{2} 75 = 6.2288. (Here ⌊ *x* ⌋ is the “floor” of *x*, the largest integer less than *x*. Using the same notation, the child of *n* is ⌊ *n*/2 ⌋.)

Said another way, the people *m* generations back have numbers 2^{m} through 2^{m+1} – 1. Your paternal line has numbers equal to powers of 2, and your maternal line has numbers one less than powers of 2.

If you write out a person’s number in binary, you stick a 0 on the end to find their father and a 1 on the end to find their mother. So your paternal grandmother, for example, would have number 101 in binary. Start with your number: 1. Then tack on a zero for your father: 10. Then tack on a 1 for his mother: 101.

In our example of 75 above, this number is 1001011 in binary. Leave off the one on the left, then read from left to right saying “father” every time you see a 0 and “mother” every time you see a 1. So person 75 is your father’s father’s mother’s father’s mother’s mother.

This numbering system goes back to at least 1590. In that year Michaël Eytzinger published the chart in the image above, giving the genealogy of Henry III of France.

**Related posts**: