일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 논문작성
- Statics
- MATLAB
- IEEE
- 인공지능
- WOX
- Julia
- pytorch
- LaTeX
- 텝스공부
- Python
- 딥러닝
- Linear algebra
- 우분투
- 옵시디언
- 논문작성법
- 텝스
- 수치해석
- 에러기록
- Zotero
- obsidian
- JAX
- teps
- 생산성
- Dear abby
- 수식삽입
- matplotlib
- 고체역학
- ChatGPT
- Numerical Analysis
- Today
- Total
뛰는 놈 위에 나는 공대생
[매트랩MATLAB] 기호가 포함된 행렬 계산하기 본문
제어 공부를 하다가 4차원 이상의 matrix의 determinant를 구하는 과정이 필요했습니다.
그런데 직접적으로 determinant를 구하자니 문자가 포함된 고차원 matrix라서 곤란하더라구요.
그래서 matlab에서 symbolic 식을 쓸 수 있다는 사실을 알고 있어서 이번 기회에 써보기로 했습니다.
제가 determinant를 구할 matrix는
4차원에 문자가 섞여있어서 determinant를 구하기 어렵습니다.
문자가 포함된 P matrix를 만들고, determinant를 구하는 matlab 함수 det를 써서 구해보도록 하겠습니다.
1. 기호 변수 생성 : sym
기호 변수를 만드는 함수는 sym이고, 이 sym을 통해 특정 변수에 기호(symbol)을 넣어줘야합니다.
예를 들어 위의 matrix에 있는 문자 $k_{1}$을 쓰고 싶다면
k1 = sym('k1');
다음과 같이 코드를 입력하는 것입니다. 그러면 matlab의 변수 k1에 symbol 'k1'이 들어가는 것입니다.
마치 x=1 코드 처럼, 변수 x에 1을 집어넣는 것과 동일합니다.
꼭 기호와 변수 명을 일치시킬 필요는 없지만 일치시키는 것이 더 유리합니다. (혼동이 덜하니까요.)
만약
k_1 = sym('k1');
으로 쓰셨다면, 'k1' 기호를 쓰고 싶을 때 k_1을 사용하셔야 합니다. 우리가 x 변수를 사용해서 방정식($x^{2}+1$) 쓸 때
x=2이라는 것을 알아도 바로 $2^2+1$이라고 입력하지는 않는 것과 비슷하다고 보시면 됩니다.
이와 같은 방식으로 위 matrix에 나오는 모든 변수 $k_{1},k_{2},m_{1},m_{2}$를 matlab 내에서 기호로 생성해줍니다.
k1 = sym('k1');
k2 = sym('k2');
m1 = sym('m1');
m2 = sym('m2');
꼭 이렇게 sym을 활용하는 방법 외에도 아래와 같이 a에 대한 기호 배열을 만들 수도 있습니다. 자세한 내용은 맨 아래 참고 링크를 확인해주세요.
a = sym('a',[1 4])
result
a =
[a1, a2, a3, a4]
2. 기호를 이용해 matrix 만들기
이제 기호를 생성했으니 기호가 포함된 P matrix를 만들 수 있습니다.
위에서 기호를 넣은 matlab 변수를 사용해주면 됩니다.
P = [1 1/m1 0 -k1/(m1^2); 1/m1 0 -k1/(m1^2) 0; 0 1/m2 0 -k2/(m2^2); 1/m2 0 -k2/(m2^2) 0];
위에서 설명했던 것처럼 만약 본인이 $k_{1}$ 기호를 'k_1' 등의 다른 matlab 변수에 집어넣었다면 그 변수 명을 사용해서 기호 표현식을 만들면 됩니다.
기호에 대해 정의된 수식이 각 matrix 안에 들어있습니다.
3. Determinant 구하기 : det
determinant를 구하는 함수는 det입니다.
determinant = det(P);
determinant라는 변수에 P matrix의 determinant를 넣었습니다.
determinant 변수를 확인하면
다음과 같이 기호로 계산한 determinant를 알아낼 수 있습니다.
이 글은 제가 사용한 예시로 쓴 것이지만 본인의 목적에 따라 기호 변수는 다양하게 이용해볼 수 있습니다.
추가로 사용하게 되는 재밌는 예시가 있으면 글로 작성할 수도 있을 것 같습니다.
예를 들면
symbol을 사용할 줄 알면, Laplace transform이나 transfer function을 구할 때 유용하거든요.
MATLAB은 도움말이 굉장히 친절한 프로그램이므로 부족한 부분은 아래 링크도 참고해주세요.
참고 링크 (직접 들어가서 보시는 것도 추천)
kr.mathworks.com/help/symbolic/sym.html
'프로그래밍 Programming > 매트랩 MATLAB' 카테고리의 다른 글
[MATLAB] Symbolic 식에서 복잡한 숫자로 된 분수를 소수로 바꾸기 (0) | 2022.04.07 |
---|---|
[MATLAB] Figure 그릴 때 유용한 명령어 및 기능 모음 (0) | 2022.02.24 |
[MATLAB] String형과 Char형 결합 (0) | 2022.02.24 |
[매트랩MATLAB] 기호 대입 (0) | 2021.05.24 |
[매트랩 MATLAB] 데이터 구조 만들기 (0) | 2021.01.29 |