消费者理论对偶性与罗伊恒等式 (Roy’s Identity)

从拉格朗日包络定理到几何切点直觉

消费理论
对偶理论
Python可视化
用拉格朗日包络定理推导罗伊恒等式与谢泼德引理,结合 Python 绘制柯布-道格拉斯切点几何。
作者

Shawn

Gemini 3.7 Flash

发布于

2026年8月27日

本文依据 Muñoz-Garcia《Advanced Microeconomic Theory》第 2 章(需求理论与对偶性)及配套课程讲义撰写,属于微观经济学专栏的消费理论模块。阅读后建议进阶浏览价格变化的解剖:斯勒茨基分解包络定理交互课件

注记本讲核心目标
  1. 掌握效用最大化(UMP)与支出最小化(EMP)之间的对偶映射关系与两条核心恒等式;
  2. 熟练运用包络定理(Envelope Theorem)推导罗伊恒等式(Roy’s Identity)谢泼德引理(Shephard’s Lemma)
  3. 通过 Python 代码绘制无差异曲线与预算约束切点,构建直观的几何认知;
  4. 理解对偶工具如何将复杂的优化求导转化为简单的价值函数偏导数之比。

理论框架:两相辉映的对偶世界

在经典消费者理论中,消费者的选择行为存在两种完全等价的表述方式:

\[\text{UMP: } \max_{x \ge 0} u(x) \quad \text{s.t. } p \cdot x \le w \quad \Longrightarrow \quad v(p, w) \quad \text{(间接效用函数)}\]

\[\text{EMP: } \min_{x \ge 0} p \cdot x \quad \text{s.t. } u(x) \ge u \quad \Longrightarrow \quad e(p, u) \quad \text{(支出函数)}\]

对偶性的核心纽带由以下两条恒等式紧密相连:

\[e\big(p, v(p, w)\big) \equiv w \qquad \text{与} \qquad v\big(p, e(p, u)\big) \equiv u\]

这意味着:只要知道了间接效用函数 \(v(p, w)\),我们就能立刻反解出支出函数 \(e(p, u)\);反之亦然。


罗伊恒等式:从间接效用还原马歇尔需求

重要定理:罗伊恒等式 (Roy’s Identity)

设间接效用函数 \(v(p, w)\)\((p, w) \gg 0\) 处连续可微,且 \(\nabla_w v(p, w) > 0\),则马歇尔需求函数可直接通过间接效用函数的偏导数商求得:

\[x_i(p, w) = -\frac{\frac{\partial v(p, w)}{\partial p_i}}{\frac{\partial v(p, w)}{\partial w}}\]

考虑效用最大化问题的拉格朗日函数:

\[\mathcal{L}(x, \lambda; p, w) = u(x) + \lambda (w - p \cdot x)\]

设最优点为 \(x^*(p, w)\),对应的拉格朗日乘子为 \(\lambda^*(p, w)\)。由包络定理可知:

\[\frac{\partial v(p, w)}{\partial p_i} = \left. \frac{\partial \mathcal{L}}{\partial p_i} \right|_{x=x^*} = -\lambda^*(p, w) x_i^*(p, w)\]

\[\frac{\partial v(p, w)}{\partial w} = \left. \frac{\partial \mathcal{L}}{\partial w} \right|_{x=x^*} = \lambda^*(p, w)\]

将两式相除,消去拉格朗日乘子 \(\lambda^*\),即证:

\[\frac{\partial v / \partial p_i}{\partial v / \partial w} = \frac{-\lambda^* x_i^*}{\lambda^*} = -x_i^* \implies x_i(p, w) = -\frac{\partial v / \partial p_i}{\partial v / \partial w} \quad \blacksquare\]


Python 可视化:柯布–道格拉斯偏好的最优选择

设效用函数为典型的柯布–道格拉斯形式:\(u(x_1, x_2) = x_1^{0.5} x_2^{0.5}\),给定价格向量 \(p = (2, 4)\) 与收入 \(w = 100\)

我们可以直接使用 Python 计算最优解并在图上直观展示切点:

▷ 展开 / 收起代码
import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体与负号支持
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei', 'SimHei', 'PingFang SC', 'Noto Sans CJK SC', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

# 参数设定
p1, p2, w = 2.0, 4.0, 100.0
alpha = 0.5

# 解析最优解 (马歇尔需求)
x1_opt = (alpha * w) / p1
x2_opt = ((1 - alpha) * w) / p2
u_max = (x1_opt ** alpha) * (x2_opt ** (1 - alpha))

# 生成网格数据
x1 = np.linspace(1, 50, 400)
budget_x2 = (w - p1 * x1) / p2

# 绘制图形
plt.style.use('seaborn-v0_8-whitegrid' if 'seaborn-v0_8-whitegrid' in plt.style.available else 'default')
fig, ax = plt.subplots(figsize=(8, 5.2), dpi=150)

# 绘制预算线
ax.plot(x1, budget_x2, label=rf'Budget Line: ${p1:.0f}x_1 + {p2:.0f}x_2 = {w:.0f}$', color='#ef4444', linewidth=2.2)

# 绘制不同效用水平的无差异曲线
for u_level, style, alpha_val in [(u_max * 0.7, ':', 0.45), (u_max, '-', 1.0), (u_max * 1.3, '--', 0.5)]:
    indiff_x2 = (u_level / (x1 ** alpha)) ** (1 / (1 - alpha))
    label_txt = rf'Optimal IC ($u^* = {u_max:.2f}$)' if u_level == u_max else rf'IC ($u = {u_level:.2f}$)'
    ax.plot(x1, indiff_x2, linestyle=style, color='#3b82f6', alpha=alpha_val, linewidth=2, label=label_txt)

# 标出最优切点
ax.scatter([x1_opt], [x2_opt], color='#10b981', s=120, zorder=5, edgecolors='black', label=rf'Optimum $E^* ({x1_opt:.0f}, {x2_opt:.0f})$')
ax.annotate(rf'$E^* ({x1_opt:.0f}, {x2_opt:.0f})$' + '\n' + rf'$MRS = p_1/p_2 = {p1/p2:.2f}$',
            xy=(x1_opt, x2_opt), xytext=(x1_opt + 5, x2_opt + 4),
            arrowprops=dict(facecolor='black', shrink=0.08, width=1.2, headwidth=6),
            fontsize=10, fontweight='semibold', bbox=dict(boxstyle="round,pad=0.3", fc="#f8fafc", ec="#cbd5e1"))

ax.set_xlim(0, 50)
ax.set_ylim(0, 30)
ax.set_xlabel(r'Good 1 Quantity ($x_1$)', fontsize=11)
ax.set_ylabel(r'Good 2 Quantity ($x_2$)', fontsize=11)
ax.set_title(r'Consumer Utility Maximization (UMP) & Tangency Condition', fontsize=12, fontweight='bold', pad=12)
ax.legend(loc='upper right', frameon=True)
plt.tight_layout()
plt.show()
图 1: 效用最大化切点与无差异曲线簇

视频精讲(课程录制中)

注记🎬 视频精讲模块

本节配套高清视频课程正在录制与剪辑中,上线后将在此处内嵌直接播放。

在此期间,您可以参考上方的 Python 切点图,或前往交互课件:包络定理与消费者对偶亲自拖动滑块演练动态切点!


总结与延伸阅读

None🤖 AI 助教「乐高」

看完推导与视频还有疑惑?直接向 AI 助教「乐高」提问——它基于本站课程讲义回答,公式用 LaTeX 排版,回答附带讲义溯源。可以试试:

  • 为什么在对偶关系中 \(e(p, v(p, w)) \equiv w\)\(v(p, e(p, u)) \equiv u\) 同时成立?
  • 请详细写出用包络定理证明谢泼德引理(Shephard’s Lemma)的完整步骤。
  • 罗伊恒等式中的负号在经济学直觉上代表什么?