Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

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

프로그래밍 Programming/매트랩 MATLAB

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

보통의공대생 2021. 2. 25. 17:08

 

제어 공부를 하다가 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

 

Comments