Symbolic Math Toolbox   MATLAB 심볼릭 연산

(2023-08-23)

심볼릭 , 심볼릭 미분방정식, diff(), dsolve()


1. Symbolic Math ToolboxMATLAB에서 기호(심볼)를 이용해, 기호적 수식의 연산 결과를 얻도록 하는 툴 모음

     - 수학 툴인 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

MATLAB 기타
   1. Simulink   2. Symbolic Math Toolbox  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"