Consider the following function (a CES utility function or weighted power mean):
$$u_\rho(\vec x) = \left(\sum_{i=1}^n a_i x_i^\rho\right)^{1/\rho}$$
for parameters $a_i \geq 0$, $\sum a_i =1$, and $\rho\leq1$.
It can be shown (see the Wikipedia link above or this Economics SE question) that taking the limit as $\rho\to -\infty$ yields
$$u_{-\infty}(\vec x) = \min_i a_i x_i$$
Consider the case where $x = \vec 1$. Clearly
$$u_\rho(\vec 1) = \left(\sum_{i=1}^n a_i \right)^{1/\rho} = 1^{1/\rho} = 1, \quad\forall \rho$$
But the limit above says that $$u_{-\infty}(\vec 1) = \min_i a_i \neq1$$ (unless $n=1$).
What explains the contradiction?
The formulas above can also be found in the following reference at p. 139:
- Nisan, Noam, Tim Roughgarden, Èva Tardos, and Vijay V. Vazirani, eds. 2007. Algorithmic Game Theory. Cambridge University Press.
Here is a graph that may shed some light (or perhaps just add confusion):
Due to numerical errors, the function evaluates to zero for $\rho < -900$ or so, but it seems from the graph that the limit (blue) is approaching a value between $0.45$ and $0.50$, not the lower value of $0.11$ predicted (red).
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(987)
def ces(a, x, rho):
return sum(a * xrho)(1/rho)
def leontief(a, x): # Limit of CES as rho -> -inf
return min(a * x)
a = np.random.rand(3)
a /= sum(a)
x = np.random.rand(3)
rho = list(range(-1000, 2))
rho.remove(0)
plt.figure(figsize=(10, 7), facecolor="white")
plt.plot(rho, [ces(a, x, r) for r in rho], label="CES")
plt.xlabel(r"$ρ$"), plt.ylabel(r"$u_ρ(x)$")
plt.axhline(leontief(a, x), color="crimson", label="Leontief")
plt.legend()
print(a*x)
[0.11114134 0.19854696 0.48172427]
