Main Content

튀어 오르는 공 시뮬레이션

이 예제에서는 두 개의 튀어 오르는 공 모델을 사용하여 제논 동작으로 하이브리드 동적 시스템을 모델링하는 여러 접근 방식을 보여줍니다. 보통, 특정 하이브리드 시스템에서 유한한 시간 간격 내에 무한한 수의 이벤트가 발생할 때 이를 제논 동작이라고 합니다. 공의 에너지가 감소함에 따라, 공은 점점 더 짧은 시간 간격으로 지면과 충돌합니다.

하이브리드 동적 시스템

튀어 오르는 공 모델은 하이브리드 동적 시스템의 한 예입니다. 하이브리드 동적 시스템은 연속 동특성 및 시스템 동특성이 변할 수 있고 상태 값이 급등할 수 있는 이산 천이를 모두 포괄하는 시스템입니다. 튀어 오르는 공의 연속 동특성은 다음 수식으로 지정됩니다.

$$
\frac{d v}{d t} = -g,
$$

$$
\frac{d x}{d t} = v,
$$

여기서 $g$는 중력 가속도이고, $x(t)$는 공의 위치이며, $v(t)$는 속도입니다. 시스템은 두 개의 연속 상태, 즉 위치 $x$와 속도 $v$를 가집니다.

모델의 하이브리드 시스템 특성은 공과 지면의 충돌 모델링에서 비롯됩니다. 공이 지면과 부분 탄성 충돌을 띤다고 가정할 경우, 충돌 전의 속도 $v^-$ 및 충돌 후의 속도 $v^+$는 공의 반발 계수 $\kappa$와 다음과 같은 관계를 가질 수 있습니다.

$$
v^+ = -\kappa v^-, \qquad x = 0
$$

따라서 튀어 오르는 공은 천이 조건 $x=0$에서 연속 상태(속도)로 튀어 오릅니다. 다음 이미지는 25m 높이에서 0m/s 속도로 던진 공을 보여줍니다.

두 개의 Integrator 블록을 사용하여 튀어 오르는 공 모델링하기

sldemo_bounce_two_integrators 모델은 두 개의 Integrator 블록을 사용하여 튀어 오르는 공을 모델링합니다. 왼쪽의 Integrator 블록은 첫 번째 수식을 모델링하는 속도 적분기입니다. 오른쪽의 Integrator 블록은 위치 적분기입니다. 위치 적분기의 블록 파라미터 대화 상자를 열고 블록의 하한이 0인지 확인합니다. 이 조건은 공이 지면 아래로 내려갈 수 없다는 제약 조건을 나타냅니다.

위치 적분기의 상태 포트와 이에 대응되는 비교 결과는 공이 지면에 닿는 시점을 감지하고 두 적분기를 재설정하는 데 사용됩니다. 속도 적분기의 상태 포트는 $v^+$ 계산에 사용됩니다.

시스템의 제논 동작을 관찰하기 위해 솔버 구성 파라미터를 수정합니다.

  1. 구성 파라미터 대화 상자를 열기 위해 모델링 탭의 설정 아래에서 모델 설정을 클릭합니다.

  2. 솔버 창을 선택합니다.

  3. 중지 시간25로 설정합니다.

  4. 솔버 세부 정보 옆에 있는 화살표를 클릭하여 추가 솔버 파라미터를 표시합니다.

  5. 영점교차 옵션에서 알고리즘Nonadaptive로 설정합니다.

모델을 시뮬레이션합니다.

공이 지면에 더 자주 닿으면서 에너지가 감소함에 따라 시뮬레이션이 디폴트 제한이 1000연속 영점교차 개수를 초과합니다.

구성 파라미터 대화 상자에서 알고리즘Adaptive로 설정합니다. 이 적응형 알고리즘은 채터링 동작을 정교하게 처리합니다. 이제 시스템을 20초 넘게 시뮬레이션할 수 있습니다. 21초와 25초 사이의 상태 채터는 여전히 크며 소프트웨어는 약 20초 지점에서 경고를 발생시킵니다.

Second-Order Integrator 블록을 사용하여 튀어 오르는 공 모델링하기

sldemo_bounce 모델은 단일 Second-Order Integrator 블록을 사용하여 튀어 오르는 공을 모델링합니다. 이 모델에서 두 번째 수식 $dx/dt=v$는 Second-Order Integrator 블록 내에 있습니다. Second-Order Integrator 블록 대화 상자를 열고 $x$의 하한이 0인지 확인합니다. 특성 탭에서 Reinitialize dx/dt when x reaches saturation을 선택합니다. 이 파라미터를 사용하면, $x$가 포화 한도에 도달할 때 $dx/dt$(튀어 오르는 공 모델에서 $v$)를 새 값으로 다시 초기화할 수 있습니다. 따라서 튀어 오르는 공 모델에서 공이 지면에 닿으면 속도가 다른 값, 즉 충돌이 발생한 이후의 속도로 설정될 수 있습니다. 지면과 충돌한 후의 속도를 계산하기 위한 루프를 살펴보십시오. 충돌하기 직전의 공의 속도 $v^-$를 포착하기 위해 Second-Order Integrator 블록의 $dx/dt$ 출력 포트와 Memory 블록이 사용됩니다. 그런 다음 다시 튀어 오르는 속도 $v^+$를 계산하기 위해 $v^-$가 사용됩니다.

구성 파라미터 대화 상자의 솔버 창으로 이동합니다.

  • 시뮬레이션 시간에서 중지 시간25로 설정합니다.

  • 솔버 세부 정보를 확장합니다. 영점교차 옵션에서 알고리즘Nonadaptive로 설정합니다.

모델을 시뮬레이션합니다.

시뮬레이션에서 아무런 문제가 발생하지 않습니다. 20초 후에 알고리즘Adaptive로 설정하지 않아도 과도한 채터가 발생하는 일 없이 모델을 시뮬레이션할 수 있습니다.

튀어 오르는 공을 모델링하는 접근 방식 비교

공이 매번 튀어 오르는 데 필요한 시간을 합산하여, 공이 속도가 0인 상태로 지면에 안착하는 정확한 시간 $t^*$을 해석적으로 계산할 수 있습니다. 이 시간은 무한 기하 급수의 합이며, 다음과 같이 표현됩니다.

$$ t^* = \frac{1}{g}\left(v_0+ v_1\left(\frac{1+\kappa}{1-\kappa}\right)
\right),\qquad v_1=\sqrt{v_0^2+2gx_0}, $$

여기서 $x_0$$v_0$은 각각 위치와 속도의 초기 조건입니다. $t>t^*$인 경우 공의 속도와 위치는 모두 0이어야 합니다. 이 Figure는 $t^*$ 근방의 두 시뮬레이션의 결과를 모두 보여줍니다. 플롯에서 빨간색 수직 선은 지정된 모델 파라미터에 대한 $t^*$입니다. $t<t^*$이고 $t^*$에서 크게 벗어나는 경우 두 모델 모두 정밀하게 동일한 결과를 생성합니다. 두 번째 모델의 자홍색 선만 플롯에 표시됩니다. 하지만 $t^*$ 이후 첫 번째 모델의 시뮬레이션 결과는 정확하지 않습니다. 이 플롯에는 $t>t^*$의 과도한 채터링 동작이 계속 표시됩니다. 이와 대조적으로, Second-Order Integrator 블록을 사용하는 모델은 $t > t^*$이면 정확히 0에 안착하게 됩니다.

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

참고 항목

| |

관련 항목