ARTICLE · 1286989
一个Excel公式,同时算出击实曲线最优含水率和最大干密度,建议收藏!
微信搜一搜,搜索“【试验搭子】小程序”,立即体验完整功能。点击跳转试验搭子,点击界面中配比悬停按钮链接跳转“配合比大全”小程序。

击实试验做完后,很多人都会遇到同一个问题:含水率和干密度数据有了,击实曲线也画出来了,但“最优含水率”和“最大干密度”还要靠图上找点、手工拟合,费时不说,不同人读图还可能读出不同结果。
如果你的数据是规则摆放的,其实可以用 Excel 的 LINEST 做二次多项式拟合,再直接求抛物线顶点。这样得到的不是原始试验点中的最大值,而是二次拟合曲线的峰值,更适合用来辅助判断最优含水率和最大干密度。
下面把原理、公式和注意事项一次讲清楚。
一、先明确:公式求的是什么
击实试验通常得到一组“含水率—干密度”数据。击实曲线常近似为开口向下的抛物线:
当 a<0时,曲线开口向下,顶点就是拟合曲线的最大值。
顶点横坐标,也就是拟合最优含水率:
顶点纵坐标,也就是拟合最大干密度:
所以,Excel 公式的核心就是:先用 LINEST 拟合出 a、b、c,再套用顶点公式。
二、假设你的数据这样摆放
假设:
D23:M23放含水率; D24:M24放干密度; 数据隔列放在 D、F、H、J、L五列;即含水率取 D23、F23、H23、J23、L23;干密度取 D24、F24、H24、J24、L24。
如果你的数据位置不同,把公式里的区域改掉即可,但 x 和 y 必须一一对应。
三、求最大干密度
下面这个公式会先判断二次项系数是否小于 0,并判断拟合顶点是否落在试验含水率范围内;不满足条件时返回提示,而不是直接给出一个不可靠的数。
=IFERROR(LET(x, INDEX($D$23:$M$23,1,{1;3;5;7;9}),y, INDEX($D$24:$M$24,1,{1;3;5;7;9}),k, LINEST(y,x^{1,2}),a, INDEX(k,1,1),b, INDEX(k,1,2),c, INDEX(k,1,3),IF(a>=0,”二次项系数a>=0,曲线不开口向下,不能取最大值”,LET(x0, -b/(2*a),ymax, c-b^2/(4*a),IF(AND(x0>=MIN(x),x0<=MAX(x)),ymax,”拟合顶点超出试验含水率范围,不宜作为最大干密度”)))),”拟合失败,请检查x/y是否为数值且点数足够”)
这个公式返回的是二次拟合曲线的最大干密度,单位与 y 列干密度单位一致。
四、求最优含水率
如果你只需要最优含水率,不需要最大干密度,可以用下面这个公式。它会检查曲线是否开口向下,并检查顶点是否在试验含水率范围内。
=IFERROR(LET(x, INDEX($D$23:$M$23,1,{1;3;5;7;9}),y, INDEX($D$24:$M$24,1,{1;3;5;7;9}),k, LINEST(y,x^{1,2}),a, INDEX(k,1,1),b, INDEX(k,1,2),IF(a>=0,”二次项系数a>=0,曲线不开口向下,不能取最大值”,LET(x0, -b/(2*a),IF(OR(x0MAX(x)),”拟合顶点超出试验含水率范围,不宜作为最优含水率”,x0)))),”拟合失败,请检查x/y是否为数值且点数足够”)
如果 x 列是百分数格式,返回的最优含水率也按百分数显示即可。
五:同时得到最优含水率和最大干密度
=IFERROR(LET(x, INDEX($D$23:$M$23,1,{1;3;5;7;9}),y, INDEX($D$24:$M$24,1,{1;3;5;7;9}),k, LINEST(y,x^{1,2}),a, INDEX(k,1,1),b, INDEX(k,1,2),c, INDEX(k,1,3),IF(OR(NOT(ISNUMBER(a)),NOT(ISNUMBER(b)),NOT(ISNUMBER(c))),HSTACK("系数无效","系数无效"),IF(a>=0,HSTACK("a>=0,不能取最大值","a>=0,不能取最大值"),LET(x0, -b/(2*a),ymax, c-b^2/(4*a),IF(OR(x0<MIN(x),x0>MAX(x)),HSTACK("顶点超出试验范围","顶点超出试验范围"),HSTACK(x0,ymax)))))),"拟合失败,请检查x/y数据")
把公式放在一个空白单元格里,右侧要留出两个空单元格,因为 HSTACK 会向右溢出。
返回结果:
第一列:最优含水率;
第二列:最大干密度;
不满足条件时:两列都返回提示文字。
六、使用时一定要注意这几点
1. x 必须是含水率,y 必须是干密度
如果两者反了,求出来的就不是最优含水率。这是最容易犯的错误。
2. 二次项系数 a 应小于 0
只有抛物线才开口向下,顶点才是最大值。公式里已经加了判断,若 a>=0 会提示,不直接给结果。
3. 顶点不能离试验范围太远
如果拟合顶点落在试验含水率范围之外,说明二次拟合可能在“外推”,这时结果不宜直接采用。公式里用 MIN(x) 和 MAX(x) 做了范围检查。
4. 这是拟合峰值,不是原始点最大值
公式求的是二次拟合曲线的峰值,不是五个试验点里干密度最大的那个点。工程上应结合击实试验规范、曲线形态和异常点判断。
5. 数据点少,拟合自由度有限
五个点做二次拟合只有两个残差自由度,能算,但稳健性有限。若数据离散大、异常点多,建议先检查原始数据,不要盲目相信拟合结果。
6. 公式不能替代规范击实试验
它只是数据处理工具,不能替代试验本身,也不能代替规范判定。最终成果仍应按相关规范、试验方法和工程经验确认。
七、旧版 Excel 没有 LET 怎么办
如果你的 Excel 不支持 LET,可以用辅助单元格分步写:
先取 x和y;用 LINEST(y,x^{1,2})得到三个系数;分别取a、b、c ; 再用 -b/(2*a)和c-b^2/(4*a)计算。
思路完全一样,只是把公式拆开,便于检查每一步结果。
八、结语
对于规则摆放的击实试验数据,用 LINEST 做二次拟合,再求抛物线顶点,可以快速得到拟合最优含水率和拟合最大干密度。关键不是公式有多长,而是三点:
x是含水率、y是干密度;二次项系数必须小于 0; 顶点要落在试验含水率范围内。
满足这些条件,公式可以作为击实曲线数据处理的辅助工具;不满足时,公式会直接提示,而不是给出一个看似合理但不可靠的数值。
如果你经常处理击实试验数据,可以把这两个公式保存成模板,下次只要替换 D23:M23 和 D24:M24 的区域,就能快速得到拟合峰值。















































































