[매트랩MATLAB] 기호가 포함된 행렬 계산하기

2021. 2. 25. 17:08·프로그래밍 Programming/매트랩 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

 

기호 변수, 기호 표현식, 기호 함수, 기호 행렬 만들기 - MATLAB sym - MathWorks 한국

유효한 변수 이름이 아니고 숫자를 정의하지 않는 문자형 벡터에 대한 지원이 제거되었습니다. 기호 표현식을 만들려면 먼저 기호 변수를 만든 후 이 변수에 대해 연산을 사용하십시오. 예를 들

kr.mathworks.com

 

'프로그래밍 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
'프로그래밍 Programming/매트랩 MATLAB' 카테고리의 다른 글
  • [MATLAB] Figure 그릴 때 유용한 명령어 및 기능 모음
  • [MATLAB] String형과 Char형 결합
  • [매트랩MATLAB] 기호 대입
  • [매트랩 MATLAB] 데이터 구조 만들기
보통의공대생
보통의공대생
수학,프로그래밍,기계항공우주 등 공부하는 기록들을 남깁니다.
  • 보통의공대생
    뛰는 놈 위에 나는 공대생
    보통의공대생
  • 전체
    오늘
    어제
    • 분류 전체보기 (468)
      • 공지 (1)
      • 영어 공부 English Study (40)
        • 텝스 TEPS (7)
        • 글 Article (21)
        • 영상 Video (10)
      • 연구 Research (99)
        • 최적화 Optimization (3)
        • 데이터과학 Data Science (7)
        • 인공지능 Artificial Intelligent (40)
        • 제어 Control (45)
      • 프로그래밍 Programming (103)
        • 매트랩 MATLAB (25)
        • 파이썬 Python (33)
        • 줄리아 Julia (2)
        • C++ (3)
        • 리눅스 우분투 Ubuntu (6)
      • 항공우주 Aeronautical engineeri.. (21)
        • 항법 Navigation (0)
        • 유도 Guidance (0)
      • 기계공학 Mechanical engineering (13)
        • 열역학 Thermodynamics (0)
        • 고체역학 Statics & Solid mechan.. (10)
        • 동역학 Dynamics (1)
        • 유체역학 Fluid Dynamics (0)
      • 수학 Mathematics (34)
        • 선형대수학 Linear Algebra (18)
        • 미분방정식 Differential Equation (3)
        • 확률및통계 Probability & Sta.. (2)
        • 미적분학 Calculus (1)
        • 복소해석학 Complex Analysis (5)
        • 실해석학 Real Analysis (0)
      • 수치해석 Numerical Analysis (27)
      • 확률 및 랜덤프로세스 Random process (2)
      • 추론 & 추정 이론 Estimation (3)
      • 기타 (26)
        • 설계 프로젝트 System Design (8)
        • 논문작성 Writing (55)
        • 세미나 Seminar (2)
        • 생산성 Productivity (3)
      • 실험 Experiment (1)
      • 유학 생활 Daily (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    논문작성법
    논문작성
    Zotero
    인공지능
    matplotlib
    ChatGPT
    WOX
    수치해석
    Linear algebra
    teps
    고체역학
    서버
    에러기록
    딥러닝
    IEEE
    텝스
    Statics
    obsidian
    Julia
    텝스공부
    우분투
    MATLAB
    생산성
    pytorch
    Dear abby
    옵시디언
    JAX
    LaTeX
    Numerical Analysis
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
보통의공대생
[매트랩MATLAB] 기호가 포함된 행렬 계산하기
상단으로

티스토리툴바