주요 콘텐츠

integral2

이중 적분의 수치적 계산

설명

q = integral2(fun,xmin,xmax,ymin,ymax)는 평면 영역 xminxxmaxymin(x)yymax(x)에 대해 함수 z = fun(x,y)의 적분 근삿값을 구합니다.

예제

q = integral2(fun,xmin,xmax,ymin,ymax,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 옵션을 지정합니다. 예를 들어, 절대 허용오차 및 상대 허용오차, 적분 방법을 지정할 수 있습니다.

예제

예제

모두 축소

다음 함수는 xy가 0인 경우 정의되지 않습니다. integral2는 특이점이 적분 경계에 있을 때 최상의 성능을 발휘합니다.

f(x,y)=1(x+y)(1+x+y)2

함수를 만듭니다.

fun = @(x,y) 1./(sqrt(x+y).*(1+x+y).^2);

0x10y1-x를 경계로 하는 삼각형 영역에 대해 적분을 계산합니다.

ymax = @(x) 1 - x;
q = integral2(fun,0,1,0,ymax)
q = 
0.2854

다음 함수를 만듭니다.

f(θ,r)=rrcosθ+rsinθ(1+rcosθ+rsinθ)2

fun = @(x,y) 1./(sqrt(x+y).*(1+x+y).^2);
polarfun = @(theta,r) fun(r.*cos(theta),r.*sin(theta)).*r;

r의 상한에 대한 함수를 만듭니다.

rmax = @(theta) 1./(sin(theta)+cos(theta));

0θπ/20rrmax를 경계로 하는 영역에 대해 적분을 계산합니다.

q = integral2(polarfun,0,pi/2,0,rmax)
q = 
0.2854

파라미터 a=3, b=5를 사용하여 파라미터화된 함수 f(x,y)=ax2+by2을 만듭니다.

a = 3; 
b = 5;
fun = @(x,y) a*x.^2+b*y.^2;

0x5-5y0을 경계로 하는 영역에 대해 적분을 계산합니다. "iterated" 방법과 약 10개의 유효 자릿수 정밀도를 지정합니다.

format long
q = integral2(fun,0,5,-5,0,Method="iterated",AbsTol=0,RelTol=1e-10)
q = 
     1.666666666666667e+03

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

R2026a 이후

스칼라 입력값을 가정하여 함수 f(x,y)=ln(x2+y2)을 만듭니다.

fun = @(x,y) log(x^2+y^2);

0x20y2를 경계로 하는 영역에 대해 적분을 계산합니다. 벡터화를 사용하지 않고 이중 적분을 계산하기 위해 Vectorized 이름-값 인수를 false로 지정합니다.

q = integral2(fun,0,2,0,2,Vectorized=false)
q = 
2.6010

입력 인수

모두 축소

피적분 함수로, 적분할 함수를 정의하는 함수 핸들로 지정됩니다. 함수 z = fun(x,y)는 동일한 크기의 배열을 두 개 받아들이고 대응하는 값의 배열을 반환해야 합니다. 이 함수는 요소별 연산을 수행해야 합니다.

x의 하한으로, 유한 또는 무한인 실수로 지정됩니다.

데이터형: double | single

x의 상한으로, 유한 또는 무한인 실수로 지정됩니다.

데이터형: double | single

y의 하한으로, 유한 또는 무한인 실수 또는 함수 핸들로 지정됩니다. 사각형이 아닌 영역에 대한 적분을 계산할 때에는 ymin을 함수 핸들(x의 함수)로 지정할 수 있습니다.

데이터형: double | single | function_handle

y의 상한으로, 유한 또는 무한인 실수 또는 함수 핸들로 지정됩니다. 사각형이 아닌 영역에 대한 적분을 계산할 때에는 ymax를 함수 핸들(x의 함수)로 지정할 수 있습니다.

데이터형: double | single | function_handle

이름-값 인수

모두 축소

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

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

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

참고

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

예: q = integral2(fun,xmin,xmax,ymin,ymax,AbsTol=1e-12)

데이터형: double | single

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

참고

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

예: q = integral2(fun,xmin,xmax,ymin,ymax,RelTol=1e-9)

데이터형: double | single

적분 방법으로, 다음 표에 있는 값 중 하나로 지정됩니다.

적분 방법설명
"auto"integral2"tiled" 방법을 사용할지 "iterated" 방법을 사용할지를 선택합니다. 대부분의 경우, integral2"tiled" 방법을 사용합니다. integral2는 적분 한계 중 하나가 무한한 경우에 "iterated" 방법을 사용합니다.
"tiled"integral2는 적분 영역을 직사각형 형태로 변환하고 필요에 따라 더 작은 직사각형 영역으로 세분화합니다. 적분 한계는 유한해야 합니다.
"iterated"integral2integral을 호출해 반복적분(Iterated Integral)을 수행합니다. 외부 적분은 xminxxmax에 대해 계산됩니다. 내부 적분은 ymin(x)yymax(x)에 대해 계산됩니다. 적분 한계는 무한할 수 있습니다.

R2026a 이후

벡터화된 계산 수행 여부로, 숫자형 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. 기본적으로 Vectorizedtrue이며, 적분 계산은 더 빠르게 실행되도록 벡터화됩니다. 피적분 함수 fun은 동일한 크기의 배열을 두 개 받아들여 요소별 연산을 수행하고 대응하는 값의 배열을 반환해야 합니다. y의 하한 또는 상한이 함수 핸들인 경우, ymin 또는 ymax는 벡터 인수를 받아 대응하는 값의 벡터를 반환해야 합니다.

Vectorizedfalse로 지정하는 경우, fun, ymin, ymax는 스칼라 인수만 받고 스칼라 값을 반환합니다.

출력 인수

모두 축소

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

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

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

  • 함수가 적분 영역 내에서 불연속을 가질 경우 "iterated" 방법이 더 효율적일 수 있습니다. 하지만 불연속 지점에서 적분을 분할하고 복수의 적분 결과를 합산하면 최상의 성능과 정밀도를 얻을 수 있습니다.

  • 사각형이 아닌 영역에 대해 적분을 구할 때에는 ymin이나 ymax, 또는 둘 다가 함수 핸들이어야 최상의 성능과 정확도를 얻을 수 있습니다. 사각형이 아닌 영역에 대한 적분을 위해 피적분 함수 값을 0으로 설정하지 마십시오. 꼭 해야 할 경우에는 "iterated" 방법을 지정하십시오.

  • ymin, ymax 또는 둘 다가 비유계 함수인 경우에는 "iterated" 방법을 사용합니다.

  • 익명 함수를 파라미터화하면 파라미터 값이 함수 핸들의 수명 동안 지속됩니다. 예를 들어, 함수 fun = @(x,y) x + y + afun이 생성되었을 때의 a 값을 사용합니다. 후에 a의 값을 변경하기로 결정했다면, 익명 함수를 새 값으로 재정의해야 합니다.

  • 적분의 단정밀도 제한 영역을 지정하거나 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.

[2] Shampine, L.F. "MATLAB Program for Quadrature in 2D." Applied Mathematics and Computation 202, no. 1 (August 2008): 266–74. https://doi.org/10.1016/j.amc.2008.02.012.

확장 기능

모두 확장

버전 내역

R2012a에 개발됨

모두 확장