본문 바로가기

전체 글216

연속 방정식 (continuity equation) 공력(aerodynamic forces)의 측정과 예측을 위해서는 유동장(flow field)에 대한 지식이 필요하다. 유동장은 압력, 밀도, 온도, 속도 등4개의 파라미터로 정의할 수 있는데 모두 위치와 시간의 함수이다. 이와 관련된 지배 방정식은 연속 방정식, Navier-Stokes 방정식, 에너지 방정식이며 각각은 질량 보존 법칙, 뉴톤 제2법칙, 그리고 에너지 보존 법칙으로부터 유도할 수 있다. 먼저 연속 방정식(continuity equation)을 유도해보자. 공간상에 고정된 위치에 있는 미소(infinitesimal) 체적이 있다고 가정한다. 질량 보존의 법칙에 의하면 이 미소체적에서 빠져나가는 유량과 들어오는 유량의 차이는 미소체적 내부의 공기 질량의 감소량과 같아야 한다. 위 그림에서 .. 2021. 8. 9.
해밀톤 방정식 (Hamilton’s Equation) 라그랑지 방정식(Lagrange's equation)은 \(n\) 개의 2차 미분 방정식으로 구성되어 있다. 이 방정식을 \(2n\) 개의 1차 미분 방정식으로 재 구성한 것이 해밀톤 방정식(Hamilton's equation)이다. 먼저 일반화된 운동량(generalized momentum)을 다음과 같이 정의한다. \[ p_i= \frac{\partial L}{\partial \dot{q_i}}, \ \ \ \ \ i=1, 2, ... , n \tag{1} \] 이어서 해밀토니안 함수(Hamiltonian function)를 다음과 같이 정의하고, \[ H= \sum_{i=1}^n p_i \dot{q}_i-L(\mathbf{q}, \dot{\mathbf{q}}, t) \tag{2} \] 일반화된 속도.. 2021. 8. 8.
라그랑지 방정식 (Lagrange’s Equation) 라그랑지 방정식(Lagrange's equation)과 해밀톤 방정식(Hamilton's equation)은 해석 동역학(analytical dynamics)의 근간을 이룬다. 라그랑지 방정식은 해밀톤의 원리(Hamilton's principle)를 일반화 좌표로 표현한 2차 미분 방정식이며, 해밀톤 방정식은 라그랑지 방정식으로부터 유도할 수 있는 1차 미분 방정식이다. \(N\) 개의 질점으로 이루어진 홀로노믹(holonomic) 시스템이 있다고 하자. 그러면 \(N\) 개의 질점의 위치벡터를 일반화 좌표 \(q_i\) 를 이용하여 표현하면 다음과 같다. \[ \mathbf{r}_k= \mathbf{r}_k (q_1, q_2, ... , q_n, t), \ \ \ \ \ k=1, 2, ... ,N \t.. 2021. 8. 8.
일반화 좌표 (Generalized Coordinate) \(N\) 개의 질점으로 이루어진 시스템이 있다고 하자. 각 질점의 위치는 \(N\) 개의 위치 벡터 \(\mathbf{r}_k=\mathbf{r}_k (x_k, y_k, z_k ), \ \ k=1,...,N\) 으로 표현할 수 있다. 여기서 \(x_k, y_k, z_k\) 는 \(k\) 번째 질점의 위치를 직교 좌표계(Cartesian coordinate)로 표시한 좌표다. 질점이 운동할 경우 질점의 각 위치를 시간의 함수 \(x_k (t), y_k (t), z_k (t)\) 로 표현하면 된다. 그러면 3차원 공간상에 \(N\) 개의 운동 궤적이 나타날 것이다. 그런데 만약 \(3N\) 차원 공간이 있다면 \(N\) 개의 질점으로 이루어진 시스템의 운동을 한 점의 운동으로 표현할 수 있지 않을까. 이와.. 2021. 8. 8.
해밀톤의 원리 (Hamilton’s Principle) \(N\) 개의 질점으로 이루어진 시스템이 있다고 하자. 각 질점에 작용하는 합력을 \(\mathbf{R}_k\) 이라고 할 때 시스템이 정적 평형 상태에 있다면 \(\mathbf{R}_k=0\) 이다. 그러면 합력이 질점에 하는 가상일(virtual work)은 \(\mathbf{R}_k \cdot \delta \mathbf{r}_k = 0 \) 이다. 전체 시스템에 대한 가상일은 각 질점의 가상일을 모두 합하면 된다. 전체 가상일도 \(0\) 이다. \[ \delta W= \sum_{k=1}^N \mathbf{R}_k \cdot \delta \mathbf{r}_k = 0 \tag{1} \] 이제 합력을 외력 \(\mathbf{F}_k\) 와 구속력 \(\mathbf{F}_k^\prime\) 의 합으로.. 2021. 8. 4.
홀로노믹 구속 (Holonomic Constraint)과 가상 변위 어떤 시스템을 구성하고 있는 질점들이 자유롭게 움직이지 못하고 운동학적으로 제약을 받고 있다면 그 시스템은 구속(constraint)되어 있다고 한다. 그리고 운동학적인 제약사항을 위치, 속도, 시간 등의 함수로 표현한 것을 구속조건 식이라고 한다. 예를 들면 3차원 공간 상에 두 질점이 길이가 \(L\) 인 막대기로 연결되어 있을 경우, 두 질점은 자유롭게 운동하지 못하고 다음 구속조건 식을 만족하면서 운동해야 한다. \[ (x_1-x_2 )^2+(y_1-y_2 )^2+(z_1-z_2 )^2=L^2 \tag{1} \] 구속조건은 구속조건식의 형태에 따라 크게 홀로노믹 구속(holonomic constraint)과 비홀로노믹 구속(nonholonomic constraint)으로 분류된다. 홀로노믹 구속은.. 2021. 8. 4.
포텐셜 에너지 (Potential Energy) 직교 좌표계(Cartesian frame)에서 어떤 질점 \(m\) 에 힘 \(\mathbf{F}\) 가 가해지고 이로 인하여 아주 짧은 시간 \(dt\) 동안에 질점의 위치가 \(\mathbf{r}\) 에서 \(\mathbf{r}+d\mathbf{r}\) 로 변화했을 때, 힘 \(\mathbf{F}\) 가 한 일(work)은 다음과 같이 정의된다. \[ dW = \mathbf{F} \cdot d\mathbf{r} \] 여기서 \(d\mathbf{r}\) 을 극소 변위(infinitesimal displacement)라고 하고 \(dW\) 를 극소 일이라고 한다. 뉴턴 운동 법칙에 의해서 \(\mathbf{F}=m \ddot{\mathbf{r}}\) 이므로 위 식에 대입하면 일 \(dW\) 는 다음과 같.. 2021. 8. 3.
TensorFlow2에서 1차, 2차 편미분 계산 자동으로 미분을 계산하려면 Tensorflow는 순방향 패스 과정에서 어떤 순서로 어떤 연산을 했는지 기억해야 한다. 그런 다음, 역방향 패스 중에 이 연산 목록을 역순으로 이동해 가며 미분(derivative)을 계산한다. Tensorflow는 자동으로 미분을 계산하기 위해서 tf.GradientTape API를 제공한다. Tensorflow는 tf.GradientTape의 컨텍스트 내에서 실행 된 관련 연산을 '테이프'에 '기록'한다. 그런 다음 해당 테이프를 거꾸로 돌려서 기록된 연산의 미분을 계산한다. tf.Variable로 생성된 변수에 대해서만 미분할 수 있는데 상수인 경우에도 watch() 메쏘드를 이용하면 미분을 계산할 수 있다. 예를 들어서 \(y(x,t)=x^3+2t\) 를 \(x\) .. 2021. 7. 25.
[PF-2] SIS에서 파티클 필터로 전체 조건부 확률밀도함수 \(p(\mathbf{x}_{0:t} | \mathbf{z}_{0:t}, \mathbf{u}_{0:t-1})\) 를 순차 샘플링 \(\mathbf{x}_{0:t}^{(i) }\) 로 다음과 같이 근사화 할 수 있었다. \[ p(\mathbf{x}_{0:t} | \mathbf{z}_{0:t}, \mathbf{u}_{0:t-1}) \approx \sum_{i=1}^N w_t^{(i)} \delta ( \mathbf{x}_{0:t} - \mathbf{x}_{0:t}^{(i)} ) \tag{1} \] 베이즈 필터는 상태변수 \(\mathbf{x}_t\) 의 조건부 확률밀도함수인 사후 확률밀도함수 \(p(\mathbf{x}_t | \mathbf{z}_{0:t}, \mathbf{u}_{0:.. 2021. 7. 11.
Tensorflow2로 만든 DDPG 코드: BipedalWalker-v3 OpenAI Gym에서 제공하는 BipedalWalker-v3 환경을 대상으로 DDPG 알고리즘을 Tensorflow2 코드로 구현하였다. BipedalWalker-v3는 DDPG로 학습하기에는 난해한 문제로 알려져 있다. 하이퍼파라미터에 매우 민감하기 때문이다. 학습결과는 다음과 같다. 500회의 에피소드로 학습한 결과다. 추세를 볼 때 그 이상 학습한다면 더 좋은 결과를 얻을 수도 있을 것 같다. 학습하기 전 워커의 움직임은 다음과 같다. 아래는 학습 중간에 얻은 결과다. 다음은 학습이 끝난 후 워커의 움직임이다. DDPG 코드는 액터-크리틱 신경망을 구현하고 학습시키기 위한 ddpg_learn.py, 이를 실행시키기 위한 ddpg_main.py, 학습을 마친 신경망 파라미터를 읽어와 에이전트를 구동.. 2021. 7. 9.