遠く離れた隣人の影響を無視しない2Dイジングモデルのシミュレーションを書く必要があります。そのため、円の中のスピンを数えたいと思います。円の方程式と周期的な境界条件を持つ円を描く方法[Python]?
私は円の中にあるグリッドの要素を得ることができる簡単な関数を書いています。
def countInCircle(g, x, y, r):
spinSum = 0
for R in range(0, r + 1, 1):
for i in range(0, g.shape[0], 1):
for j in range(0, g.shape[1], 1):
if ((i - x) ** 2 + (j - y) ** 2) == R:
spinSum = spinSum + g[i][j]
return spinSum
これは魅力的なように機能しますが、それがグリッドの場合は円の一部を切り落とします。私は周期的な境界条件のためにこれをどのように解決すべきですか?
ありがとうございます!
残念ながら、あなたが求めているのは不明です。 「グリッドの一部であれば、サークルの一部をカットする」とはどういう意味ですか?境界条件はどこで始まるのですか? 'x'、' y'の整数ですか? '(0,0)'からsqrt(2)離れた画素 'g [1] [1]'はどうでしょうか? – ImportanceOfBeingErnest
さて、 "円の一部が切り取られている場合は、グリッドの上にある"とは、r = 10の半径と2,2の中心を持つ円で数えたい場合、関数は "円の左上と右端がグリッドから外れるため、問題です。 グリッドの最上部の行はグリッドの下部に隣接していますグリッドの左側はグリッドの右側に「隣接」しています。 円の上端(現在は切り取られている)はグリッドの下部に来て、右端は右にある –
私が尋ねた他の2つの質問はどうですか? – ImportanceOfBeingErnest