四维及以上前缀和公式推导

前言

我在全网搜索,发现没有一篇帖子涉及到四维及以上的前缀和,于是我在冥思苦想之后,根据数学+找规律总结出高维前缀和的公式。

思路

为了找规律,我们来看低维前缀和的公式。

一维

//预处理
s[i]=s[i-1]+a[i];
//求部分和
sum[l~r]=s[r]-s[l-1];

二维

s[i][j]=s[i-1][j]
+s[i][j-1]
-s[i-1][j-1]
+a[i][j];

sum[l1~r1][l2~r2]=s[r1][r2]
-s[r1][l2-1]
-s[l1-1][r2]
+s[l1-1][l2-1];

三维

s[i][j][k]=s[i-1][j][k]
+s[i][j-1][k]
+s[i][j][k-1]
-s[i-1][j-1][k]
-s[i-1][j][k-1]
-s[i][j-1][k-1]
+s[i-1][j-1][k-1]
+a[i][j][k];

sum[l1~r1][l2~r2][l3~r3]=s[r1][r2][r3]
-s[r1][r2][l3-1]
-s[r1][l2-1][l3]
-s[l1-1][r2][r3]
+s[l1-1][l2-1][r3]
+s[l1-1][r2][l3-1]
+s[r1][l2-1][l3-1]
-s[l1-1][l2-1][l3-1];

四维

到四维我们发现有些不对起来了,因为我们所处的世界是三维的,理解不了高维的东西,但我们可以进行类比研究。

预处理

以三维来举例我们可以发现,s[i][j][k]轮流加上s[i-1][j][k],s[i][j-1][k],s[i][j][k-1],仔细研究可以加上的是只有一维进行更改的。

然后s[i][j][k]又开始减去s[i-1][j-1][k],s[i-1][j][k-1],s[i][j-1][k-1],这些东西只改变了两个维度。

最后s[i][j][k]又开始加上s[i-1][j-1][k-1],改变了三个维度

大家可否发现什么,没错,只改变奇数个维度的数被加上,只改变偶数个维度的数被减去。

因此,根据上述猜想可以写出:

s[i][j][k][l]=s[i-1][j][k][l]
+s[i][j-1][k][l]
+s[i][j][k-1][l]
+s[i][j][k][l-1]
-s[i-1][j-1][k][l]
-s[i-1][j][k-1][l]
-s[i-1][j][k][l-1]
-s[i][j-1][k-1][l]
-s[i][j-1][k][l-1]
-s[i][j][k-1][l-1]
+s[i-1][j-1][k-1][l]
+s[i-1][j][k-1][l-1]
+s[i][j-1][k-1][l-1]
-s[i-1][j-1][k-1][l-1]
+a[i][j][k][l];

求解

如果是求sum[l1~r1][l2 ~r2][l3 ~r3][l4 ~r4]呢?

还是类比,这次我不在细讲,直接给结论

每次只有l的维度(如:l1,l2,l3,l4)会被更改,其他的根预处理正好相反,奇数次会被减去,偶数次会被增加

sum[l1~r1][l2~r2][l3~r3][l4~r4]=s[r1][r2][r3][r4]
+s[l1-1][r2][r3][r4]
-s[r1][l2-1][r3][r4]
-s[r1][r2][l3-1][r4]
+s[r1][r2][r3][l4-1]
+s[l1-1][l2-1][r3][r4]
+s[l1-1][r2][l3-1][r4]
+s[l1-1][r2][r3][l4-1]
+s[r1][l2-1][l3-1][r4]
+s[r1][l2-1][r3][l4-1]
+s[r1][r2][l3-1][l4-1]
-s[l1-1][l2-1][l3-1][r4]
-s[l1-1][r2][l3-1][l4-1]
-s[r1][l2-1][l3-1][l4-1]
+s[l1-1][l2-1][l3-1][l4-1];

更高维

更高维的前缀和的规律和上述一致

总结

这样,我们就研究出高维前缀和的公式

预处理

只改变奇数个维度的数被加上,只改变偶数个维度的数被减去。

求解

每次只有l的维度(如:l1,l2,l3,l4)会被更改,其他的根预处理正好相反,奇数次会被减去,偶数次会被增加

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二维复合梯形积分公式: 设$f(x,y)$在闭区域$D=[a,b]\times[c,d]$上连续,则有二维复合梯形公式: $$\iint\limits_{D}f(x,y) {\rm d}x{\rm d}y\approx\sum_{i=1}^{m}\sum_{j=1}^{n}\frac{h_1h_2}{4}[f(x_i,y_j)+f(x_{i-1},y_j)+f(x_i,y_{j-1})+f(x_{i-1},y_{j-1})]$$ 其中,$x_0=a,y_0=c,x_m=b,y_n=d$,$h_1=(b-a)/m,h_2=(d-c)/n$。 复合辛普森公式: 设$f(x,y)$在闭区域$D=[a,b]\times[c,d]$上具有二阶连续偏导数,则有二维复合辛普森公式: $$\iint\limits_{D}f(x,y) {\rm d}x{\rm d}y\approx\frac{h_1h_2}{9}\sum_{i=1}^{m}\sum_{j=1}^{n}[f(x_{2i-2},y_{2j-2})+4f(x_{2i-1},y_{2j-2})+2f(x_{2i},y_{2j-2})+4f(x_{2i-2},y_{2j-1})+16f(x_{2i-1},y_{2j-1})$$ $$+4f(x_{2i},y_{2j-1})+2f(x_{2i-2},y_{2j})+4f(x_{2i-1},y_{2j})+f(x_{2i},y_{2j})]$$ 其中,$x_0=a,y_0=c,x_m=b,y_n=d$,$h_1=(b-a)/2m,h_2=(d-c)/2n$。 推导: 对于二维复合梯形积分公式,将$[x_{i-1},x_i]\times[y_{j-1},y_j]$上的$f(x,y)$近似为一个平面,于是有: $$\int_{x_{i-1}}^{x_i}\int_{y_{j-1}}^{y_j}f(x,y){\rm d}x{\rm d}y\approx\frac{h_1h_2}{4}[f(x_i,y_j)+f(x_{i-1},y_j)+f(x_i,y_{j-1})+f(x_{i-1},y_{j-1})]$$ 对于区域$D$,将其分成$m$个小区间$[x_{i-1},x_i]\times[c,d]$,再在每个小区间上分成$n$个小区间$[x_{i-1},x_i]\times[y_{j-1},y_j]$,然后采用上述公式计算每个小区间上的积分,最终加和得到整个区域上的数值积分。 对于二维复合辛普森公式,我们采用二维复合梯形积分公式的思路,将$[x_{2i-2},x_{2i}]\times[y_{2j-2},y_{2j}]$上的$f(x,y)$近似为一个二次函数,于是有: $$\int_{x_{2i-2}}^{x_{2i}}\int_{y_{2j-2}}^{y_{2j}}f(x,y){\rm d}x{\rm d}y\approx\frac{h_1h_2}{9}[f(x_{2i-2},y_{2j-2})+4f(x_{2i-1},y_{2j-2})+2f(x_{2i},y_{2j-2})+4f(x_{2i-2},y_{2j-1})+16f(x_{2i-1},y_{2j-1})$$ $$+4f(x_{2i},y_{2j-1})+2f(x_{2i-2},y_{2j})+4f(x_{2i-1},y_{2j})+f(x_{2i},y_{2j})]$$ 对于区域$D$,同样先将其分成$m$个小区间$[x_{2i-2},x_{2i}]\times[c,d]$,再在每个小区间上分成$n$个小区间$[x_{2i-2},x_{2i}]\times[y_{2j-2},y_{2j}]$,最终采用上述公式计算每个小区间上的积分,最终加和得到整个区域上的数值积分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值