一个采暖季到底要烧掉多少热:室外年均气温每高1度少烧8%,月平均18度的月份却有一半天数要供暖

两个都会算错的估法:一个按面积拍,一个按最冷月拍
想知道一个采暖季要烧掉多少热,最常见的做法是两种。第一种是"面积乘热指标乘天数":100 平米、每平米 40 瓦、烧 120 天,于是 40×100×120×24 = 11.5 兆瓦时。第二种更"精细"一点:拿最冷那个月的室外温度算负荷,再乘上供暖天数。
这两种算法错在同一个地方——它们都把室外温度当成一个常数。可室外温度一整个冬天都在动,11 月 15 号和 1 月 15 号差了将近 8 度,把它们按同一个负荷算进去,结果必然偏。
正确的做法是把温差对时间积分,积分出来的那个量叫采暖度日数 HDD(Heating Degree Days)。它的定义只有一行:把每一天的(室内基准温度 − 当天室外日均温)取正值,然后全季累加。单位不是度,是"度·天"。有了它,一季的热量就是
Q = UA × HDD × 24
其中 UA 是整栋房子包括冷风渗透在内的总传热系数(瓦/开尔文)。这条式子干净的地方在于:房子的信息全在 UA 里,天气的信息全在 HDD 里,两者彻底分开。换一栋房子不用重算天气,换一个暖冬不用重算房子。
下面我把 HDD 的闭式解推出来,再用它回答几个现场真会被问到的问题。所有数字都由同一组参数算出来,可以复算。
一、把全年气温写成一条正弦,度日数就有闭式解
常年气象数据里,日平均气温在一年里的起伏非常接近一条正弦曲线。以最冷的那一天(多数地区在 1 月 15 日前后)为原点,记 d 为距这一天的天数:
T(d) = T̄ − A·cos(2πd/365)
这里只有两个参数:T̄ 是年平均气温,A 是年振幅(最热月与最冷月温差的一半)。年平均气温查气候资料就能拿到,年振幅用(7 月均温 − 1 月均温)÷ 2 估算即可。
需要供暖的日子是 T(d) < T_b 的那些天,T_b 是室内基准温度,按 GB 50736 取 18 ℃。代入正弦式,条件变成 cos θ > (T̄ − T_b)/A,记这个比值为 c,于是供暖需求区间是 θ ∈ [−θ₀, θ₀],其中
θ₀ = arccos(c),c = (T̄ − T_b)/A
在这个区间上积分 (T_b − T),得到全年自然度日数的闭式解:
HDD = (365/π) × [ (T_b − T̄)·θ₀ + A·sin θ₀ ]
这条式子值得先做三件事验证它没写错,因为后面所有结论都从它长出来。
第一,令振幅 A → 0(气温全年不变):此时 c → −∞,θ₀ → π,sin θ₀ → 0,式子退化为 HDD = 365×(T_b − T̄)。这正是"全年每天都要烧、温差恒定"的常识结果,数值检验为 4745.0 = 365×13,完全吻合。
第二,令年平均气温正好等于基准温度(T̄ = T_b):此时 c = 0,θ₀ = π/2,式子给出 HDD = (365/π)×A = 116.14×A。直观含义是"只有半年需要供暖、且这半年里温差按半个正弦波变动",积分 ∫A·cos θ 从 −π/2 到 π/2 恰好等于 2A/ω = 116.14A。三个不同振幅(10、15、20)数值检验全部一致。
第三,令全年气温都高于基准温度:此时 c ≥ 1,θ₀ = 0,HDD = 0。数值检验为 0。
再加一条数值闭合:把区间切成四段分别积分再相加,与一次积分的结果相对差 1.5×10⁻¹⁶,即浮点精度极限。
二、北京算例:2979 度日是怎么来的
北京常年平均气温约 12 ℃,1 月均温约 −3 ℃、7 月约 26 ℃,取 T̄ = 12.0 ℃、A = 15.0 K,T_b = 18 ℃。
算 c = (12.0 − 18)/15.0 = −0.400,于是 θ₀ = arccos(−0.400) = 1.9823 弧度 = 115.2 天。也就是说,以最冷日为中心,前后各 115 天、合计 230 天里存在供暖需求。
代入闭式解:HDD = (365/π)×[(18−12.0)×1.9823 + 15.0×sin 1.9823] = 116.14×(11.894 + 13.748) = 2979 度·天。
但北京的法定供暖期是 11 月 15 日到 3 月 15 日,共 120 天。把积分限换成这一段(距最冷日 −61 天到 +59 天),得到的法定供暖期度日数只有 2216 度·天,占自然需求的 74.4%。
剩下的 762.7 度·天(25.6%)落在 11 月 15 日之前——那段日子的日均气温已经在 4.5 ℃ 上下(日度日 13.5),按"需不需要供暖"算是需要的,但日历上还没开始烧。这个 25.6% 是后面几个反直觉结论的源头。
三、20 个城市的度日数与"气温弹性"
用同样的方法,代入各城市常年平均气温与年振幅(取 1 月、7 月均温差的一半),得到下表。最后一列是本文最重要的一个数:气温弹性,即年平均气温每升高 1 ℃,度日数下降的百分比。
| 城市 | 年均气温 ℃ | 年振幅 K | 需求期 天 | 自然 HDD18 | 法定期内 HDD | 弹性 %/K |
|---|---|---|---|---|---|---|
| 哈尔滨 | 4.0 | 20.7 | 268.8 | 5535 | 3745 | 4.86 |
| 长春 | 5.0 | 19.1 | 269.5 | 5129 | 3465 | 5.25 |
| 沈阳 | 8.0 | 18.1 | 250.7 | 4253 | 3001 | 5.90 |
| 呼和浩特 | 6.4 | 17.0 | 270.1 | 4569 | 3083 | 5.91 |
| 乌鲁木齐 | 6.9 | 18.3 | 258.5 | 4552 | 3153 | 5.68 |
| 银川 | 9.0 | 15.7 | 253.4 | 3775 | 2646 | 6.71 |
| 太原 | 10.0 | 14.5 | 250.4 | 3408 | 2407 | 7.35 |
| 兰州 | 9.8 | 13.9 | 256.1 | 3397 | 2366 | 7.54 |
| 北京 | 12.0 | 15.0 | 230.3 | 2979 | 2216 | 7.73 |
| 天津 | 12.2 | 15.2 | 228.1 | 2949 | 2207 | 7.74 |
| 石家庄 | 13.2 | 14.5 | 221.8 | 2648 | 2018 | 8.38 |
| 西安 | 14.0 | 13.5 | 217.6 | 2362 | 1822 | 9.21 |
| 济南 | 14.5 | 14.0 | 212.0 | 2311 | 1812 | 9.17 |
| 郑州 | 14.7 | 13.5 | 211.2 | 2218 | 1743 | 9.52 |
| 南京 | 15.9 | 12.8 | 201.7 | 1885 | 1524 | 10.70 |
| 上海 | 16.6 | 11.9 | 196.2 | 1648 | 1355 | 11.91 |
| 杭州 | 16.5 | 12.3 | 196.7 | 1713 | 1407 | 11.48 |
| 武汉 | 16.6 | 12.5 | 195.5 | 1717 | 1415 | 11.39 |
| 成都 | 16.2 | 10.1 | 203.3 | 1521 | 1224 | 13.37 |
| 长沙 | 17.0 | 12.3 | 192.0 | 1616 | 1347 | 11.88 |
("法定期内 HDD"统一按 11 月 15 日至 3 月 15 日这 120 天的日历区间计算,便于横向比较;南方城市实际按需自定供暖期。参数为常年气候值的两参数正弦拟合,用于估算与横向对比,精确设计请以当地逐时气象年数据为准。)
四、冷暖 1 度到底值几个点:越暖的地方越敏感
把闭式解对年平均气温求导,正弦项不受影响,只剩 θ₀ 那一项:
dHDD/dT̄ = −(365/π)·θ₀
北京 θ₀ = 1.9823,所以 dHDD/dT̄ = −230.3 度·天/开尔文。相对 2979 度·天,就是 7.73%。也就是说:年平均气温每高 1 度,一个采暖季的热量需求少 7.73%;反过来,暖冬变冷冬,账单涨的比例是同一个数。
把这个弹性算到每个城市,规律完全反直觉——越冷的城市,弹性越小:
- 哈尔滨 4.86 %/K(每度 268.8 度·天)
- 北京 7.73 %/K(每度 230.3 度·天)
- 上海 11.91 %/K(每度 196.2 度·天)
- 成都 13.37 %/K(每度 203.3 度·天)
成都的弹性是哈尔滨的 2.75 倍。原因是分母:冷地方的度日数本来就大(哈尔滨 5535 对成都 1521,差 3.6 倍),同样 200 多度·天的变化摊进去,比例自然就小。
这个结论对自采暖的用户是实打实的:同样一个暖冬,南方自采暖的账单降幅是北方的两倍多。而按面积收费的集中供暖,无论暖冬冷冬都是同一张单子,弹性恒等于零——这也是"集中供暖按面积收费不反映实际用热"最直接的量化说明。
再给一个极限自证:当 θ₀ → π(即全年都需要供暖的极寒地区),sin θ₀ → 0,弹性退化为 1/(T_b − T̄)。哈尔滨 T_b − T̄ = 14,上界是 7.14 %/K,而实际是 4.86 %/K——因为哈尔滨的需求期是 269 天而不是 365 天,θ₀ 只到 2.32 弧度,正弦项还贡献着一大块分母。上界比实算值大,方向正确。
五、月平均气温是个陷阱:月均 18 度的月份,有一半天数要供暖
现场最容易踩的坑,是拿月平均气温去估这个月的度日数,写成"月均 15 度,所以这个月 30×3 = 90 度·天"。这个写法漏掉了日温波动。
日平均气温围绕月均值上下波动,常年统计里冬季的标准差大约 3.5~5 K,本文统一取 σ = 4 K。设月均气温与基准温度之差为 Δ = T_b − T̄_month,日温偏差 X 服从 N(0, σ²),那么真实的一天度日数是 (Δ + X) 的正部,它的期望有闭式解:
E[(Δ+X)⁺] = Δ·Φ(Δ/σ) + σ·φ(Δ/σ)
其中 Φ 是标准正态分布函数,φ 是密度函数。而"这个月有多少比例的天数需要供暖",就是 Φ(Δ/σ)。
关键数字来了:当 Δ = 0,也就是月平均气温正好 18 度时,Φ(0) = 50%。这个 50% 不依赖 σ 取多少,只来自分布对称,是个普适常数。而月均法在这一格给出的度日数是 0,真实值是 1.596 度·天/天——整整一个月 48.5 度·天,被一次"取月均"抹掉了。
| 月均气温 ℃ | Δ = 18 − T̄ | 需暖天数比例 | 月均法 度·天/天 | 逐日法 度·天/天 | 月均法低估 |
|---|---|---|---|---|---|
| 16.0 | 2.0 | 69.1% | 2.000 | 2.791 | 28.3% |
| 17.0 | 1.0 | 59.9% | 1.000 | 2.145 | 53.4% |
| 17.5 | 0.5 | 55.0% | 0.500 | 1.858 | 73.1% |
| 18.0 | 0.0 | 50.0% | 0.000 | 1.596 | 100% |
| 19.0 | −1.0 | 40.1% | 0.000 | 1.145 | 100% |
| 20.0 | −2.0 | 30.9% | 0.000 | 0.791 | 100% |
| 22.0 | −4.0 | 15.9% | 0.000 | 0.333 | 100% |
结论很硬:月平均气温只要接近或高于 18 度,"月均法"就直接归零,而真实需求还在 0.3~1.6 度·天/天。这直接决定"什么时候点火、什么时候停炉"这类判断会错成什么样——月均 20 度的月份,仍有 30.9% 的日子低于 18 度,按 30 天算就是 9 天。
反过来,严寒月份 Δ 很大,Φ(Δ/σ) 趋近 1,月均法的误差迅速收敛:Δ = 10 时低估仅 1.1%,Δ = 15 时不到 0.3%。所以月均法不是"一直不准",而是"只在该不该烧的边界上崩",恰恰是最需要做决策的那几个月份。
六、熬过最冷那几天,其实只熬掉 28.57%
很多人觉得"最冷那一个月占了大半个冬天"。按正弦模型算一遍:以 1 月 15 日为中心前后各 15.2 天的"最冷月",度日数是 633.2 度·天,占法定供暖期 2216 度·天的 28.57%——而它的天数占比是 25.3%。
也就是说,最冷月的热需求强度只是全季平均的 1.13 倍。冬天不是尖峰型的,是被"拉平"的。
日负荷看得更清楚(北京):
- 供暖首日(11/15,日均 4.54 ℃):13.46 度·天
- 供暖中期(1/1,日均 −2.50 ℃):20.50 度·天
- 最冷日(1/15,日均 −3.00 ℃):21.00 度·天
- 供暖末日(3/15,日均 4.09 ℃):13.91 度·天
最冷日只有供暖首日的 1.56 倍。真正拉开差距的是寒潮:日温跌到 −15 ℃ 时,当天度日数 33.0,是供暖首日的 2.45 倍。
但寒潮的持续时间很短。假设一个冬天有 10 天这样的日子,贡献 330 度·天,占法定供暖期 14.89%。这就是设备的选型逻辑:最冷那几天决定壁挂炉和暖气片要配多大,但决定一个季烧多少钱的,是那 230 天里平平无奇的日常。为了 10 天去加大设备,换来的是剩下 220 天在低负荷下低效运行。
七、延长供暖 10 天,只多烧 5.76%
"提前供暖、延后停暖"听起来是一笔大钱。算一下:在北京的日历上,把停暖日期从 3 月 15 日往后推——
- 延后 5 天:+66.7 度·天(+3.01%)
- 延后 10 天:+127.7 度·天(+5.76%)
- 延后 15 天:+182.7 度·天(+8.24%)
- 延后 30 天:+310.2 度·天(+14.00%)
两端各延长 10 天,合计 +11.32%。原因是延长出去的那段日子,气温已经在 4~10 ℃ 之间,日度日只有 6~14,远比隆冬的 21 小。
所以从能耗角度看,延长供暖的边际成本比直觉低得多;反过来,把供暖期死死卡在 11/15 到 3/15,代价是在前端漏掉 762.7 度·天(自然需求的 25.6%)——那些天不是不需要热,只是日历没划进去。
八、基准温度取 16 还是 18,结果差 14.9%
不同资料里的"度日数"经常对不上,最大的原因是基准温度不一样。把基准温度每提高 1 度,度日数增加 θ₀ 那一项对应的 (365/π)×θ₀ = 230.3 度·天。北京:
- HDD16 = 2535(比 HDD18 少 14.9%)
- HDD17 = 2753(少 7.6%)
- HDD18 = 2979(基准)
- HDD19 = 3214(多 7.9%)
- HDD20 = 3457(多 16.0%)
室内设定温度从 18 提到 20,度日数增加 16.0%,热量需求同比例增加。注意这个 16.0% 和第四节"暖冬 1 度省 7.73%"并不矛盾——它们都是同一个 230.3 度·天/开尔文,只是分母不同(HDD18 vs HDD20)。引用任何度日数表格之前,先确认它用的是哪个基准,否则两本资料能差出三成。
九、用燃气表反推你家的 UA,一个采暖季的账就有了
把前面的式子反解,得到一个能直接用的现场判据。已知一季燃气抄表数 V(立方米)、壁挂炉热效率 η、天然气低热值 9.89 千瓦时/立方米、当地度日数 HDD:
UA = V × 9.89 × η ÷ (HDD × 24)
北京 100 平米住宅按设计热指标 40 瓦/平米、供暖室外计算温度 −7.6 ℃ 反算,UA 设计值 = 40×100 ÷ (18 + 7.6) = 156.2 瓦/开尔文。按法定供暖期 HDD = 2216 度·天,理论季需热量 = 156.2 × 2216 × 24 ÷ 1000 = 8311 千瓦时(29.92 吉焦),取 η = 0.90 折合燃气 934 立方米。
拿这个当尺子量自家的表:
- 一季烧 800 立方米 → UA = 133.9 瓦/开(设计值的 86%,保温优于设计)
- 一季烧 1000 立方米 → UA = 167.3 瓦/开(107%,正常)
- 一季烧 1200 立方米 → UA = 200.8 瓦/开(129%)
- 一季烧 1500 立方米 → UA = 251.0 瓦/开(161%)
- 一季烧 1800 立方米 → UA = 301.2 瓦/开(193%,接近设计值的两倍)
UA 每超出设计值 10 瓦/开,一季多烧 59.8 立方米,按 3 元/立方米就是 179 元。所以"烧到 193%"不是"房子老了一点",是每年多付 约 700 元,而且这笔钱年年付。
最后提醒一句口径:这个 UA 是含冷风渗透、含间歇运行损失、含生活热水混在一起的综合值,不能直接和外墙传热系数的计算书比对。它真正有用的用法是自己跟自己比——同样的房子,做完门窗密封或加了内保温,明年同样的气温下 UA 掉下来多少,省下的就是真金白银。
这篇不算的部分
本篇的度日数模型是"单一室外温度 + 单一基准温度"的经典算法,下面几件事它不管:一是自由热(太阳辐射、人体、家电、炊事),它使实际平衡点温度低于室内设定温度,严格做法应改用平衡温度做基准;二是间歇运行,白天降温夜间回升带来的额外蓄热损失;三是热惰性的相位滞后,最冷的日子与最费气的日子并不重合;四是城市热岛与海拔造成的微气候偏差。这几项都会让实际用量高于度日数的预测值,也就是说本文算出的 8311 千瓦时是下限,不是期望值。
相关产品推荐
结合本文场景,瑞华特可提供以下采暖产品和配套选型建议:
- PERT-II阻氧地暖管 DN20:适用于家庭地暖盘管和工程地暖系统,柔韧性好,适合低温热水地面辐射采暖。
- PPR采暖主管 DN25/DN32:用于壁挂炉、分水器和采暖主管连接,适合地暖与暖气片混合系统配套。
- 地暖电热执行器 WK-24:安装在分水器回路阀门上,配合温控面板控制单路地暖开闭。
需要确认规格、数量或工程采购清单,可联系瑞华特暖气片厂家获取免费选型指导。



