▷ 展开 / 收起代码
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`})测试搭建阶段:本站内容主要由 AI 生成且未经逐一核实,可能存在错误,请谨慎甄别与参考。
拖动滑块,看无差异曲线、最优切点与支出函数包络线实时联动
Shawn
Gemini 3.7 Flash
2026年8月27日
本文依据 Muñoz-Garcia《Advanced Microeconomic Theory》第 2 章及配套课程讲义撰写,属于微观经济学专栏的消费理论模块。阅读前建议了解对偶性与罗伊恒等式与斯勒茨基分解。
下面是柯布–道格拉斯效用 \(u(x_1,x_2)=x_1^{0.5}x_2^{0.5}\) 的世界。左侧图中,红色预算线与蓝色无差异曲线的切点就是马歇尔需求;右侧图中,灰色的曲线族是不同目标效用水平下的支出函数 \(e(p_1, u)\)(关于 \(p_1\)),彩色高亮曲线是当前收入对应的等效用线。
// 数值面板
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_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)\) 处与价值轨迹相切而非相交,故称包络。
拖完滑块还有疑惑?直接向 AI 助教「乐高」提问——它基于本站课程讲义回答,公式用 LaTeX 排版,回答附带讲义溯源。可以试试: