Модуль III·Статья I·~3 мин чтения
Динамическое программирование в экономике
Динамическая экономика
Превратить статью в подкаст
Выберите голоса, формат и длину — AI запишет аудио
Динамическое программирование в экономике
Динамическое программирование (ДП) — метод решения межвременных задач оптимизации, основанный на принципе оптимальности Беллмана: оптимальная стратегия на любом подпути оптимальной траектории сама является оптимальной. В экономике ДП применяется для анализа роста, сбережений, управления фирмой и ценообразования активов. Современная макроэкономика (RBC, DSGE, модели Bewley) полностью построена на методах ДП.
Задача оптимального роста Рамсея
Непрерывная версия (1928):
max_{c(t)} ∫₀^∞ e^{−ρt} u(c(t)) dt при k̇ = f(k) − c − δk, k(0) = k₀, c ≥ 0
Расшифровка переменных и параметров:
- k(t) — запас капитала на душу населения
- c(t) — потребление на душу
- ρ — ставка дисконтирования (нетерпение потребителя)
- δ — норма выбытия капитала
- f(k) — производственная функция (Кобб-Дуглас: f = k^α)
- Ограничение k̇ = f(k) − c − δk: изменение капитала = производство − потребление − выбытие
Принцип максимума Понтрягина: Гамильтониан H = u(c) + μ[f(k) − c − δk]. Условия оптимальности: ∂H/∂c = 0 → u'(c) = μ (предельная полезность потребления = цена капитала). μ̇ = ρμ − ∂H/∂k → μ̇ = (ρ + δ − f'(k))μ.
Уравнение Эйлера потребления:
ċ/c = (f'(k) − δ − ρ)/σ(c)
Здесь σ(c) = −cu''(c)/u'(c) — межвременная эластичность замещения (IES). При u = ln c: σ = 1, ċ/c = f'(k) − δ − ρ. Интуиция: потребление растёт, если доходность капитала f'(k) > δ + ρ (отдача превышает выбытие + нетерпение).
Уравнение Беллмана
Дискретная рекурсивная задача:
V(x) = max_{x'∈Γ(x)} [u(x, x') + β V(x')]
x — состояние (капитал, богатство), x' — следующее состояние, β ∈ (0,1) — дисконт-фактор, Γ(x) — допустимое множество, u — текущее вознаграждение.
Интуиция: ценность состояния x = наилучшая текущая выплата + дисконтированная ценность будущего оптимального состояния. Рекурсия позволяет «разбить» бесконечный горизонт на одношаговые задачи.
Теорема о неподвижной точке Беллмана: Оператор T(V)(x) = max_{x'∈Γ(x)} [u(x,x') + βV(x')] является сжатием с коэффициентом β ∈ (0,1) в метрическом пространстве ограниченных функций (sup-норма). Следствие: существует единственная неподвижная точка V*. Итерации V_{n+1} = T(Vₙ) сходятся: ||Vₙ − V*|| ≤ βⁿ/(1−β) · ||V₁ − V₀||.
Оптимальная политика: g(x) = argmax_{x'∈Γ(x)} [u(x,x') + βV*(x')] — функция политики, определяющая оптимальное поведение в каждом состоянии.
Стационарное состояние и «золотое правило»
Стационарное состояние: k̇ = 0, ċ = 0. Из уравнения Эйлера: f'(k*) = ρ + δ — «модифицированное золотое правило» (с нетерпением).
Чистое «золотое правило» Фелпса (1961): max c = f(k) − δk → f'(k_GR) = δ. При ρ > 0: k* < k_GR — нетерпение снижает накопление капитала ниже «золотого» уровня.
Переходная динамика: если k₀ < k*, то k растёт, c растёт → система движется к стационарному состоянию по «седловой кривой» (saddle path). Уникальность: только одна траектория c(t) ведёт к стационарному состоянию (трансверсальное условие).
Численные методы: Итерация функции ценности (VFI): для сетки K = {k₁,...,kₙ}: Vⱼ₊₁(kᵢ) = max_{k'∈K} [u(f(kᵢ) − k') + βVⱼ(k')]. Метод проекций на полиномах Чебышёва: аппроксимируем V* суммой Чебышёвских полиномов. Метод пертурбации: логарифмическая линеаризация вокруг k*.
Численный пример
u(c) = ln(c), f(k) = k^{0.36}, β = 0.95, δ = 0.10. Пробный вид: V*(k) = A + B·ln(k). Из уравнения Беллмана: A + B·ln(k) = max_{c} [ln(c) + β(A + B·ln(k^{0.36} − c))]. Необходимое условие (FOC): 1/c = β·B·(−1)/(k^{0.36} − c). Решение: c* = k^{0.36}/(1+β·B). Подставляя в уравнение Беллмана: B = α·β·B/(1−β(1−α)) → B = α/(1−α·β). При α=0.36, β=0.95: B = 0.36/(1−0.36·0.95) ≈ 0.36/0.658 ≈ 0.547. Функция политики: c* = k^{0.36}·(1−αβ) = k^{0.36}·0.658.
При k₀ = 10: k^{0.36} ≈ 3.17, c* = 0.658·3.17 ≈ 2.09, k₁ = 3.17 − 2.09 + (1−0.1)·10 = ... итерируем дальше.
Задание: u(c) = ln(c), f(k) = k^{0.36}, β = 0.95, δ = 0.10. Численно решите задачу VFI на сетке k ∈ [0.01, 3] с N = 200 точками. (1) Постройте V*(k) и сравните с аналитическим A + B·ln(k). (2) Постройте функцию политики c*(k). (3) Симулируйте 100 шагов при k₀ = 0.5. (4) Найдите k*, c* стационарного состояния аналитически и сравните с симуляцией.
§ Акт · что дальше