The *p*-norm of a vector is defined to be the *p*th root of the sum of its *p*th powers.

Such norms occur frequently in application [1]. Yoshio Koide discovered in 1981 that if you take the masses of the **electron**, **muon**, and **tau** particles, the ratio of the 1 norm to the 1/2 norm is very nearly 2/3. Explicitly,

to **at least four decimal places**. Since the ratio is tantalizingly close to 2/3, some believe there’s something profound going on here and the value is exactly 2/3, but others believe it’s just a coincidence. Is the value 2/3 within the measure error of the constants? We’ll investigate that with a little Python code.

## Python code

The masses of particles are available in the `physical_constants`

dictionary in `scipy.constants`

. For each constant, the dictionary contains the best estimate of the value, the units, and the uncertainty (standard deviation) in the measurement [2].

from scipy.constants import physical_constants as pc from scipy.stats import norm def pnorm(v, p): return sum([x**p for x in v])**(1/p) def f(v): return pnorm(v, 1) / pnorm(v, 0.5) m_e = pc["electron mass"] m_m = pc["muon mass"] m_t = pc["tau mass"] v0 = [m_e[0], m_m[0], m_t[0]] print(f(v0))

This says that the ratio of the 1 norm and 1/2 norm is 0.666658, slightly less than 2/3. Could the value be exactly 2/3 within the resolution of the measurements? How could we find out?

## Measurement uncertainty

The function *f* above is minimized when its arguments are all equal, and maximized when its arguments are maximally unequal. To see this, stick in (1, 1, 1) and (1, 0, 0). To see if we can make *f* larger, we want to increase the largest value, the mass of tau, and decrease the others. If we move each value one standard deviation in the desired direction, we get

v1 = [m_e[0] - m_e[2], m_m[0] - m_m[2], m_t[0] + m_t[2]] print(f(v1))

which returns 0.6666674, just slightly bigger than 2/3. Since the value can be bigger than 2/3, and less than 2/3, the intermediate value theorem says there are values of the constants within one standard deviation of their mean for which we get exactly 2/3.

Now that we’ve shown that it’s *possible* to get a value above 2/3, how likely is it? We can do a simulation, assuming each measurement is normally distributed.

N = 1000 above = 0 for _ in range(N): r_e = norm(m_e[0], m_e[2]).rvs() r_m = norm(m_m[0], m_m[2]).rvs() r_t = norm(m_t[0], m_t[2]).rvs() t = f([r_e, r_m, r_t]) if t > 2/3: above += 1 print(above)

When we I ran this, I got 168 values above 2/3 and the rest below. So based solely on our calculations here, not taking into account any other information that may be important, it’s plausible that Koide’s ratio is exactly 2/3.

***

[1] Strictly speaking, we should take the absolute values of the vector components. Since we’re talking about masses here, I simplified slightly by assuming the components are non-negative.

Also, what I’m calling the *p* “norm” is only a norm if *p* is at least 1. Values of *p* less than 1 do occur in application, even though the functions they define are not norms. I’m pretty sure I’ve blogged about such an application, but I haven’t found the post.

[2] The SciPy library obtained its values for the constants and their uncertainties from the CODATA recommended values, published in 2014.