주요 콘텐츠

integral

설명

q = integral(fun,xmin,xmax)는 전역 적응적 구적법과 디폴트 허용오차를 사용하여 xmin부터 xmax까지의 범위에 대한 함수 fun의 수치 적분을 계산합니다.

예제

q = integral(fun,xmin,xmax,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 옵션을 지정합니다. 예를 들어, WayPoints 이름-값 인수를 실수 또는 복소수의 벡터로 지정하여 적분기가 사용할 특정 점을 표시합니다.

예제

예제

모두 축소

함수 f(x)=e-x2(lnx)2을 만듭니다.

fun = @(x) exp(-x.^2).*log(x).^2;

x=0부터 x=Inf까지의 범위에 대해 적분을 계산합니다.

q = integral(fun,0,Inf)
q = 
1.9475

단일 파라미터 c를 갖는 함수 f(x)=1/(x3-2x-c)을 생성합니다.

fun = @(x,c) 1./(x.^3-2*x-c);

c=5x=0부터 x=2까지의 범위에 대해 적분을 계산합니다.

q = integral(@(x) fun(x,5),0,2)
q = 
-0.4605

이 기법에 대한 자세한 내용은 함수를 파라미터화하기 항목을 참조하십시오.

함수 f(x)=ln(x)를 만듭니다.

fun = @(x) log(x);

디폴트 오류 허용오차로 x=0부터 x=1까지의 범위에 대해 적분을 계산합니다.

format long
q1 = integral(fun,0,1)
q1 = 
  -1.000000010959678

그런 다음 소수점 이하 열두 자릿수까지의 정확도로 적분을 계산합니다. integral이 절대 허용오차만 충족하도록 시도하게 만들기 위해 RelTol0으로 설정합니다.

q2 = integral(fun,0,1,AbsTol=1e-12,RelTol=0)
q2 = 
  -1.000000000000010

함수 f(z)=1/(2z-1)을 만듭니다.

fun = @(z) 1./(2*z-1);

중간점을 지정하여 삼각형 경로 0 ~ 1+1i ~ 1-1i ~ 0에 대해 복소 평면에서 적분을 계산합니다.

q = integral(fun,0,0,Waypoints=[1+1i,1-1i])
q = 
0.0000 - 3.1416i

벡터 값 함수 f(x)=[sinx,sin2x,sin3x,sin4x,sin5x]를 생성하고 x=0부터 x=1까지의 범위에 대한 적분을 계산합니다. 배열 값 또는 벡터 값을 갖는 함수의 적분을 계산하기 위해 ArrayValued 이름-값 인수를 true로 지정합니다.

fun = @(x) sin((1:5)*x);
q = integral(fun,0,1,ArrayValued=true)
q = 1×5

    0.4597    0.7081    0.6633    0.4134    0.1433

R2026a 이후

스칼라 입력값을 가정하여 함수 f(x)=2x-x2을 만듭니다.

fun = @(x) 2*x-x^2;

x=0부터 x=1까지의 범위에 대해 적분을 계산합니다. 벡터화를 사용하지 않고 적분을 계산하기 위해 Vectorized 이름-값 인수를 false로 지정합니다.

q = integral(fun,0,1,Vectorized=false)
q = 
0.6667

함수 f(x)=x5e-xsinx를 만듭니다.

fun = @(x) x.^5.*exp(-x).*sin(x);

x=0부터 x=Inf까지의 범위에 대해 적분을 계산하고 절대 및 상대 허용오차를 조정합니다.

format long
q = integral(fun,0,Inf,AbsTol=1e-13,RelTol=1e-8)
q = 
 -14.999999999998360

입력 인수

모두 축소

피적분 함수로, 적분할 함수를 정의하는 함수 핸들로 지정됩니다.

스칼라 값 문제의 경우, 함수 y = fun(x)는 벡터 인수 x를 받아 벡터 결과값 y를 반환해야 합니다. 따라서 fun은 일반적으로 행렬 연산자 대신 배열 연산자를 사용합니다. 예를 들어, * (mtimes) 대신 .* (times)를 사용합니다.

ArrayValued 이름-값 인수를 true로 설정할 경우, fun은 스칼라 입력값을 받아들이고 고정된 크기의 배열을 반환해야 합니다.

x의 하한으로, 실수(유한 또는 무한)나 복소수(유한)로 지정됩니다. xmin 또는 xmax 중 하나가 복소수일 경우, integralxmin부터 xmax까지 범위의 직선 경로를 따라 경로적분의 근삿값을 계산합니다.

데이터형: double | single
복소수 지원 여부:

x의 상한으로, 실수(유한 또는 무한)나 복소수(유한)로 지정됩니다. xmin 또는 xmax 중 하나가 복소수일 경우, integralxmin부터 xmax까지 범위의 직선 경로를 따라 경로적분의 근삿값을 계산합니다.

데이터형: double | single
복소수 지원 여부:

이름-값 인수

모두 축소

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: q = integral(fun,xmin,xmax,AbsTol=1e-12)는 절대 허용오차의 근삿값을 소수점 이하 약 열두 자릿수까지의 정확도로 설정합니다.

절대 허용오차로, 음이 아닌 실수로 지정됩니다. integral은 절대 오차 |q - Q|의 추정값을 제한하기 위해 절대 허용오차를 사용합니다. 여기서 q는 계산된 적분의 값이고 Q는 (알려지지 않은) 정확한 값입니다. 절대 허용오차를 감소시키면 integral이 더 큰 소수 정밀도를 제공할 수 있습니다.

참고

AbsTolRelTol은 개별적으로 존재합니다. integral은 절대 허용오차 또는 상대 허용오차 중 하나를 충족하더라도, 둘 다 충족하지는 않을 수 있습니다. 이러한 허용오차에 대한 자세한 내용은 섹션을 참조하십시오.

예: q = integral(fun,xmin,xmax,AbsTol=1e-12)

데이터형: double | single

상대 허용오차로, 음이 아닌 실수로 지정됩니다. integral은 상대 오차 |qQ|/|Q|의 추정값을 제한하기 위해 상대 허용오차를 사용합니다. 여기서 q는 계산된 적분의 값이고 Q는 (알려지지 않은) 정확한 값입니다. 상대 허용오차를 감소시키면 integral이 더 큰 유효 자릿수 정밀도를 제공할 수 있습니다.

참고

RelTolAbsTol은 개별적으로 존재합니다. integral은 상대 허용오차 또는 절대 허용오차 중 하나를 충족하더라도, 둘 다 충족하지는 않을 수 있습니다. 이러한 허용오차에 대한 자세한 내용은 섹션을 참조하십시오.

예: q = integral(fun,xmin,xmax,RelTol=1e-9)

데이터형: double | single

함수가 배열 값을 가질지 여부로, 숫자형 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. ArrayValuedtrue(또는 1)로 설정하여 fun이 스칼라 입력값을 받고 벡터, 행렬 또는 N차원 배열 출력값을 반환하는 함수임을 나타냅니다.

디폴트 값 falsefun이 벡터 입력값을 받고 벡터 출력값을 반환하는 함수임을 나타냅니다.

R2026a 이후

벡터화된 계산 수행 여부로, 숫자형 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. 기본적으로 Vectorizedtrue이며, 적분 계산은 더 빠르게 실행되도록 벡터화됩니다. 스칼라 값 함수의 경우, 피적분 함수 y = fun(x)는 벡터 인수 x를 받아 요소별 연산을 수행하고 벡터 결과값 y를 반환해야 합니다.

Vectorizedfalse로 지정하는 경우, 피적분 함수는 스칼라 인수 x만 받아 스칼라 결과값 y를 반환합니다.

참고

ArrayValuedtrue로 지정하면 integralVectorized의 값을 무시합니다.

적분 중간점으로, 실수나 복소수의 벡터로 지정됩니다. 적분기가 초기 메시에서 사용해야 할 적분 구간 내의 점을 나타내려면 중간점을 사용합니다.

  • 국소 극값처럼 함수의 흥미로운 특징 근처에 계산 지점을 추가합니다.

  • 불연속점의 위치를 지정해 피적분 함수의 불연속점을 거쳐 효율적으로 적분을 계산합니다.

  • 복소수를 중간점으로 지정하여 복소 경로 적분법(Complex Contour Integration)을 수행합니다. xmin, xmax 또는 중간점 벡터의 값이 복소수인 경우, 적분은 복소 평면 내의 일련의 직선 경로에 대해 수행됩니다. 이 경우 적분 한계와 중간점은 유한해야 합니다.

특이점을 지정하기 위해 중간점을 사용하지 마십시오. 그 대신, 구간을 분할하고 끝점에 특이점을 가진 별도의 적분 결과를 더합니다.

예: q = integral(fun,xmin,xmax,Waypoints=[1+1i,1-1i])는 적분 구간 위의 복소수 중간점을 두 개 지정합니다.

데이터형: double | single
복소수 지원 여부:

출력 인수

모두 축소

계산된 적분의 값으로, 숫자형 스칼라 또는 배열로 반환됩니다.

  • integral 함수는 다음 표현식을 충족하려고 시도합니다. 여기서 q는 적분의 계산된 값이고 Q는 (알려지지 않은) 정확한 값입니다.

    abs(q - Q) <= max(AbsTol,RelTol*abs(q))
    절대 및 상대 허용오차는 정확도와 계산 시간을 절충할 수 있도록 해줍니다. 일반적으로 상대 허용오차는 적분의 정확도를 결정합니다. 하지만 abs(q)가 충분히 작은 경우에는 절대 허용오차가 적분의 정확도를 결정합니다. 절대 허용오차와 상대 허용오차 둘 다 함께 지정하는 것이 좋습니다.

  • 적분의 단정밀도 제한 영역을 지정하거나 fun이 단정밀도 결과를 반환하는 경우, 더 큰 절대 허용오차 및 상대 허용오차를 지정해야 할 수도 있습니다.

참고 문헌

[1] Shampine, L.F. “Vectorized Adaptive Quadrature in MATLAB®.” Journal of Computational and Applied Mathematics 211, no. 2 (February 2008): 131–40. https://doi.org/10.1016/j.cam.2006.11.021.

확장 기능

모두 확장

버전 내역

R2012a에 개발됨

모두 확장