튀어 오르는 공 시뮬레이션
이 예제에서는 두 개의 튀어 오르는 공 모델을 사용하여 제논 동작으로 하이브리드 동적 시스템을 모델링하는 여러 접근 방식을 보여줍니다. 보통, 특정 하이브리드 시스템에서 유한한 시간 간격 내에 무한한 수의 이벤트가 발생할 때 이를 제논 동작이라고 합니다. 공의 에너지가 감소함에 따라, 공은 점점 더 짧은 시간 간격으로 지면과 충돌합니다.
하이브리드 동적 시스템
튀어 오르는 공 모델은 하이브리드 동적 시스템의 한 예입니다. 하이브리드 동적 시스템은 연속 동특성 및 시스템 동특성이 변할 수 있고 상태 값이 급등할 수 있는 이산 천이를 모두 포괄하는 시스템입니다. 튀어 오르는 공의 연속 동특성은 다음 수식으로 지정됩니다.
 
 
여기서  는 중력 가속도이고,
는 중력 가속도이고,  는 공의 위치이며,
는 공의 위치이며,  는 속도입니다. 시스템은 두 개의 연속 상태, 즉 위치
는 속도입니다. 시스템은 두 개의 연속 상태, 즉 위치  와 속도
와 속도  를 가집니다.
를 가집니다.
모델의 하이브리드 시스템 특성은 공과 지면의 충돌 모델링에서 비롯됩니다. 공이 지면과 부분 탄성 충돌을 띤다고 가정할 경우, 충돌 전의 속도  및 충돌 후의 속도
 및 충돌 후의 속도  는 공의 반발 계수
는 공의 반발 계수  와 다음과 같은 관계를 가질 수 있습니다.
와 다음과 같은 관계를 가질 수 있습니다.
 
따라서 튀어 오르는 공은 천이 조건  에서 연속 상태(속도)로 튀어 오릅니다. 다음 이미지는 25m 높이에서 0m/s 속도로 던진 공을 보여줍니다.
에서 연속 상태(속도)로 튀어 오릅니다. 다음 이미지는 25m 높이에서 0m/s 속도로 던진 공을 보여줍니다.

두 개의 Integrator 블록을 사용하여 튀어 오르는 공 모델링하기
sldemo_bounce_two_integrators 모델은 두 개의 Integrator 블록을 사용하여 튀어 오르는 공을 모델링합니다. 왼쪽의 Integrator 블록은 첫 번째 수식을 모델링하는 속도 적분기입니다. 오른쪽의 Integrator 블록은 위치 적분기입니다. 위치 적분기의 블록 파라미터 대화 상자를 열고 블록의 하한이 0인지 확인합니다. 이 조건은 공이 지면 아래로 내려갈 수 없다는 제약 조건을 나타냅니다.
위치 적분기의 상태 포트와 이에 대응되는 비교 결과는 공이 지면에 닿는 시점을 감지하고 두 적분기를 재설정하는 데 사용됩니다. 속도 적분기의 상태 포트는  계산에 사용됩니다.
 계산에 사용됩니다.

시스템의 제논 동작을 관찰하기 위해 솔버 구성 파라미터를 수정합니다.
- 구성 파라미터 대화 상자를 열기 위해 모델링 탭의 설정 아래에서 모델 설정을 클릭합니다. 
- 솔버 창을 선택합니다. 
- 중지 시간을 - 25로 설정합니다.
- 솔버 세부 정보 옆에 있는 화살표를 클릭하여 추가 솔버 파라미터를 표시합니다. 
- 영점교차 옵션에서 알고리즘을 - Nonadaptive로 설정합니다.
모델을 시뮬레이션합니다.
공이 지면에 더 자주 닿으면서 에너지가 감소함에 따라 시뮬레이션이 디폴트 제한이 1000인 연속 영점교차 개수를 초과합니다.
구성 파라미터 대화 상자에서 알고리즘을 Adaptive로 설정합니다. 이 적응형 알고리즘은 채터링 동작을 정교하게 처리합니다. 이제 시스템을 20초 넘게 시뮬레이션할 수 있습니다. 21초와 25초 사이의 상태 채터는 여전히 크며 소프트웨어는 약 20초 지점에서 경고를 발생시킵니다.
Second-Order Integrator 블록을 사용하여 튀어 오르는 공 모델링하기
sldemo_bounce 모델은 단일 Second-Order Integrator 블록을 사용하여 튀어 오르는 공을 모델링합니다. 이 모델에서 두 번째 수식  는 Second-Order Integrator 블록 내에 있습니다. Second-Order Integrator 블록 대화 상자를 열고
는 Second-Order Integrator 블록 내에 있습니다. Second-Order Integrator 블록 대화 상자를 열고  의 하한이 0인지 확인합니다. 특성 탭에서
의 하한이 0인지 확인합니다. 특성 탭에서 Reinitialize dx/dt when x reaches saturation을 선택합니다. 이 파라미터를 사용하면,  가 포화 한도에 도달할 때
가 포화 한도에 도달할 때  (튀어 오르는 공 모델에서
(튀어 오르는 공 모델에서  )를 새 값으로 다시 초기화할 수 있습니다. 따라서 튀어 오르는 공 모델에서 공이 지면에 닿으면 속도가 다른 값, 즉 충돌이 발생한 이후의 속도로 설정될 수 있습니다. 지면과 충돌한 후의 속도를 계산하기 위한 루프를 살펴보십시오. 충돌하기 직전의 공의 속도
)를 새 값으로 다시 초기화할 수 있습니다. 따라서 튀어 오르는 공 모델에서 공이 지면에 닿으면 속도가 다른 값, 즉 충돌이 발생한 이후의 속도로 설정될 수 있습니다. 지면과 충돌한 후의 속도를 계산하기 위한 루프를 살펴보십시오. 충돌하기 직전의 공의 속도  를 포착하기 위해 Second-Order Integrator 블록의
를 포착하기 위해 Second-Order Integrator 블록의  출력 포트와 Memory 블록이 사용됩니다. 그런 다음 다시 튀어 오르는 속도
 출력 포트와 Memory 블록이 사용됩니다. 그런 다음 다시 튀어 오르는 속도  를 계산하기 위해
를 계산하기 위해  가 사용됩니다.
가 사용됩니다.


구성 파라미터 대화 상자의 솔버 창으로 이동합니다.
- 시뮬레이션 시간에서 중지 시간을 - 25로 설정합니다.
- 솔버 세부 정보를 확장합니다. 영점교차 옵션에서 알고리즘을 - Nonadaptive로 설정합니다.
모델을 시뮬레이션합니다.
시뮬레이션에서 아무런 문제가 발생하지 않습니다. 20초 후에 알고리즘을 Adaptive로 설정하지 않아도 과도한 채터가 발생하는 일 없이 모델을 시뮬레이션할 수 있습니다.
튀어 오르는 공을 모델링하는 접근 방식 비교
공이 매번 튀어 오르는 데 필요한 시간을 합산하여, 공이 속도가 0인 상태로 지면에 안착하는 정확한 시간  을 해석적으로 계산할 수 있습니다. 이 시간은 무한 기하 급수의 합이며, 다음과 같이 표현됩니다.
을 해석적으로 계산할 수 있습니다. 이 시간은 무한 기하 급수의 합이며, 다음과 같이 표현됩니다.
 
여기서  과
과  은 각각 위치와 속도의 초기 조건입니다.
은 각각 위치와 속도의 초기 조건입니다.  인 경우 공의 속도와 위치는 모두 0이어야 합니다. 이 Figure는
인 경우 공의 속도와 위치는 모두 0이어야 합니다. 이 Figure는  근방의 두 시뮬레이션의 결과를 모두 보여줍니다. 플롯에서 빨간색 수직 선은 지정된 모델 파라미터에 대한
 근방의 두 시뮬레이션의 결과를 모두 보여줍니다. 플롯에서 빨간색 수직 선은 지정된 모델 파라미터에 대한  입니다.
입니다.  이고
이고  에서 크게 벗어나는 경우 두 모델 모두 정밀하게 동일한 결과를 생성합니다. 두 번째 모델의 자홍색 선만 플롯에 표시됩니다. 하지만
에서 크게 벗어나는 경우 두 모델 모두 정밀하게 동일한 결과를 생성합니다. 두 번째 모델의 자홍색 선만 플롯에 표시됩니다. 하지만  이후 첫 번째 모델의 시뮬레이션 결과는 정확하지 않습니다. 이 플롯에는
 이후 첫 번째 모델의 시뮬레이션 결과는 정확하지 않습니다. 이 플롯에는  의 과도한 채터링 동작이 계속 표시됩니다. 이와 대조적으로, Second-Order Integrator 블록을 사용하는 모델은
의 과도한 채터링 동작이 계속 표시됩니다. 이와 대조적으로, Second-Order Integrator 블록을 사용하는 모델은  이면 정확히 0에 안착하게 됩니다.
이면 정확히 0에 안착하게 됩니다.

두 번째 미분 방정식  는 Second-Order Integrator 블록 내에 있으므로 Second-Order Integrator 블록을 사용하는 모델이 첫 번째 모델에 비해 더 우수한 수치적 특성을 갖습니다. 블록 알고리즘이 두 상태 간의 이러한 관계를 활용하고, 특정 조건에서 채터링 동작을 억제시키는 발견법을 사용할 수 있습니다. 이러한 발견법은 두 상태가 적분 오차와 채터링 동작으로 인해 더 이상 상호 일관되지 않을 때 활성화됩니다. 따라서 시스템에 대한 물리적 지식을 바탕으로, 특정 부류의 제논 모델에 대해 제논 상태로 고착되는 시뮬레이션을 방지할 수 있습니다.
는 Second-Order Integrator 블록 내에 있으므로 Second-Order Integrator 블록을 사용하는 모델이 첫 번째 모델에 비해 더 우수한 수치적 특성을 갖습니다. 블록 알고리즘이 두 상태 간의 이러한 관계를 활용하고, 특정 조건에서 채터링 동작을 억제시키는 발견법을 사용할 수 있습니다. 이러한 발견법은 두 상태가 적분 오차와 채터링 동작으로 인해 더 이상 상호 일관되지 않을 때 활성화됩니다. 따라서 시스템에 대한 물리적 지식을 바탕으로, 특정 부류의 제논 모델에 대해 제논 상태로 고착되는 시뮬레이션을 방지할 수 있습니다.
참고 항목
Integrator | Second-Order Integrator | Memory