我正在看python的这一部分:
def laplacian(Z):
Ztop = Z[0:-2,1:-1]
Zleft = Z[1:-1,0:-2]
Zbottom = Z[2:,1:-1]
Zright = Z[1:-1,2:]
Zcenter = Z[1:-1,1:-1]
return (Ztop + Zleft + Zbottom + Zright - 4 * Zcenter) / dx**2
应该近似于2D上所有点的拉普拉斯。
来自here
所以说我有网格:
0 1 2 3 4
0 a b c d e
1 f g h i j
2 k l m n o
3 p q r s t
4 u v w x y
教程内容如下:
我们可以使用网格计算此运算符的值 矢量化矩阵运算。因为边缘的副作用 矩阵,我们需要删除网格中的边框 计算
Ztop包括从开头到倒数第二个的行,以及从第二个到最后一个的列,所以它将是:
1 2 3 4
0 b c d e
1 g h i j
2 l m n o
3 q r s t
是吗?
Zcenter包括从第二行到最后一行的行,以及从第二行到最后一行的列,所以:
1 2 3 4
1 g h i j
2 l m n o
3 q r s t
4 v w x y
我认为这是有道理的,因为当我们将Zcenter与Ztop相加时,原始网格中的每个元素都与上面的元素相加。
(虽然,我们不应该将-2作为Zcenter的结束索引,因为我们想要排除边界?
然后我看看Zbottom,它从第三行到结尾,从第二列到最后一列,所以:
1 2 3 4
2
3
4
所以,即使没有填写这个,我可以看到这个网格是3x4而Zcenter和Ztop是4x4,那么总和怎么可能?
答案 0 :(得分:1)
Ztop切掉底部两行以及第一列和最后一列
Zleft砍掉最右边的"两列以及第一行和最后一行
ZCenter切断顶行和底行以及"最左边"和#34;最右边"柱
Zbottom砍掉前两行以及第一列和最后一列
Zright切断"最左边"两列以及顶行和底行。
如果它们以5 X 5
运行,则全部生成3 X 3