Main Content

튀어 오르는 공 시뮬레이션

이 예제에서는 두 개의 튀어 오르는 공 Simulink® 모델을 사용하여 제논 동작으로 하이브리드 동적 시스템을 모델링하는 여러 접근 방식을 보여줍니다. 이 예제를 통해 각 접근 방식의 이점도 알 수 있습니다.

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

하이브리드 동적 시스템

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

$$
\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$에서 연속 상태(속도)로 튀어 오릅니다. 이 Figure는 25m 높이에서 0m/s 속도로 던진 공을 표시합니다.

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

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

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

시스템의 제논 동작을 관찰하기 위해 구성 파라미터 대화 상자의 솔버 창으로 이동합니다. 시뮬레이션 시간에서 중지 시간을 25로 설정합니다.

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

  • 솔버 세부 정보를 확장하여 Zero-corssing options에서 알고리즘Nonadaptive로 설정합니다.

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

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

구성 파라미터 대화 상자에서 솔버 > 영점교차 옵션으로 이동합니다. 알고리즘Adaptive로 설정합니다. 이 알고리즘은 채터링 동작을 정교하게 처리합니다. 이제 시스템을 20초 넘게 시뮬레이션할 수 있습니다. 하지만 21초와 25초 사이에 상태 채터가 발생하고 약 20초 지점에서 모델에 강한 채터링이 발생한다는 Simulink 경고가 표시됩니다.

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

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

참고 항목

| |

관련 항목