[英]Understanding Python Laplacian Implementation
我正在看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上所有點的拉普拉斯算子。
從這里
所以說我有網格:
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,那么總和怎么可能?
Ztop砍掉底部的兩行以及第一列和最后一列
Zleft砍掉了“最右邊”的兩列以及第一行和最后一行
ZCenter刪除頂部和底部行以及“最左側”和“最右側”列
Zbottom砍掉了前兩行以及第一列和最后一列
Zright砍掉了“最左邊”的兩列以及頂部和底部的行。
如果它們在5 X 5上運行,則全部生成3 X 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.