[수학] Matrix Exponential 미분/적분
·
수학 Mathematics
선형대수와 미분방정식에서 중요하게 쓰이는 것 중 하나는 exponential matrix이다. $\dot{x}=Ax\text{, where }A\in \mathbb{R}^{n}$로 된 문제에서 A가 matrix이기 때문에 이에 대한 솔루션을 작성할 때 $x= e^{At}x_{0}$이다. 참고로 이 역시 A가 constant matrix이기 때문에 가능한 것이고, 상수가 아닌 시간에 따라 변하는 경우에는 다음과 같이 표현한다. $x(t)=e^{\int_{0}^{t}A(s)ds}x(0)$ 여기에서는 A가 상수인 경우만 생각하도록 한다. $e^{At}$ 이와 같이 exponential의 지수로 matrix가 들어가는 것을 matrix exponential이라고 한다. 그러면 solution을 구할 때 $e^{..
[MATLAB] plot 그릴 때 마커 간격 설정하기 (230309 수정)
·
프로그래밍 Programming/매트랩 MATLAB
매트랩과 matplotlib에서 둘 다 그래프를 그려보았고 사실 matplotlib이 MATLAB을 무료로 사용하고자 하는 목적에서 나왔기 때문에 기능이 비슷한 점이 많다. 그럼에도 불구하고 내가 발견한 차이점이 하나 있는데, 그것은 매트랩에서는 plot의 마커 간격을 설정할 수 없다는 점이다. matplotlib에서는 다음과 같이 코드를 작성하면 5개 간격으로 marker를 그려준다. plot(x,y,marker='o',markevery=5) 그런데 MATLAB에서는 아무리 검색해도 이러한 기능이 없었다. 그래서 임시방편으로 만든 방법을 여기에 기록하고자 한다. MATLAB에서는 plot을 그릴 때 마음과 같이 할 수 있다. x = 0:pi/16:2*pi ; y = sin(x) ; figure ; pl..
[에러기록] overleaf에서 kotex package로 인한 지속적인 컴파일 에러
·
기타/논문작성 Writing
종종 overleaf를 즐겨쓰고 있는데 최근에 쓰려고 봤더니 이상하게도 지속적인 컴파일 에러가 발생하였다. 다른 문서들도 보니 일부 문서들이 컴파일 에러가 발생하는 것을 발견하였다. 분명 이전까지만 해도 멀쩡하게 작동했는데 왜 그런지 알 수가 없어서 고민을 하다가 발견하게 된 사실을 기록한다. 참고로 지속적으로 컴파일 에러가 발생하면 이쪽을 먼저 찾아보는 게 좋다. https://www.overleaf.com/learn/how-to/Why_do_I_keep_getting_the_compile_timeout_error_message%3F Why do I keep getting the compile timeout error message? - Overleaf, Online LaTeX Editor An onl..
[동역학] Lagrange's Equation (1)
·
기계공학 Mechanical engineering/동역학 Dynamics
동역학에서는 기본적으로 Newton's law를 이용해서 운동방정식을 유도한다. 이 방식은 한 물체에 대하여 작용하는 힘과 가속도 간의 연관성을 통해서 운동을 기술하는 것이다. 이렇게 운동방정식을 유도하지 않고 특정 경우에는 Lagrange's equation을 통해 운동을 기술하는 것이 더 나을 때가 있다. 그 상황을 위해 이 글을 정리하고자 한다. 참고문헌은 아래에 적어두었다. Lagrange's Equation으로 바로 넘어가기 전에 알고 있어야하는 개념들이 있다. 1. Degree of freedom 시스템의 자유도(degree of freedom)은 시스템을 묘사하기 위해 필요한 coordinate의 수에, 그 coordinate로 기술한 constraints의 수를 뺀 것이다. 즉, const..
[제어] Lyapunov stability theorem 증명
·
연구 Research/제어 Control
조금이라도 제어에 대해 공부한 사람이라면 한 번쯤 들어볼 법한, Lyapunov stability theorem. 이 Lyapunov stability theorem에 대한 증명은 Khalil의 Nonlinear control에 잘 나와있다. 처음에 그냥 읽으면 무슨 소리인지 납득이 안되는 부분이 있는 것 같아서, 증명을 이해하는 연결다리를 써보고자 글을 쓴다. Lyapunov stability theorem $\text{If there is }V(x)\text{ such that }V(0)=0\text{ and }V(x)>0,\; \forall x\in D\text{ with }x\neq 0$ $\dot{V}(x)\leq 0\; \forall x\in D$ $\text{then the origin is..
[MATLAB] classic plot의 color 순서로 설정하기
·
프로그래밍 Programming/매트랩 MATLAB
MATLAB의 default colormap은 다음 구성으로 되어있다. 일반적인 그림에서는 문제가 되지 않을지라도 일반적으로 논문에서는 좀 더 눈에 띄는 색상들로 구분해주는 게 좋다고 한다. 그래서 classic plot을 보면 (matplotlib 참고) 왼쪽과 같이 채도가 높은 파란색, 빨간색 등을 사용한다. 그래서 MATLAB 코드를 사용해서 default colormap을 채도가 높은 파랑-빨강-초록-마젠타-시안-채도 낮은 노랑으로 분배하기 위한 코드를 작성하였다. newcolors = {'b','r','g','m','c','#bcbd22'} ; % blue, red, green, magenta, cyan, yellow with low saturation colororder(newcolors) 여..
[MATLAB] 3차원 vector field diagram과 시뮬레이션 결과 mapping
·
연구 Research/제어 Control
저번 글에서 phase plane과 vector field diagram을 그려주는 MATLAB app을 소개했었다. 그런데 이 프로그램은 2차원에서만 가능하기 때문에 변수가 하나 더 늘면 구현이 불가능했다. 그래서 간단하게 3차원 공간에서 벡터 필드를 그리고, 실제 초기 조건에 대하여 시뮬레이션까지 수행하여서 그려보는 코드를 작성하였다. 1. 시스템 $\dot{x}=-x+y$ $\dot{y}=-0.1x^3-y-10\sin x$ $\dot{z}=y-z$ 다음과 같은 시스템이 있다고 할 때 interval = pi/2 ; start_pt = -pi ; end_pt = -start_pt ; [x1,y1,z1] = meshgrid(start_pt:interval:end_pt, start_pt:interval:..
[제어] Phase portrait 프로그램과 예시
·
연구 Research/제어 Control
Autonomous 시스템에 대하여 Phase portrait (state plane, phase plane)을 그려주는 프로그램이 있어서 수업시간에 배운 내용을 그려보았다. 프로그램의 UI가 잘 되어있어서 추천하는 바이다. 1. Tunnel-diode circuit system 다음 시스템은 Tunnel-diode circuit 시스템을 다룬 것이며 이 시스템은 $x_{1}=v_{C}, x_{2}=i_{L}$ 일 때 $$ \begin{gathered} \dot{x}_1=0.5\left[-h\left(x_1\right)+x_2\right] \\ \dot{x}_2=0.2\left(-x_1-1.5 x_2+1.2\right) \\ h\left(x_1\right)=17.76 x_1-103.79 x_1^2+229..
[논문양식] 컨퍼런스에서 제공된 양식을 overleaf에서 사용하기/파일의 의미
·
기타/논문작성 Writing
이번에 Springer conference paper 양식을 쓸 일이 있어서, 이걸 쓰면서 알게 된 내용 등에 대해서 기록한다. Springer conference 양식은 폴더 파일 안에 LaTeX를 사용할 때 필요한 것들을 제공해준다. 또한 간단한 방법은 이런 거 볼 필요없이 overleaf에 들어가서 Springer conference Template을 사용할 수도 있다. 그런데 사용하다보니 조금 양식이 다른 부분이 있어서 본인이 제출할 컨퍼런스에서 제공받은 파일을 그대로 사용하는 것이 안전하다. 이럴 때는 다음과 같이 사용하면 된다. 프로젝트 창에서 new project를 누르면 다음과 같이 나온다. 이 때, [Upload Project]를 누르면 파일을 업로드할 수 있다. 그러면 컨퍼런스에서 제공..
[MATLAB] 시작할 때 자동 실행되는 코드 (startup.m)
·
프로그래밍 Programming/매트랩 MATLAB
나는 MATLAB에서 필요한 디폴트 설정을 한 함수에 넣어두고 코드에서 함수를 호출함으로써 쓰고 있었다. 그런데 이렇게 하면 항상 코드에 있는 경로에 디폴트 설정을 해놓은 함수를 넣어놔야하기 때문에 번거로움이 있다. 이러한 함수를 한 폴더에 저장해놓고, 매번 그 함수가 있는 경로를 추가할 수도 있을 것이다. 그 대신에, 내가 원하는 경로에 startup.m이라는 함수를 만들고 그 안에 코드를 작성해놓으면 MATLAB에서 시작할 때 그 함수 안에 있는 내용을 실행한다. 그래서 만약에 자신이 항상 쓰는 함수들을 모아놓은 폴더가 있으면 startup.m 코드 안에 addpath (경로) 를 넣어놓으면 시작할 때부터 바로 그 경로를 추가하기 때문에 언제든지 그 경로에 있는 함수들에 접근할 수 있다. 이 star..