Main Content

이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

적분

f가 기호 표현식인 경우 다음 식은

int(f)

diff(F) = f를 만족하는 또 다른 기호 표현식 F를 구하려고 시도합니다. 즉, int(f)f의 부정적분 또는 역도함수를 반환합니다(닫힌 형식으로 존재하는 경우). 미분과 마찬가지로 다음 적분은

int(f,v)

symvar에 의해 결정된 변수가 아니라 기호 객체 v를 적분 변수로 사용합니다. int의 동작 방식은 다음 표를 참조하십시오.

수학 연산

MATLAB® 명령

xndx={log(x)if n=1xn+1n+1otherwise.

int(x^n) 또는 int(x^n,x)

0π/2sin(2x)dx=1

int(sin(2*x), 0, pi/2) 또는 int(sin(2*x), x, 0, pi/2)

g  =  cos(at + b)

g(t)dt=sin(at+b)/a

g = cos(a*t + b) int(g) 또는 int(g, t)

J1(z)dz=J0(z)

int(besselj(1, z)) 또는 int(besselj(1, z), z)

미분과 달리 기호 적분은 더 복잡합니다. 적분을 계산할 때 다음과 같은 많은 어려움이 발생할 수 있습니다.

  • 역도함수 F가 닫힌 형식으로 존재하지 않을 수 있습니다.

  • 역도함수가 익숙하지 않은 함수를 정의할 수 있습니다.

  • 역도함수가 있지만 소프트웨어에서 이를 구할 수 없는 경우가 있을 수 있습니다.

  • 더 큰 규모의 컴퓨터에서는 소프트웨어가 역도함수를 구할 수 있지만 사용 가능한 컴퓨터에서는 시간과 메모리가 부족할 수 있습니다.

그럼에도 불구하고 대부분의 경우, MATLAB은 기호 적분을 성공적으로 수행할 수 있습니다. 예를 들어, 다음과 같이 기호 변수를 만들어 보겠습니다.

syms a b theta x y n u z

다음 표에서는 이러한 변수가 포함된 표현식의 적분을 보여줍니다.

f

int(f)

syms x n
f = x^n;
int(f)
ans =
piecewise(n == -1, log(x), n ~= -1,...
 x^(n + 1)/(n + 1))
syms y
f = y^(-1);
int(f)
ans =
log(y)
syms x n
f = n^x;
int(f)
ans =
n^x/log(n)
syms a b theta
f = sin(a*theta+b);
int(f)
ans =
-cos(b + a*theta)/a
syms u
f = 1/(1+u^2);
int(f)
ans =
atan(u)
syms x
f = exp(-x^2);
int(f)
ans =
(pi^(1/2)*erf(x))/2

마지막 예 exp(-x^2)에는 삼각 함수 및 지수 함수와 같은 표준 미적분 표현식과 관련된 적분 공식이 없습니다. 이런 경우 MATLAB은 오차 함수 erf에 대한 답을 반환합니다.

MATLAB에서 f 함수의 적분에 대한 해답을 구할 수 없으면 그냥 int(f)를 반환합니다.

정적분도 가능합니다.

정적분

명령

abf(x)dx

int(f, a, b)

abf(v)dv

int(f, v, a, b)

다음은 추가적인 예입니다.

f

a, b

int(f, a, b)

syms x
f = x^7;
a = 0;
b = 1;
int(f, a, b)
ans =
1/8
syms x
f = 1/x;
a = 1;
b = 2;
int(f, a, b)
ans =
log(2)
syms x
f = log(x)*sqrt(x);
a = 0;
b = 1;
int(f, a, b)
ans =
-4/9
syms x
f = exp(-x^2);
a = 0;
b = inf;
int(f, a, b)
ans =
pi^(1/2)/2
syms z
f = besselj(1,z)^2;
a = 0;
b = 1;
int(f, a, b)
ans =
hypergeom([3/2, 3/2],...
          [2, 5/2, 3], -1)/12

베셀 함수(besselj) 예의 경우 double 함수를 사용하여 적분 값에 대한 수치 근사를 계산할 수 있습니다. 다음 명령을 실행하면

syms z
a = int(besselj(1,z)^2,0,1)

다음이 반환됩니다.

a =
hypergeom([3/2, 3/2], [2, 5/2, 3], -1)/12

또한 다음 명령을 실행하면

a = double(a)

다음 결과가 반환됩니다.

a =
    0.0717

실수 파라미터를 사용한 적분

기호 적분과 관련하여 작지만 주목해야 할 부분 중 하나는 다양한 파라미터의 "값"입니다. 예를 들어, a가 양의 실수이면

eax2

위의 표현식은 x가 ±∞에 가까워질수록 0에 가까워지는 종 모양을 띠는 양의 곡선이 됩니다. a = 1/2에 대한 이 곡선의 예를 만들 수 있습니다.

syms x
a = sym(1/2);
f = exp(-a*x^2);
fplot(f)

그러나 다음 적분을 계산할 때

eax2dx

a에 값을 할당하지 않으면 MATLAB에서 a가 복소수를 나타내고 있다고 가정하므로 a의 인수에 따라 조각별 답을 반환합니다. a가 양의 실수인 경우만 구하려면 assume을 사용하여 a에 대한 가정을 설정하십시오.

syms a
assume(a > 0)

이제 다음 명령을 사용하여 앞의 적분을 계산할 수 있습니다.

syms x
f = exp(-a*x^2);
int(f, x, -inf, inf)

반환되는 결과는 다음과 같습니다.

ans =
pi^(1/2)/a^(1/2)

복소수 파라미터를 사용한 적분

다음 적분을

1a2+x2dx

a의 복소수 값에 대해 계산하려면 다음을 입력하십시오.

syms a x 
f = 1/(a^2 + x^2);
F = int(f, x, -inf, inf)

syms를 사용하면 변수에 대한 모든 가정을 지울 수 있습니다. 기호 변수 및 기호 변수의 가정에 대한 자세한 내용은 Delete Symbolic Objects and Their Assumptions 항목을 참조하십시오.

위의 명령은 복소수 출력값을 생성합니다.

F = 
(pi*signIm(1i/a))/a

함수 signIm은 다음과 같이 정의됩니다.

signIm(z)={1if Im(z)>0, or Im(z)=0 and z<00if  z=0-1otherwise.

a = 1 + i에서 F의 값을 구하려면 다음을 입력하십시오.

g = subs(F, 1 + i)
g = 
pi*(1/2 - 1i/2)
double(g)
ans =
   1.5708 - 1.5708i

가변 정밀도 연산방식을 사용한 고정밀도 수치 적분

고정밀도 수치 적분은 Symbolic Math Toolbox™의 vpaintegral 함수에서 구현됩니다. vpaintegral은 배정밀도 연산방식을 사용하는 MATLAB integral 함수와 달리 가변 정밀도 연산방식을 사용합니다.

integralvpaintegral을 모두 사용하여 besseli(5,25*u).*exp(-u*25)를 적분해 보겠습니다. integral 함수는 NaN을 반환하면서 경고를 발생시키지만 vpaintegral은 올바른 결과를 반환합니다.

syms u
f = besseli(5,25*x).*exp(-x*25);
fun = @(u)besseli(5,25*u).*exp(-u*25);

usingIntegral = integral(fun, 0, 30)
usingVpaintegral = vpaintegral(f, 0, 30)
Warning: Infinite or Not-a-Number value encountered. 
usingIntegral =
   NaN

usingVpaintegral =
0.688424

자세한 내용은 vpaintegral을 참조하십시오.