본문 바로가기
programming language/MATLAB

MATLAB 적분 int(), quad()

by __observer__ 2011. 3. 14.
반응형

MATLAB 을 이용하여 적분을 수행해 보자. MATLAB 을 이용하여 적분을 하는 방법은 크게 두 가지 정도로 구분 할 수 있을 것 같다. 

첫 번째로는 수치적인 적분 방법이고 두 번째는 Symbolic math toolbox 를 이용한 수학적인 접근 방법이다.

수치적인 접근 방법이라 하면 사다리꼴 방법 과 같이 함수를 매우 작은 조각으로 나눠서 부분부분의 면적의 합을 구하는 방법이 될 것이다. 물론 이런 적분을 구하는 알고리즘을 짜서 적분을 할 수도 있겠지만 고맙게도 matlab 은 이런 함수를 제공 해 준다.

quad() 함수를 이용하면 수치 적분이 가능하다. 본 함수는 수치 적분이므로 부정적분을 해 주지는 못한다. 따라서 다음 수식과 같이 구간이 정해진 식에 대해서만 적분 할 수 있다.

 

 

위 수식에 대한 적분은 다음과 같다.

 

F = @(x) x.^2+2.*x+1

F =

@(x)x.^2+2.*x+1

 

quad(F,0,3)

ans =

21

간단하게 해가 나오는 것을 확인 할 수 있다.

하지만 이런 수치적분은 위에서 밝힌 대로 부정적분이 불가능 하다. 부정적분을 할 때는 symbolic math toolbox 를 이용해야 한다. Symbolic math toolbox 는 Mathematica 나 Maple 과 같이 기호로서 계산을 해주는 툴로서 복잡한 수학 계산시 굉장히 편리하게 이용할 수 있다.

 

다음과 같은 수식에 대해 간단하게 부정적분 그리고 임의의 구간에 대한 적분을 수행 해보자.

 

 

부정적분은 굉장히 간단하다.

symbol 로 사용한 변수인 x 를 symbolic 으로 설정해준다.

 

syms x

int(x^2+2*x+1)

그리고 int() 함수 내에 적분할 수식을 써 준다. int() 함수는 integral 의 약자이다. 위 코드의 실행 결과는 다음과 같은 부정적분 결과가 나온다.

 

ans =

(x*(x^2 + 3*x + 3))/3

 

그럼 임의의 구간 a~b 구간에 대해서도 적분을 해 보자. a, b 도 symbolic 으로 설정을 해 준 후에 int() 함수에서 적분 구간을 a, b 라고 명시 해 준다.

 

syms x a b

int(x^2+2*x+1,a,b)

ans =

b*(b*(b/3 + 1) + 1) - a*(a*(a/3 + 1) + 1)

 

다음과 같이 간단하게 a, b 라는 적분구간에 대해 적분이 실행 되는 것을 확인 할 수 있다.


반응형

댓글