[LaTeX] LaTeX에서 Macro 만들기
·
기타/논문작성 Writing
LaTeX에서 매크로를 만드는 가장 쉬운 방법은 \newcommand를 사용하는 것이다. 그 외에도 다른 사람들의 코드를 보다보면 잘 모르겠는 부분들이 있어서 하나씩 찾아보았다.어떻게 매크로가 작동되는지를 알아야 편하기는 한데 여기서는 바로 가져다쓰기 좋은 코드를 기록하기 위한 글이다.이 글은 아마 공부하면서 계속 수정할 것 같다. 0. def원래 매크로를 지정할 때는 기본적으로 def를 사용했었는데 지금은 newcommand를 많이 쓴다.1. newcommand 사용하기새로운 커맨드를 사용할 때는 newcommand로 정의하고만약에 이미 패키지에 속해있는 커맨드라면 renewcommand를 사용해야한다.기본 format은 다음과 같다.\newcommand{\name}[no_of_parameters]{d..
[Differential Equation] 시작
·
수학 Mathematics/미분방정식 Differential Equation
미분방정식 수업을 들은지는 꽤 지났지만 기계공학, 전자전기공학, 항공우주공학 심지어 화학공학 등 어딜가든 볼 수 있는 것이 미분방정식이기 때문에 자주 복습하게 되어 여전히 잘 쓰고 있는 이론들이다. 이 시리즈에서 쓸 내용은 학부 2학년 수준의 미분방정식 수업 필기 내용을 옮긴 것이다. 실제로는 더 많은 이론들이 있고 그 내용은 아예 다른 카테고리에 넣을지 여기에 계속 누적할 지는 잘 모르겠다. 다루는 내용 1. First-order differential equation 2. Second-order differential equation 3. Laplace transform 4. Systems of first-order linear DE 5. Partial differential equations and..
[zotero] 버전6 이모지 흑백으로 생기는 문제 해결
·
기타/생산성 Productivity
최근에 zotero를 좀 제대로 써보고 싶어서 태그를 도입하려고 하는데 문제가 하나 있었다. 다음 그림과 같이 이모지를 사용하려고 하면 흑백 이모지가 나온다는 점이다. 다른 곳에서 쓸 때는 😊👍❤️와 같이 문제가 전혀 없어서 이상하다 싶었다. zotero forum을 뒤적여보니 두 가지 해결 방법이 있었다. 1) zotero를 베타 7버전 (231210 기준)으로 업그레이드한다. 2) seguiemj.ttf 를 재설치한다. 1번을 먼저 했는데 바로 해결되지는 하지만 아직 베타버전이라 수많은 플러그인이 호환이 안되는 문제가 발생했다. 결국 버전6으로 돌아가고 폰트를 재설치했더니 해결되었다. seguiemj.ttf는 또 어디서 구하는가? 나는 열심히 검색해서 다음 깃허브에서 구했다. 리눅스에서 윈도우 이모지..
[항공우주] Guidance, Navigation, and Control (GNC)란 무엇인가
·
항공우주 Aeronautical engineering
최근 Journal of Guidance, Control, and Dynamics (이하 JGCD) editorial에 있는 세 개의 글을 보고 정리하는 글이다. 참고한 글에 대한 정보는 하단에 남기도록 하겠다. 특히나 Guidance와 control은 application을 보면 혼용해서 쓰기도 하고 모호한 부분이 있어서 이런 글들을 통해 알아보고 싶었다. JGCD의 훌륭한 에디터 님의 말에 내 의견도 숟가락을 얹어보도록 하겠다. 참고로 여기서는 항공우주 분야 저널이기 때문에 어플리케이션이나 분류 자체가 항공우주 분야에 맞춰져있다. 목차 1. What is guidance? 2. What is navigation? 3. What is control? 1. What is guidance? 항공우주공학에서..
[비행동역학] Multicopter (Drone) 제어기
·
항공우주 Aeronautical engineering
이번에는 dynamics를 통해 제어기를 생각하는 방법에 대해 다룬다. 사실 제어기를 설계하는 것은 정답이 있는 게 아니라 어떻게 모델링해서 어느 부분을 제어할 것이냐에 따라 달라질 수 있다. 따라서 본인이 달성하고자 하는 성능 지표나 운용 목적, 센서의 유무 등을 따져보아야 한다. dynamics를 알아야 하므로 다음 글을 참고한다. 1. Outer loop - Inner loop 제어기에서는 내부 루프와 외부 루프로 제어기가 구성된다. 내부 루프는 가장 빠른 response를 기준으로 설정이 된다. 가장 기본적으로 위치, 속도, 자세각, 각속도가 측정 가능하다고 가정한다. (그래야 피드백을 할 수 있으니까) 위 그림과 같이 위치 커맨드가 주어질 때의 루프를 나타낸 것이다. 위치가 주어지면, 이를 위한..
[chatGPT] chatGPT 프롬프트 엔지니어링
·
연구 Research/인공지능 Artificial Intelligent
chatGPT의 흥미로운 점은 어떤 프롬프트를 쓰느냐에 따라 결과가 달라질 수 있다는 점이다. 이런 측면에서 더 나은 프롬프트를 사고 파는 시장까지 생겼다고 하니, 세상에는 참 많은 아이디어가 돈이 된다 싶기도 했다. 실제 openAI에서는 몇 가지 유용한 강좌를 제공해준다. 그중 하나가 지금 이야기하고자 하는 ChatGPT Prompt Engineering for Developers라는 강의이다. chatGPT를 더 유용하게 사용하기 위해 어떻게 명령을 넣으면 좋을지에 대해 설명해준다.80퍼센트 정도 들었는데 충분히 chatGPT를 사용하는 법에 대해 익숙해지기 좋은 것 같다.나중에 시간이 나면 어떤 식으로 프롬프트를 하는지 정리해놓고 싶다. (크흠..) 괜히 이상한 유튜브에서 chatGPT 설명을 찾..
[JAX] 버전에 따른 변화
·
프로그래밍 Programming
JAX가 버전에 따라 조금씩 달라지는 부분이 있어서 정리해놓는 글. 1) 배열 원소 업데이트 방식 # JAX 0.3 이전 input_data_test = index_update(input_data_test, index[i,:], input_data_tmp) # JAX 0.4 input_data_test = input_data_test.at[i,:].set(input_data_tmp) 2) optimizers 0.3버전에서는 optimizer가 기본적으로 제공이 되는데 이 방식이 0.4에서는 바뀐다.
[LaTeX] 문서 Header 만들기
·
기타/논문작성 Writing
문서를 보면 상단바(Header)를 만들고 싶을 수 있다. Heading을 만드는 방법은 여러 코드들을 보다보면 제각각이라서 다양한 방법을 소개하고자 한다. 1. fancyhdr package 사용하기 다음 링크에 가보면 overleaf에서 간단하게 header를 만드는 방법에 대해 설명했다. \documentclass[11pt]{article} \usepackage{fancyhdr} \usepackage[margin=1in]{geometry} \begin{document} \pagestyle{fancy} %... then configure it. \fancyhf{} % Set the header and footer for Even % pages but omit the zone (L, C or R) \f..
[비행동역학] Multicopter (Drone) dynamics
·
항공우주 Aeronautical engineering
사실 물체의 dynamics 자체는 뉴턴 법칙으로 고정되어있기 때문에 익숙하다. 다만 이 dynamics에서 얼마만큼 더 '정밀하게' 모델링할 것인가는 엔지니어의 몫이다. 예를 들면 $\dot{P}=F$ $\dot{H}=M$ 다음과 같이 운동량의 변화율은 힘이고, 각운동량의 변화율은 모멘트 (즉, 힘과 모멘트로 운동량/각운동량을 변화시킬 수 있다)라는 사실은 변하지 않는다. 하지만 제어하는 사람 입장에서는 이 힘이 어떻게 발생하는지를 디테일하게 따져보게 된다. 일례를 들면, 지금 설명할 드론의 경우 공기로 인한 항력이 발생할 수 있다. 나는 이런 유체역학을 기초적인 부분 밖에 모르지만 모터가 돌면 주변의 발생하는 바람으로 인해 힘에 영향을 줄 수 있다. 하지만 측정이 불가능한 영역이라면 이를 무시하고 d..
[JAX] L-BFGS optimizer로 학습하는 예제 코드
·
연구 Research/인공지능 Artificial Intelligent
Quasi Newton method를 이용해서 JAX에서 최적화를 시키고 싶었는데 JAX 자체가 Deep learning에 포커스가 있고 대부분 딥러닝이 Gradient descent method로 최적화를 하다보니 라이브러리를 찾게 되었다. 대부분 jaxopt라는 라이브러리를 추천했기 때문에 이걸로 수행해보았다. jaxopt에는 jaxopt.ScipyMinimize와 jaxopt.LBFGS가 있는데 다른 분들의 시도를 보니 ScipyMinimize가 더 성능이 괜찮은 것 같다. ScipyMinimize는 scipy에 있는 최적화를 사용한 것이고 LBFGS는 직접 만든 것 같은데 line search 방법 등이 다르다고 한다. import jax import jax.numpy as np from jax ..