본문 바로가기

분류 전체보기324

[DMD-3] DMDior 입출력이 포함된 확장 DMD인 DMDio (DMD with input/output) 알고리즘을 유도해 보았다 (https://pasus.tistory.com/225). 원래 시스템을 식별한 후에 축소 모델 (ROM, reduced order model)로 근사화 하는 순서였다. 이번에는 이와 약간 다른 접근 방법을 사용해 보고자 한다. 바로 축소 모델을 식별하는 방법이다. 이러한 방법을 DMDior (DMDio for reduced order model)라고 한다. 식별하고자 하는 미지의 이산시간 시스템이 식 (1)과 같이 표현된다고 하자. \[ \begin{align} \mathbf{x}_{k+1} &= A \mathbf{x}_k+B \mathbf{u}_k \tag{1} \\ \\ \mathbf{y}_.. 2022. 11. 8.
Frobenius Norm 최소화 문제 행렬 \(A \in \mathbb{R}^{n_1 \times n_2} \), \(B \in \mathbb{R}^{n_3 \times n_4}\), \(Y \in \mathbb{R}^{n_1 \times n_4}\) 가 주어졌을 때, 다음과 같은 프로베니우스 놈(Frobenius norm)을 최소화하는 행렬 \(X \in \mathbb{R}^{n_2 \times n_3}\) 를 구하는 문제를 프로베니우스 놈 최소화 문제라고 한다. \[ X_{opt}= \arg \min_{X} \lVert AXB-Y \rVert_F \tag{1} \] 참고로 어떤 행렬 \(M\) 의 프로베니우스 놈 \( \lVert M \rVert _F\) 는 다음과 같이 정의된다. \[ \lVert M \rVert _F= \sqrt{ t.. 2022. 11. 3.
[DMD-2] DMDio 표준 DMD의 한 가지 제한 사항은 시스템의 운동을 바꾸거나 측정할 수 있는 외부 입력과 출력이 포함된 모델을 생성할 수 없다는 것이다. 이제 표준 DMD 방법을 확장하여 입력과 출력이 포함된 시스템 모델을 식별해 보도록 한다. 이와 같이 입출력이 포함된 확장 DMD를 DMDio (DMD with input/output)이라고 한다. 모델 입력과 출력이 포함된 시스템의 동적 특성을 이해하는 것은 제어기 설계 및 센서 배치 문제의 기본 전제 사항이다. 식별하고자 하는 미지의 이산시간 시스템이 식 (1)과 같이 표현된다고 하자. \[ \begin{align} & \mathbf{x}_{k+1}=A \mathbf{x}_k+B \mathbf{u}_k \tag{1} \\ \\ & \mathbf{y}_k=C \mat.. 2022. 10. 31.
[DMD-1] 동적모드분해 (Dynamic Mode Decomposition) 전통적인 제어이론은 시스템의 수학적인 운동 모델을 요구한다. 운동 모델은 물리 법칙으로부터 해석적으로 유도할 수 있지만 입출력 데이터에 기반해서 수치적으로 얻을 수도 있다. 수치 데이터로부터 시스템의 운동 모델을 구하는 것을 시스템 식별(system identification) 또는 모델 식별이라고 한다. 시스템 식별 방법에는 ERA, OKID, QMC등 몇 가지가 있는데, 그 중 하나가 동적모드분해 (DMD, dynamic mode decomposition)이다. DMD는 수치 시뮬레이션 또는 스냅샷(snapshot) 측정 데이터를 사용하여 선형 시스템의 수학적 모델을 식별하고 동적 특성을 추출하는 기법이다. 식별하고자 하는 미지의 이산시간 시스템이 식 (1)과 같이 표현된다고 하자. 일단 자율 시스템.. 2022. 10. 26.
전기 항공기의 항속시간(Endurance)과 항속거리(Range) 배터리를 동력원으로 하는 전기 항공기(electric aircraft)의 경우에는 비행시 항공기의 무게 변화가 없는 것이 특징이다. 배터리의 에너지 용량을 \(B\) 라고 하면 전력(power) \(P_B\) 는 다음과 같다. \[ \frac{dB}{dt}= -P_B \tag{1} \] 전력이 동력 시스템에 전달되는 과정의 손실을 고려하여 동력 효율 \(\eta_e\) 를 이용하면 배터리의 출력 전력 \(P_e\) 는 다음과 같이 계산할 수 있다. 동력 효율은 모터 효율과 프로펠러 효율을 따로 구분하지 않은 전체 효율로 보면 된다. \[ P_e = \eta_e P_B \] 비행에 필요한 동력(power)을 전적으로 배터리가 제공한다면 \(P_e=P_{req}\) 가 되어야 한다. 여기서 \(P_{req}.. 2022. 10. 3.
프로펠러기의 항속시간(Endurance)과 항속거리(Range) 연료를 사용하는 항공기의 항속시간(endurance)이나 항속거리(range)를 계산할 때는 연료 소모에 따른 항공기의 무게 감소를 고려해야 한다. 시간당 또는 거리당 연료소모량을 알아야 하는데, 이와 관련하여 터보프롭이나 피스톤 엔진의 경우 항공기 엔진 제작사에 제공하는 비연료소모량(sfc, specific fuel consumption)을 이용하면 된다. 프로펠러 항공기에서 사용하는 비연료소모량(sfc) \(c_p\) 는 동력(power)당 단위시간 동안 소모된 연료량으로 정의하며 수식으로는 다음과 같다. \[ c_p= \frac{ \dot{W}_f}{P_p}= \frac{-\dot{W}}{P_p} \tag{1} \] 여기서 \(W\) 는 항공기 무게, \(P_p\) 는 엔진 동력, \(\dot{W}.. 2022. 10. 3.
제트기의 항속시간(Endurance)과 항속거리(Range) 연료를 사용하는 항공기의 항속시간(endurance)이나 항속거리(range)를 계산할 때는 연료 소모에 따른 항공기의 무게 감소를 고려해야 한다. 시간당 또는 거리당 연료소모량을 알아야 하는데, 이와 관련하여 제트 엔진의 경우 항공기 엔진 제작사에서 제공하는 추력비연료소모량(tsfc, thrust specific fuel consumption)을 이용하면 된다. 제트기에서 사용하는 추력비연료소모량(tsfc) \(c_J\) 는 추력당 단위시간 동안 소모된 연료량으로 정의하며 수식으로는 다음과 같다. \[ c_J= \frac{ \dot{W}_f}{T}= \frac{-\dot{W}}{T} \] 여기서 \(W\) 는 항공기 무게, \(T\) 는 추력, \(\dot{W}_f= \frac{dW_f}{dt}\) 는.. 2022. 10. 2.
리야프노프 안정성 (Lyapunov stability) 이론 시불변 시스템 \(\dot{\mathbf{x}} = \mathbf{f}(\mathbf{x})\) 의 안정성에 대한 정의에 이어서 이번에는 시스템의 안정성을 판별할 수 있는 이론에 대해서 알아보겠다. 시스템이 선형 시불변이라면 시스템의 고윳값(eigenvalue)을 이용하여 쉽게 안정성을 판별할 수 있다. 시스템이 비선형일 경우에도 평형상태에 대해서 선형화를 한 후에 평형상태 근방에서 로컬 안정성을 판별할 수 있을 것이다. 이와 같은 안정성 판별 방법을 간접방법(indirect method)이라고 한다. 그러나 선형화를 사용하여 비선형 시스템의 로컬 안정성을 파악할 수 없는 상황이 있을 수 있다. 또한 선형화는 그 속성상 비선형 시스템의 전역(global) 안정성에 대해서는 알려줄 수가 없다. 물론 비선형.. 2022. 9. 30.
리야프노프 안정성 (Lyapunov stability) 개념 수학에서 자율 미분방정식(autonomous differential equation) 또는 자율 시스템은 명시적으로 독립변수의 함수가 아닌 미분방정식 또는 시스템을 말한다. 독립변수가 시간이라면 시불변(time-invariant) 시스템이라고도 한다. 독립변수가 시간인 비선형 비자율 미분방정식은 \(\dot{\mathbf{x}}=\mathbf{f}(\mathbf{x}, t)\) 로, 자율 시스템 또는 시불변 시스템은 \(\dot{\mathbf{x}}=\mathbf{f}(\mathbf{x})\) 로 표기한다. 어떤 시불변 시스템 \(\dot{\mathbf{x}}=\mathbf{f}(\mathbf{x})\) 의 한 평형상태(equilibrium state)를 \(\mathbf{x}_e\) 라고 하자. 평형상.. 2022. 9. 27.
Mac M1 Pro 에 Tensorflow, Gym, Mujoco 설치하기 Mac M1 Pro에 Tensorflow 를 설치하면서 애를 먹은터라 다음을 위하여 기록해 놓는다. 1. Anaconda 설치하기 (M1을 지원하기 시작함) 2. 가상환경 (이름을 tf 로 함) 만들기 conda create -n tf anaconda 3. 가상환경으로 이동 후, 텐서플로 설치 전에 pip 부터 업그레이드 pip install --upgrade pip 4. 가상환경에서 텐서플로 설치 conda install -c apple tensorflow-deps pip install tensorflow-macos pip install tensorflow-metal 4. 에러 나오면 numpy, scipy 업그레이드 (이 부분이 중요) pip install numpy –-upgrade pip inst.. 2022. 9. 19.