夜雨聆风学习资料网

ARTICLE · 1286989

一个Excel公式,同时算出击实曲线最优含水率和最大干密度,建议收藏!

一个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,可以用辅助单元格分步写:

  1. 先取 x 和 y;
  2. 用 LINEST(y,x^{1,2}) 得到三个系数;
  3. 分别取a、b、c ;
  4. 再用 -b/(2*a) 和 c-b^2/(4*a) 计算。

思路完全一样,只是把公式拆开,便于检查每一步结果。


八、结语

对于规则摆放的击实试验数据,用 LINEST 做二次拟合,再求抛物线顶点,可以快速得到拟合最优含水率和拟合最大干密度。关键不是公式有多长,而是三点:

  • x是含水率、y是干密度;
  • 二次项系数必须小于 0;
  • 顶点要落在试验含水率范围内。

满足这些条件,公式可以作为击实曲线数据处理的辅助工具;不满足时,公式会直接提示,而不是给出一个看似合理但不可靠的数值。

如果你经常处理击实试验数据,可以把这两个公式保存成模板,下次只要替换 D23:M23 和 D24:M24 的区域,就能快速得到拟合峰值。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料