본문 바로가기

분류 전체보기73

진동 모드 해석 복소수는 실수부와 허수부를 갖는 수체계다. 실수부를 \(x\)축에, 허수부를 \(y\)축에 표시하면 복소수를 복소 평면상에 표시할 수 있다. 복소수는 보통 실수부와 허수부로 표현하지만 다음과 같이 크기와 위상각으로도 표현할 수 있다. \[ \begin{align} z &=x+jy \\ \\ &= r \cos \theta +j r \sin \theta \end{align} \] 여기서 \(r\)은 복소수의 크기, \(\theta\)는 위상각이며 각각 다음과 같이 계산할 수 있다. \[ r= \sqrt{x^2+y^2 }, \ \ \ \theta =\tan^{-1} \left( \frac{y}{x} \right) \] 오일러 공식(Euler formula)에 의하면 다음 식이 성립하므로, \[ e^{j \th.. 2021. 1. 26.
운동 모드 해석 고유값(eigen value)과 고유벡터(eigen vector)의 개념은 여러 분야에서 사용되고 있다. 운동 모드를 해석할 때도 사용되는데 이에 대해서 알아보자. 다음과 같이 상태변수의 미분 방정식으로 표현되는 운동 방정식이 있다고 하자. \[ \dot{\mathbf{x}}= A \mathbf{x} \tag{1} \] 여기서 \(\mathbf{x}(t)\)는 상태변수로서 성분이 \(n\)개인 벡터다. \(A\)는 성분이 모두 실수 값인 \(n \times n\) 행렬이다. 위 식은 \(n\)개의 스칼라 미분 방정식이 서로 연결된 연립 미분 방정식으로서 외부 입력이 작용하지 않는 다양한 선형 운동 방정식을 표현할 수 있는 범용 식이다. 식 (1)을 상태공간 방정식(state-space equation)이.. 2021. 1. 26.
급속탐색 랜덤트리 (RRT, rapidly-exploring random tree) 경로계획(path planning)은 자율자동차, 로봇, 무인 항공기, 우주탐사 등과 같은 많은 분야에서 필수적인 요구사항이다. 경로계획법에는 여러 가지 방법이 제안되어 있는데, 최근 가장 인기를 모으는 방법으로는 RRT(rapidly exploring random tree)가 있다. RRT는 샘플링 기반 경로계획법의 하나이다. 샘플링 기반 경로계획법은 형상공간을 격자(grid)로 분할하지 않고, 랜덤(random)하게 샘플점을 여러 개 생성하여 점점이(point-wise) 공간을 탐색하여 경로를 찾아내는 방법이다. 즉 형상공간(configuration space) 내에서 샘플점을 무작위로 충분한 수만큼 발생시키고 그 샘플점이, 혹은 두 개의 샘플점을 잇는 선이 장애물과 충돌하는 지 여부를 확인하여 자유.. 2021. 1. 21.
[KKT 조건-2] KKT 조건과 적용 예제 등식과 부등식 제약조건이 있는 일반적인 최적화 문제에 대해서 \[ \begin{align} & p^\star = \min_{\mathbf{x}} f(\mathbf{x}) \\ \\ \mbox{subject to : } \ & g_i (\mathbf{x}) \le 0, \ \ \ i=1,...,m \\ \\ \ & h_j (\mathbf{x}) = 0, \ \ \ j=1,...,k \end{align} \] KKT 조건(Karush-Kuhn-Tucker conditions)은 다음과 같다. \[ \begin{align} & \mbox{1. stationarity: } \ \nabla_{\mathbf{x}} f(\mathbf{x} ) + \sum_{i=1}^m \mu_i \nabla_{\mathbf{x}} .. 2021. 1. 18.
[KKT 조건 - 1] 등식과 부등식 제약조건이 있는 최적화 문제 제약조건이 없는 일반적인 최적화 문제는 다음과 같다. \[ p^\star= \min_{\mathbf{x}}⁡ f(\mathbf{x}) \] 여기서 \(\mathbf{x}\)는 최적화 변수이고, \(f(\mathbf{x})\)는 목적함수(objective function)이다. \(\mathbf{x}^\star\)가 로컬(local) 최소점이 되기 위한 필요조건(necessary condition)은 \(\mathbf{x}=\mathbf{x}^\star\)에서 \(f\)의 그래디언트(gradient)가 \(0\)이 되는 것이다. \[ \nabla_{\mathbf{x}} f(\mathbf{x}^\star )=0 \] 등식 제약조건이 있는 일반적인 최적화 문제는 다음과 같다. \[ \begin{align} &.. 2021. 1. 14.
오일러-라그랑지 방정식과 브라키스토크론 문제의 풀이 상단 지점 \((0,0)\)에 정지해 있던 물체가 경로 \(y(x)\)를 따라 마찰없이 중력의 영향으로만 미끄러져서 하단 지점 \((x_f,y_f)\)까지 도착하는데 걸리는 시간은 다음과 같이 계산된다. \[ t= \int_0^{x_f} \frac{ \sqrt{ 1+ \left( \frac{dy}{dx} \right)^2 } }{ \sqrt{2gy} } \ dx \] 여기서 시간 \(t\)를 최소로 만드는 경로 함수 \(y(x)\)를 계산하는 것이 브라키스토크론(Brachistochrone) 문제다. 시간 \(t\)는 함수 \(y(x)\)를 변수로 하는 functional이다. 이 값을 최소화하는 함수 \(y(x)\)를 찾는 문제이므로 변분법의 문제이다. 다음과 같은 functional \(F(y, y^.. 2021. 1. 13.
변분법과 오일러-라그랑지 방정식 오일러-라그랑지 방정식(Euler-Lagrange equation)은 어떤 함수와 그 도함수(derivative)의 함수인 functional의 값을 최대화 또는 최소화하는 함수를 유도하기 위한 미분 방정식이다. 수식으로 살펴보자. 다음과 같은 functional \(F(y, y^\prime)\)가 있다고 하자. \[ F(y, y^\prime)= \int_{x_0}^{x_f} h(y(x), y^\prime (x)) \ dx \] 여기서 \(y(x)\)는 \(x\)의 함수이고, \(y^\prime (x)= \frac{dy}{dx}\)는 \(y(x)\)의 도함수이며, 적분 구간의 양쪽 경계 \(y(x_0)\)와 \(y(x_f)\)는 고정된 값으로 가정한다. Functional \(F(y, y\prime)\).. 2021. 1. 12.
기본 궤도 미분 방정식을 풀기 위한 조건 기본 궤도 미분 방정식을 다음과 같이 유도한 바 있다. \[ \frac{ ^id^2 \vec{r} }{ dt^2 } + \frac{ \mu }{ r^3 } \vec{r} = 0 \tag{1} \] 여기서 \(\mu =GM\)은 중력 파라미터, \(\vec{r}\)은 관성 좌표계 \(\{i\}\)의 원점에서 질점 \(m\)까지의 위치 벡터, \(r\)은 위치 벡터의 크기, 즉 거리다. 위 식을 유도하는데 다음 3가지 가정을 전제로 했다. 먼저 질량 \(m\)은 질량 M에 비해서 무시할 수 있을 정도로 작다. 둘째, 질점 \(M\)은 말 그대로 질점이거나 또는 질점으로 간주할 수 있는 완전한 원구체이며 만유인력은 원구체의 중심을 향한다. 셋째, 질점 \(M\)과 \(m\)사이에 작용하는 힘은 만유인력 밖에 .. 2021. 1. 12.
더 단순화된 이체문제 이체문제의 운동 방정식을 다음과 같이 유도한 바 있다. \[ \frac{ ^id^2 \vec{r} }{dt^2 } + \frac{\mu}{r^3} \vec{r} = 0 \tag{1} \] 여기서 \(\mu=G(M+m)\)이다. 이 식은 질점 \(M\)에 대한 질점 \(m\)의 상대적인 운동을 표현한 식이다. 두 질점의 질량 중심점은 벡터 \(\vec{r}_c\)가 가리키는 점으로 다음 식으로 주어진다. \[ \vec{r}_c = \frac{ M\vec{r}_M +m\vec{r}_m }{ M+m } \tag{2} \] 이제 이체문제를 더 단순화시키고자 한다. 식 (1)에서 한 질점의 질량이 다른 질점의 질량보다도 압도적으로 크다고 가정한다. \[ M≫m \tag{3} \] 그러면 \(M+m \approx .. 2021. 1. 12.
GradientTape로 간단한 CNN 학습하기 Sequential API와 Functional API 그리고 Model Subclassing API를 이용하여 CNN을 구현해 보았다. 이번에는 model.compile 로 모델을 컴파일하고 model.fit 로 학습하는 대신에 모델에 손실함수와 옵티마이저를 직접 엮어 넣고, tf.GradientTape 를 사용하여 CNN을 학습해 보도록 하겠다. 전과 똑같이 데이터셋은 Fashion_MNIST이고 CNN모델도 전과 똑같으며 Model Subclassing API로 구축한 것이다. model.compile 로 모델을 컴파일하는 부분은 다음과 같았다. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accu.. 2021. 1. 11.