1. Symbolic Math Toolbox
ㅇ MATLAB에서 기호(심볼)를 이용해, 기호적 수식의 연산 결과를 얻도록 하는 툴 모음
- 수학 툴인 MAPLE, MATHEMATICA 처럼 기호적 연산에 의해 대수적,해석적 풀이 등을 수행
. 마치 손으로 방정식을 푸는 것과 유사한 환경 구현
.. 다소 복잡한 데이터구조, 문법, 사용법 등이 요구됨
- 수행 엔진 : MuPAD
. (과거에는, Maple 엔진을 차용했으나, 지금은 자체 MuPAD를 사용)
. 뮤패드 노트북 수행 창 실행 : mupad
. 사용법 : 다른 기호연산 프로그램(MAPLE 등)과 비슷
ㅇ 사용 용도
- 기호로 이루어진 수식을 간단히 정리하거나, 답을 구하거나, 숫자를 대입하여 값을 계산
- 또한, 기호 수식에 대한 미분,적분,선형대수,라플라스변환 등의 연산 수행도 가능
2. 심볼 변수 / 기호 변수 (Symbolic Variable) 및 그 선언
ㅇ 심볼 변수의 데이터형
- MATLAB에서, 심볼 변수의 데이터형은,
- 심볼릭 객체라는 데이터형으로 처리됨
ㅇ 심볼 변수의 선언
* (다음과 같이, 변수,수식,방정식을 심볼 변수로 만들 수 있음)
- 심볼 변수 만들기
. 단일 : x = sym('x') 또는 syms x
. 다수 : syms x,y,z
- 심볼 수식 만들기
. y = sym('x^2 + 2x + 1')
- 심볼 방정식 만들기
. expr = sym('y = x^2 + 2x + 1') 또는 expr = y == x^2 + 2x + 1
3. 심볼릭 함수들 (심볼 변수 처리용 함수들)
ㅇ 수식 전개 : expand()
- 例) x = sym('x'); y = sym('y'); z = (x+y)^2; expand(z) => x^2+2*x*y+y^2
ㅇ 수식 인수분해 : factor()
- 例) x = sym('x'); y = sym('y'); z = (x^3+y^3); factor(z) => [x+y,x^2-x*y+y^2]
ㅇ 수식 같은 항끼리 모아줌 : collect()
- 특정 심볼 변수에 대해 내림차순으로 나타냄
- 例) x = sym('x'); z = 3*x - (x - 3)^2*(x + 3); collect(z) => x^3 + 3*x^2 + 12*x - 27
ㅇ 수식 간단히하기 : simplify()
- 例) sym('x'); z = ((sin(x))^2 + (cos(x))^2); simplify(z) => 1
ㅇ 수식 분자,분모의 분리 : numden()
ㅇ 극한 취하기 : limit(f) => 심볼릭 f에 대한 limx→0f(x)의 계산
- 例) limit(x^2+1,x,0) : limx→0(x^2+1)의 극한 1 을 구함
ㅇ 함수의 미분 : diff(f) => 심볼릭 f에 대한 f'의 계산
- 例) diff(f,n) : n은 미분 차수
ㅇ 미분값 계산 : subs(미분함수,x,a)
- 심볼릭 변수 x에 상수 a를 대입하여 실제 미분값 계산
ㅇ 함수의 적분 : int(f) => 심볼릭 f에 대한 ∫f dx 의 계산
- 例) int(f,a,b) : 함수 f(x)의 a에서 b까지 정적분을 구함
ㅇ 테일러 급수 전개 : taylor(f,n,a)
4. 심볼릭 미분방정식 풀이
ㅇ 형식
- dsolve('미분방정식(대문자 D의 문자열)','초기조건 or 경계조건','독립변수 지정 문자')
. 대문자 D는, 항상 도함수를 가리킴
- dsolve(심볼릭 함수,'초기조건 or 경계조건')
* 달리 지정 안하면, 항상 독립변수를 문자 `t`로 간주함
ㅇ 例)
- dy/dt = y => dsolve('Dy = y') => 일반해 : C1*exp(t)
- dy/dt = 2y/t => dsolve('Dy = 2*y/t') => 일반해 : C1*t^2
- d2y/dt2 = -y => dsolve('D2y = -y') => 일반해 : C1*cos(t)+C2*sin(t)
- y' = 1-t+y, y(0)=1 => dsolve('Dy=1-t+y','y(0)=1')
=> 일반해 : t + C1*exp(t), 특수해 : t + exp(t)
5. 심볼릭 수식 그리기
ㅇ 함수식 그리기 : ezplot() => fplot() : (2016a 버전 이후)
- 例) x = sym('x'); ezplot(x^2-2*x+1)
6. 심볼릭 수식 값 구하기 : (익명함수로 변환하여 함수값 계산)
ㅇ 익명함수로 변환 : matlabFunction(f) => @(x) 기호수식을 포함한 함수
ㅇ 변환 후 함수 값 계산 가능
- 例) syms x; anonymous = sin(x); f = matlabFunction(anonymous);
. f = @(x) sin(x) => f(2) = 0.9093