먼 이웃의 영향을 무시하지 않는 2D Ising 모델 시뮬레이션을 작성해야하므로 원 안에 스핀을 계산하고 싶습니다.원 방정식과 주기적 경계 조건을 사용하여 원을 그리는 방법 [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
글쎄, "t가 원의 일부를 잘라내는 경우 그리드의 경우"나는 반지름이 10이고 반지름이 2,2 원인 원에서 계산하려면 함수가 "잘라 내고" 그 이유는 다음과 같습니다. 주기적인 경계 조건을 사용해야합니다. 그리드의 맨 위 행은 그리드의 아래쪽에 "인접"합니다 (그리드 외부에 있기 때문에). 그리드의 왼쪽은 그리드의 오른쪽에 "인접"합니다. 그래서 (현재 잘려나가는) 원의 꼭대기가 그리드 하단과 오른쪽에있는 왼쪽에 있어야합니다. –
내가 물었던 다른 두 가지 질문은 어떻습니까? – ImportanceOfBeingErnest