跳转至

由个人加总市场曲线

市场曲线是个人曲线的水平加总:在每个价格下,市场数量等于所有买方(或卖方)在该价格下选择的数量之和。买方在阻绝价格以上不购买,卖方在最低价格以下不销售。线性个人曲线加总后的市场曲线是分段线性的,每多一人进入市场出现一个折点。

加总线性曲线

market_demand(individuals)
market_supply(
    individuals,
    *,
    p_max
)

加总负斜率(需求)或正斜率(供给)的个人直线。供给加总由最低的最低价格延伸到 p_max。斜率方向不符时抛出 AggregationError。

PiecewiseLinear(points)

价格对应的数量;超出曲线范围时抛出 PiecewiseLinearError。

数量对应的价格;超出曲线范围时抛出 PiecewiseLinearError。

所有顶点。

斜率改变的内部顶点。

涵盖的数量范围。

涵盖的价格范围。

顶点价格,由小到大排列。

p_low 与 p_high 两个价格之间 \(Q(p)\) 下方的面积。

通过 points \((Q, p)\) 的需求或供给曲线,点依数量排序。若第一点的 \(Q = 0\),超出该点的价格下数量为零。

from principle_viz import (
    line_from_inverse,
    market_demand,
    market_supply,
)

# p = 10 - 2Q
a = line_from_inverse(10, -2)
# p = 6 - 0.5Q
b = line_from_inverse(6, -0.5)
demand = market_demand((a, b))
# ((0.0, 10.0), (2.0, 6.0), (17.0, 0.0))
print(demand.points)
# 7.0 = Q_A + Q_B = 3 + 4
print(demand.q_at(4))

买方 B 在价格 6 进入市场,折点为 \((2, 6)\)。价格为 4 时,\(Q_A = 3\)、\(Q_B = 4\),市场需求量为 7。

solve_piecewise_equilibrium(demand, supply)
piecewise_surplus(
    demand,
    supply,
    result
)

逐段精确求解的市场均衡,以及沿价格积分得到的消费者剩余与生产者剩余。

from principle_viz import (
    piecewise_surplus,
    solve_piecewise_equilibrium,
)

c = line_from_inverse(2, 1)
d = line_from_inverse(5, 0.5)
supply = market_supply((c, d), p_max=10)
eq = solve_piecewise_equilibrium(demand, supply)
# 3.818 5.273
print(round(eq.q_star, 3), round(eq.p_star, 3))
cs, ps = piecewise_surplus(demand, supply, eq)

piecewise_surplus() 返回沿价格积分得到的消费者剩余与生产者剩余。

加总离散表

DiscreteDemand.combine(*schedules) 将所有买方的保留价格合并为一张市场表,由高到低排列;DiscreteSupply.combine() 合并单位成本,由低到高排列。相同的数值保留为不同单位,合并结果可直接交给 solve_discrete_equilibrium()(详见离散市场)。输出参见合并两张离散需求表。。

from principle_viz import DiscreteDemand

first = DiscreteDemand((10, 7, 4))
second = DiscreteDemand((8, 5, 2))
market = DiscreteDemand.combine(first, second)
print(market.values)
# (10.0, 8.0, 7.0, 5.0, 4.0, 2.0)

加总图

demand_aggregation_figure(
    individuals,
    *,
    price,
    price_label="$p_1$",
    link_price=False,
    ...
)
supply_aggregation_figure(
    individuals,
    *,
    price,
    p_max,
    ...
)
discrete_demand_aggregation_figure(
    individuals,
    *,
    price,
    ...
)
discrete_supply_aggregation_figure(
    individuals,
    *,
    price,
    ...
)
link_pricebool默认值: False

让价格线横跨所有面板及面板间的空隙,只在第一个面板标出价格。

与 MarketFigure 相同(详见配色与主题)。

与 MarketFigure 相同(详见配色与主题)。

依图层 id 覆盖标签(详见标签与图层)。

依图层 id 覆盖图层的显示状态(详见标签与图层)。

每位个人一个面板,最后是市场面板,左右并排并共用价格轴。individuals 将名称对应到曲线或逐单位表;曲线命名为 \(D_A\)、\(D_B\)……与 \(D\)(或 \(S_A\)……与 \(S\))。在 price 处以虚线标出 \(Q_A\)、\(Q_B\) 与 \(Q_A + Q_B = Q\)。supply_aggregation_figure() 另需 p_max。

返回的 AggregationFigure 与 MarketFigure 一样提供 save()、hide()、show()、configure_label()、layer_ids 与 label_ids。

from principle_viz import demand_aggregation_figure

fig = demand_aggregation_figure(
    {"A": a, "B": b},
    price=4,
    link_price=True,
)
fig.save("market_demand.png")

demand_aggregation_figure() 的输出参见水平加总的市场需求。。

水平加总的市场需求。

合并两张离散需求表。

评论