离散市场
离散市场逐一列出每个单位:买方对多一单位的愿付价格,以及卖方多生产一单位的成本。需求与供给都是阶梯函数;均衡是整数个单位,并由一段价格区间支持。
逐单位表
DiscreteDemand(values)
DiscreteSupply(values)
价格为 price 时的成交单位数;在该价格下无差异的买方或卖方会交易。
表中的单位数。
将多个个人表合并为市场表(详见由个人加总市场曲线)。
需求表存放边际愿付价格,由第一单位到最后一单位弱递减;供给表存放边际成本,弱递增。顺序不符时抛出 DiscreteMarketError。
均衡
solve_discrete_equilibrium(
demand,
supply,
*,
price_rule="midpoint"
)
成交单位数。
支持均衡的价格区间下限。
支持均衡的价格区间上限。
依 price_rule 从区间中选出的价格。
MIDPOINT(默认)、LOWER 或 UPPER;也可传入字符串 "midpoint"、"lower"、"upper"。
成交单位的价值。
成交单位的成本。
每个成交单位的价值减成本。
区间是否只有单一价格。
交易所有价值不低于成本的单位,并找出恰好使该数量成交的价格区间。结果包含下列字段:
solve_discrete_market(demand_values, supply_values) 直接由 tuple 创建两张表并求解。需求表的值由高到低、供给表的值由低到高,各单位的价值与成本才能依序配对。
from principle_viz import (
DiscreteDemand,
DiscreteSupply,
solve_discrete_equilibrium,
)
demand = DiscreteDemand((11, 9, 7, 5, 3))
supply = DiscreteSupply((1, 3, 5, 8, 10))
eq = solve_discrete_equilibrium(demand, supply)
print(eq.q_star, eq.price_low, eq.price_high, eq.price)
# 3 5.0 7.0 6.0
print(eq.gains_from_trade)
# (10.0, 6.0, 2.0)
成交 3 单位,价格区间为 5 到 7,中点规则给出 6。交易利得合计 \(10 + 6 + 2 = 18\)。
compute_discrete_surplus(result)
所选价格下的消费者剩余与生产者剩余,包含总额与逐单位数值(consumer_surplus_by_unit、producer_surplus_by_unit)。上例价格为 6 时,两者皆为 \(5 + 3 + 1 = 9\)。
图形
MarketFigure.add_discrete_curves(
demand=None,
supply=None,
*,
demand_label="$D$",
supply_label="$S$"
)
MarketFigure.add_discrete_equilibrium(result)
每个单位画成区间 \([q, q + 1)\) 的一阶:起点为实心点(包含),终点为空心点(不包含),并以虚线连到下一阶。可只传入其中一张表。均衡在坐标轴上标出 \(Q^*\) 与价格区间。
fig = MarketFigure(
x_max=5.5,
y_max=12,
title="Discrete Demand and Supply",
)
fig.add_discrete_curves(demand, supply)
fig.add_discrete_equilibrium(eq)
fig.finalize()
上例的图形参见离散需求与供给。。