簡體   English   中英

了解Python Laplacian實現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM