交互演示:包络定理与消费者对偶

拖动滑块,看无差异曲线、最优切点与支出函数包络线实时联动

消费理论
对偶理论
交互课件
动态拖动价格与收入滑块,实时观察效用最大化切点轨迹与支出函数曲线族的包络结构。
作者

Shawn

Gemini 3.7 Flash

发布于

2026年8月27日

本文依据 Muñoz-Garcia《Advanced Microeconomic Theory》第 2 章及配套课程讲义撰写,属于微观经济学专栏的消费理论模块。阅读前建议了解对偶性与罗伊恒等式斯勒茨基分解

注记本讲交互目标
  1. 拖动价格 \(p_1, p_2\) 与收入 \(w\),观察最优切点沿价格轴移动时,间接效用支出函数如何联动;
  2. 理解包络定理的几何含义:价值函数对参数求导 = 拉格朗日函数在最优处对参数求导(中间变量“冻结”在最优解);
  3. 目睹 \(e(p, u)\) 曲线族的上包络就是 \(v^{-1}\) 的几何结构。

直觉:拖动滑块

下面是柯布–道格拉斯效用 \(u(x_1,x_2)=x_1^{0.5}x_2^{0.5}\) 的世界。左侧图中,红色预算线与蓝色无差异曲线的切点就是马歇尔需求;右侧图中,灰色的曲线族是不同目标效用水平下的支出函数 \(e(p_1, u)\)(关于 \(p_1\)),彩色高亮曲线是当前收入对应的等效用线。

▷ 展开 / 收起代码
viewof p1 = Inputs.range([0.5, 8], {value: 2, step: 0.1, label: html`价格 p₁`})
viewof p2 = Inputs.range([0.5, 8], {value: 2, step: 0.1, label: html`价格 p₂`})
viewof w  = Inputs.range([20, 300], {value: 100, step: 5, label: html`收入 w`})
▷ 展开 / 收起代码
x1 = (0.5 * w) / p1
x2 = (0.5 * w) / p2
u_star = Math.sqrt(x1 * x2)
v_val = w / (2 * Math.sqrt(p1 * p2))
e_val = 2 * u_star * Math.sqrt(p1 * p2)
▷ 展开 / 收起代码
// 数值面板
html`<table class="table table-sm" style="max-width:520px">
  <tr><td>间接效用 v(p, w)</td><td><b>${v_val.toFixed(3)}</b></td></tr>
  <tr><td>支出函数 e(p, u*)</td><td><b>${e_val.toFixed(1)}</b>(恒等于收入 w = ${w})</td></tr>
  <tr><td>最优消费束 (x₁*, x₂*)</td><td><b>(${x1.toFixed(2)}, ${x2.toFixed(2)})</b></td></tr>
</table>`
▷ 展开 / 收起代码
// 左图:预算线 + 无差异曲线簇 + 最优切点
Plot.plot({
  height: 380,
  x: { label: "x₁", domain: [0, Math.max(60, x1 * 2.2)] },
  y: { label: "x₂", domain: [0, Math.max(60, x2 * 2.2)] },
  marks: [
    Plot.line([[0, w / p2], [w / p1, 0]], { stroke: "#ef4444", strokeWidth: 2.5 }),
    ...[0.6, 0.8, 1, 1.25, 1.6].map(k =>
      Plot.line(d3.range(0.5, Math.max(60, x1 * 2.2), 0.5).map(t =>
        [t, (k * u_star) ** 2 / t]), { stroke: "#93b4f8", strokeOpacity: k === 1 ? 1 : 0.35, strokeWidth: k === 1 ? 2 : 1 })
    ),
    Plot.dot([[x1, x2]], { fill: "#10b981", r: 7, stroke: "black" }),
    Plot.text([[x1, x2]], { text: ["E*"], dx: 14, dy: -10, fontSize: 14, fontWeight: "bold" })
  ],
  title: "效用最大化:预算线与无差异曲线切点"
})
▷ 展开 / 收起代码
// 右图:支出函数曲线族 e(p1, u) 关于 p1(p2、u 固定时的曲线族 + 当前切线斜率 = 希克斯需求)
Plot.plot({
  height: 380,
  x: { label: "p₁", domain: [0.5, 8] },
  y: { label: "e(p₁, u)", domain: [0, Math.max(150, w * 1.4)] },
  marks: [
    ...[0.5, 0.75, 1, 1.4, 2].map(k =>
      Plot.line(d3.range(0.5, 8, 0.05).map(t =>
        [t, 2 * k * u_star * Math.sqrt(t * p2)]), { stroke: "#c3cedd", strokeOpacity: k === 1 ? 0 : 0.5 })
    ),
    Plot.line(d3.range(0.5, 8, 0.05).map(t =>
      [t, 2 * u_star * Math.sqrt(t * p2)]), { stroke: "#1e3a8a", strokeWidth: 2.5 }),
    Plot.dot([[p1, 2 * u_star * Math.sqrt(p1 * p2)]], { fill: "#ef4444", r: 7, stroke: "black" }),
    Plot.text([[p1, 2 * u_star * Math.sqrt(p1 * p2)]], { text: ["(p₁, e)"], dx: 16, fontSize: 13, fontWeight: "bold" })
  ],
  title: "支出函数:曲线族的上包络(谢泼德引理 = 曲线斜率)"
})
提示你应该看到什么
  • 调高 \(p_1\):左图预算线变陡、切点左移;右图当前点沿深蓝曲线右移上爬——曲线的斜率恰是希克斯需求 \(h_1 = \partial e / \partial p_1\)(谢泼德引理)。
  • 调高 \(w\):左图预算线外移、切点升到更高无差异曲线;右图整条深蓝曲线按 \(\sqrt{w}\) 比例抬升——这就是 \(e(p, v(p,w)) \equiv w\) 的对偶闭环。

数学:为什么切点轨迹是包络

固定 \((p_2, w)\),让 \(p_1\) 变动。每个 \(p_1\) 对应一个最优效用 \(v(p_1, p_2, w)\)。支出函数在目标效用 \(u\) 处的曲线 \(e(\cdot, u)\) 的斜率是 \(h_1(p, u)\)包络定理指出:

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

求参数导数时,\(x\) 不跟着调整(冻结在旧最优),因此价值函数的导数只捕捉“直接效应”。几何上,这正是一条光滑曲线与它的切线族的关系:每条 \(e(\cdot, u_k)\) 曲线在 \(u_k = v(p, w)\) 处与价值轨迹相切而非相交,故称包络。

延伸阅读

None🤖 AI 助教「乐高」

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

  • 为什么在求参数导数时,最优解 \(x^*\) 可以当作常数“冻结”?请给出数学证明。
  • 解释为什么右图中支出函数曲线族的上包络刚好构成了间接效用的反函数。
  • 包络定理在无约束最优化和有约束最优化中的形式有何区别?