Main Content

충돌하는 질량을 사용하여 Pi 계산하기

이 예제는 잘 알려진 물리학 문제를 활용하여 1초 이내에 발생하는 수만 건의 순간 이벤트를 캡처하는 솔버 성능을 보여줍니다. 1차원 경로 위에서 큰 질량이 반대편 벽에 막혀 있는 작은 질량에 접근합니다. 큰 질량이 작은 질량을 치면 작은 질량은 벽에 부딪혔다가 반대 방향으로 튕겨 나오면서 큰 질량 쪽으로 이동합니다. 각 충돌은 완전히 탄성적입니다. 큰 질량이 벽을 향해 접근하면서 작은 질량과 점점 빠르게 충돌하다가 결국 움직이는 방향이 반대로 바뀌고 작은 질량은 바뀐 방향으로 나아가는 큰 질량을 더 이상 따라잡지 못합니다.

큰 질량이 작은 질량보다 100^n배 클 경우, 총 충돌 횟수는 정확히 pi의 처음 n+1자리의 숫자입니다. 이 결과는 에너지 보존과 운동량 보존 사이의 관계 때문에 발생합니다. 두 질량의 운동 에너지의 제곱근을 직교 축에 플로팅하면 시스템은 항상 원주 위의 어느 한 점에 위치하게 되며, 이때 원의 반지름은 두 질량의 총 에너지에 따라 달라집니다. 충돌할 때마다 시스템은 원주 위의 한 점에서 다른 점으로 이동합니다. 벽과 충돌할 때는 점이 수직으로 이동합니다. 큰 질량과 충돌할 때는 질량비의 음의 제곱근과 같은 기울기를 따라 점이 이동합니다.

이 모델은 탄성 충돌을 나타내는 반발 계수 설정이 지정된 Hard Stop 블록을 사용합니다. 솔버는 0.4초 내에 총 31,415회의 충돌을 캡처합니다. Collision Counter 블록은 충돌 이벤트를 캡처하도록 설계된 사용자 지정 블록입니다.

모델

스코프의 시뮬레이션 결과

Simscape 기록의 시뮬레이션 결과

다음 그림은 두 질량의 위치와 속도를 플로팅합니다. 작은 질량이 벽이나 큰 질량과 충돌할 때 속도의 순간 변화, 그리고 작은 질량이 큰 질량의 방향을 바꿀 때 큰 질량의 속도의 변화를 보여줍니다.

Simscape 기록 결과 애니메이션

다음 그림은 충돌하는 질량의 위치를 시간 경과에 따라 보여줍니다. 가운데의 빨간 블록이 작은 질량, 위의 파란 블록이 큰 질량, 아래의 회색 블록이 벽을 나타냅니다.