You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerBI中如何引用前后行计算导数(微积分)

在PowerBI中实现数值微分(中心差分)的方法

我明白你想在PowerBI里用中心差分公式 y' = [y(x+h)-y(x-h)] / 2h 计算微分列,其实用DAX就能轻松搞定,下面是具体的步骤和代码:

第一步:确保数据按x列排序

因为要获取当前行的前后行数据,必须保证你的数据是按x列升序排列的。你可以在PowerBI的表格视图中选中x列,点击顶部的「升序排序」按钮,或者在数据加载时设置x列为排序依据,避免行顺序混乱导致计算错误。

第二步:创建计算列(DAX公式)

在数据视图中,点击「新建列」,输入以下DAX代码:

y' = 
VAR CurrentX = 'Table'[x]
// 获取上一行的y值和x值
VAR PrevY = OFFSET(-1, ALLSELECTED('Table'[y]), ORDERBY('Table'[x], ASC))
VAR PrevX = OFFSET(-1, ALLSELECTED('Table'[x]), ORDERBY('Table'[x], ASC))
// 获取下一行的y值和x值
VAR NextY = OFFSET(1, ALLSELECTED('Table'[y]), ORDERBY('Table'[x], ASC))
VAR NextX = OFFSET(1, ALLSELECTED('Table'[x]), ORDERBY('Table'[x], ASC))
// 计算步长h(如果x是等间隔的,h也可以直接用固定值,比如你示例里的A3-A2)
VAR h = (NextX - PrevX) / 2
RETURN
// 边界行(第一行/最后一行)没有前后行,返回空值;其他行按公式计算
IF(ISBLANK(PrevY) || ISBLANK(NextY), BLANK(), (NextY - PrevY) / (2 * h))

公式说明:

  • OFFSET函数是PowerBI较新版本支持的函数,能直接按指定排序规则获取前后行的数据,比旧版本的LOOKUPVALUE更直观。
  • 我们先定义变量存储当前行的前后行y、x值,再计算步长h,最后用IF判断边界情况,避免出现错误值。
  • 如果你确定x是严格等间隔的,还可以把h简化成NextX - CurrentX,这样计算效率会更高。

验证结果

用你给出的示例方程y = 0.1*x³ + x²来测试:
比如x=3时,解析解y'=0.33²+23=8.7;用数值微分计算的话,x=2的y值是4.8,x=4的y值是22.4,代入公式得(22.4-4.8)/(2*(3-2))=17.6/2=8.8,和解析解非常接近,符合数值微分的预期。

内容的提问来源于stack exchange,提问作者22134484

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:59:20