이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
적분
f
가 기호 표현식인 경우 다음 식은
int(f)
diff(F)
=
f
를 만족하는 또 다른 기호 표현식 F
를 구하려고 시도합니다. 즉, int(f)
는 f
의 부정적분 또는 역도함수를 반환합니다(닫힌 형식으로 존재하는 경우). 미분과 마찬가지로 다음 적분은
int(f,v)
symvar
에 의해 결정된 변수가 아니라 기호 객체 v
를 적분 변수로 사용합니다. int
의 동작 방식은 다음 표를 참조하십시오.
수학 연산 | MATLAB® 명령 |
---|---|
| |
| |
g = cos(at + b) |
|
|
미분과 달리 기호 적분은 더 복잡합니다. 적분을 계산할 때 다음과 같은 많은 어려움이 발생할 수 있습니다.
역도함수
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)
를 반환합니다.
정적분도 가능합니다.
정적분 | 명령 |
---|---|
|
|
|
|
다음은 추가적인 예입니다.
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가 양의 실수이면
위의 표현식은 x가 ±∞에 가까워질수록 0에 가까워지는 종 모양을 띠는 양의 곡선이 됩니다. a = 1/2에 대한 이 곡선의 예를 만들 수 있습니다.
syms x
a = sym(1/2);
f = exp(-a*x^2);
fplot(f)
그러나 다음 적분을 계산할 때
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)
복소수 파라미터를 사용한 적분
다음 적분을
a
의 복소수 값에 대해 계산하려면 다음을 입력하십시오.
syms a x f = 1/(a^2 + x^2); F = int(f, x, -inf, inf)
syms
를 사용하면 변수에 대한 모든 가정을 지울 수 있습니다. 기호 변수 및 기호 변수의 가정에 대한 자세한 내용은 항목을 참조하십시오.
위의 명령은 복소수 출력값을 생성합니다.
F = (pi*signIm(1i/a))/a
함수 signIm
은 다음과 같이 정의됩니다.
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
함수와 달리 가변 정밀도 연산방식을 사용합니다.
integral
과 vpaintegral
을 모두 사용하여 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
을 참조하십시오.
참고 항목
int
| diff
| vpaintegral