본문 바로가기

카테고리 없음

매틀랩(matlab) 심볼릭(symbolic) 사용법 - 기초


매틀랩에는 다양한 기능들이 있지만
최근 심볼릭 방법에 대해서 알게 되었고 정말 신기하기도 하고 유용한 방법이기에 소개한다.



심볼릭 처리(symbolic process)에 대해서 간단히 설명하자면
매틀랩에서 사용되는 변수에 값을 입력하지 않고 변수 그 자체로 계산 하는 방법이다.
사용의 예를 들자면
y=x^2 이라는 식을 미분하여 y'=2x 라는 식을 얻을 수 있고
거기에 값을 대입해서 간단하게 미분식을 풀 수 있다.
장점이라고 한다면 일반화 할 수 있다는 점이고
그 일반화는 반복작업을 간단하게 만든다.
특히 미적분에 관해서 유용하게 쓰일 것이다. 숫자를 대입한 후 미분하는 것과는 다른 의미를 지니게 되니 말이다.

코딩 실력을 나누는 것은 얼마나 많은 함수를 알고 있느냐가 아니라
어떤 것을 할 수 있느냐에 따라 나뉜다. 함수는 찾고 검색하면 끝이지만 어떤 것을 할 수 있느냐하는 것은 찾기 쉽지 않기 때문이다.

심볼릭을 이용해서 할 수 있는 간단한 것들
1. 변수를 이용한 일반식을 만들 수 있다.
2. 그 식을 풀고 식을 간단히 할 수 있다.
3. 식에 미분 적분등의 계산을 적용할 수 있다.
4. 계산된 식에 값을 넣어 결과를 볼 수 있다.

이정도가 기본으로 할 수 있는 것들이다. (사실 나도 배운지 얼마 안되서 어떤 기능이 더 있는지 잘 모르겠다.)


심볼릭 처리의 종류
1. 심볼릭 상수
2. 심볼릭 변수


심볼릭 상수는 값이 정해져있기 때문에 언제든지 값이 상수로 변환될 수 있는 값이다.
예를 들면 2라는 심볼릭 상수와 3이라는 심볼릭 상수를 곱하면 2*3으로 표시되지만 간단하게 6이라는 결과로 바꿀 수 있다.

심볼릭 변수는 값이 정해져 있지 않기 때문에 값을 계산하기 위해서는 특정값을 넣어주어야한다.
x^2의 경우에 x라는 값이 정해져 있지 않아 특정 결과를 위해서는 사용자가 x의 값을 입력해 주어야 한다.

심볼릭 지정
심볼릭 상수: pi=sym('3.14'), sqareroot2=sym('sqrt(2)')
*심볼릭 상수와 일반 상수의 차이점
결과 표시: 2*sqrt(2)=2.8284
               2*sqareroot2=2*2^(1/2)

심볼릭 변수 
심볼릭 변수=sym('문자')
syms 심볼릭 변수
x=sym('x')
y=sym('y')
z=sym('z')
syms x y z // 위의 결과와 같다.

심볼릭 변수의 특성을 지정해 줄 수도 있다.
심볼릭 변수=sym('문자', '특성') 
x=sym('x', 'real') // x는 real 값 = syms x real 
y=sym('y', 'r') // y는 rational 값 
z=sym('z', 'f') // z는 floating 값 
syms a positive // a를 positive로 제한 sym을 이용해서 대체 가능
syms b negative  // b를 negative로 제한 sym을 이용해서 대체 가능
관련 함수
findsym(변수) // 변수에 포함된 심볼릭 변수를 찾아 표시한다.
class(변수) // 변수의 형태가 어떤 종류인지 나타낸다. 'double' or 'sym'
pretty(변수) // 일반적인 수학식으로 표시한다. 
expand(변수) // 심볼릭 변수들로 된 식을 계산한다. 예를 들면 (x+y)^2를 x^2+y^2+2xy로 나타낸다.
factor(변수) // 식을 인수분해한다.
simple(변수) // 식을 가장 간단한 형태로 나타낸다. (인수분해나 괄호를 풀이한 결과로)
simplify(변수) //  (Maple's simplification rule을 이용하여) 식을 간단히 한다. 
collect(변수) // 변수의 식을 내림차순으로 정리한다.
-사용법: collect(변수, 심볼릭 변수) // 특정 변수에 대해 내림차순으로 정리한다.
solve(변수) // 방정식 변수의 해를 구한다.

double(심볼릭 상수) // 심볼릭 상수의 값을 일반 상수로 계산하여 나타낸다.
subs(변수, 값) // 심볼릭 변수에 특정 값을 넣어 계산한다.
-사용법: subs( 식, 값) // 식에 심볼릭 변수가 하나만 존재하는 경우
            subs( 식, 심볼릭 변수, 값 ) // 특정 심볼릭 변수에 값을 넣는 경우
            subs( 식, [심볼릭변수1, 심볼릭변수2, ...], [심볼릭변수1의 값, 심볼릭변수2의 값, ...) // 행렬의 크기는 반드시 일치             해야한다. 모든 변수에 값을 넣어줄 필요는 없다.
conj(심볼릭 변수) // 심볼릭 변수의 complex conjugation (켤래 복소수) 값을 나타낸다.
numden(변수) // 변수의 분자값과 분모 값을 '분모', '분자'에 넣어준다. 변수가 식이라면 계산된 결과가 입력
-사용법: [분자 분모]= numden(변수)로 하면 분자, 분모에 넣어준다. 앞이 분자, 뒤가 분모임을 명심
ploy2sym([숫자1, 숫자2, ...]) // 행렬을 심볼릭 다항식 계수로 바꾸어준다.
sym2poly(변수)
// 식의 계수 벡터를 구한다. 

그래프 그리기
ezplot(변수) // [-2pi, 2pi]구간의 그래프를 그려준다.
ezplot(변수, [xmin, xmax]) // 특정구간을 정해서 그래프를 그린다.