Main Content

besselh

제3종 베셀 함수(Bessel Function Of Third Kind) (한켈 함수(Hankel Function))

설명

예제

H = besselh(nu,Z)는 배열 Z의 각 요소에 대해 제1종 한켈 함수 Hν(1)(z)=Jν(z)+iYν(z)를 계산합니다.

예제

H = besselh(nu,K,Z)는 배열 Z의 각 요소에 대해 제1종 또는 제2종 한켈 함수 Hν(K)(z)를 계산합니다. 여기서 K1 또는 2입니다.

예제

H = besselh(nu,K,Z,scale)은 오버플로나 정확도 손실을 방지하기 위해 한켈 함수를 스케일링할지 여부를 지정합니다. scale1이면 제1종 한켈 함수 Hν(1)(z)eiZ배만큼 스케일링되고 제2종 한켈 함수 Hν(2)(z)e+iZ배만큼 스케일링됩니다.

예제

모두 축소

한켈 함수 H0(1)(z)의 절댓값과 위상으로 구성된 등고선 플롯을 생성합니다 [1].

영역 값에 대해 그리드를 생성합니다.

[X,Y] = meshgrid(-4:0.002:2,-1.5:0.002:1.5);

이 영역에 대해 한켈 함수(Hankel Function)를 계산한 다음 절댓값 등고선 플롯을 생성합니다.

H = besselh(0,X+1i*Y);
contour(X,Y,abs(H),0:0.2:3.2)
hold on

Figure contains an axes object. The axes object contains an object of type contour.

같은 Figure에 위상의 등고선 플롯을 추가합니다.

contour(X,Y,rad2deg(angle(H)),-180:10:180)
hold off

Figure contains an axes object. The axes object contains 2 objects of type contour.

제2종 한켈 함수의 실수부와 허수부를 플로팅하고 점근적 특성을 검토합니다.

구간 [0.1, 25]에 대해 제2종 한켈 함수 H0(2)(z)=J0(z)-iY0(z)를 계산합니다.

k = 2;
nu = 0;
z = linspace(0.1,25,200);
H = besselh(nu,k,z);

함수의 실수부와 허수부를 플로팅합니다. 동일한 Figure에 선형 결합 J02(z)+Y02(z)를 플로팅합니다. 플롯에서 실수부와 허수부 크기의 점근적 특성을 확인할 수 있습니다.

plot(z,real(H),z,imag(H))
grid on
hold on
M = sqrt(real(H).^2 + imag(H).^2);
plot(z,M,'--')
legend('$J_0(z)$', '$Y_0(z)$', '$\sqrt{J_0^2 (z) + Y_0^2 (z)}$','interpreter','latex')

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent $J_0(z)$, $Y_0(z)$, $\sqrt{J_0^2 (z) + Y_0^2 (z)}$.

복소 평면에서 지수적으로 스케일링된 한켈 함수 H1(2)(z) eiz을 계산하고 스케일링되지 않은 함수와 비교합니다.

복소 평면에서 스케일링되지 않은 2계 한켈 함수를 계산합니다. z가 큰 양의 허수부를 갖는 경우, 함수의 값이 빠르게 발산합니다. 이 현상으로 인해 계산 가능한 값의 범위가 제한됩니다.

k = 2;
nu = 1;
x = -5:0.4:15;
y = x';
z = x + 1i*y;
scaled = 1;
H = besselh(nu,k,z);
surf(x,y,imag(H))
xlabel('real(z)')
ylabel('imag(z)')

Figure contains an axes object. The axes object with xlabel real(z), ylabel imag(z) contains an object of type surface.

이번에는 복소 평면에서 H1(2)(z) eiz을 계산하고 스케일링되지 않은 함수와 비교합니다. 스케일링된 함수는 z가 큰 양의 허수부를 갖는 경우 오버플로와 정확도 손실을 방지함으로써 계산 가능한 값의 범위를 늘립니다.

Hs = besselh(nu,k,z,scaled);
surf(x,y,imag(Hs))
xlabel('real(z)')
ylabel('imag(z)')

Figure contains an axes object. The axes object with xlabel real(z), ylabel imag(z) contains an object of type surface.

입력 인수

모두 축소

방정식 차수로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다. nu한켈 함수의 차수를 지정합니다. nuZ는 크기가 동일하거나, 둘 중 하나가 스칼라일 수 있습니다.

예: besselh(3,Z)

데이터형: single | double

한켈 함수의 종류로, 1 또는 2로 지정됩니다.

  • K = 1이면 besselh는 제1종 한켈 함수 Hν(1)(z)=Jν(z)+iYν(z)를 계산합니다.

  • K = 2이면 besselh는 제2종 한켈 함수 Hν(2)(z)=Jν(z)iYν(z)를 계산합니다.

예: besselh(nu,2,Z)

함수 정의역으로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다. nuZ는 크기가 동일하거나, 둘 중 하나가 스칼라일 수 있습니다.

예: besselh(nu,[1-1i 1+0i 1+1i])

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

함수 스케일링 여부로, 다음 값 중 하나로 지정됩니다.

  • 0(디폴트 값) — 스케일링 안 함

  • 1K의 값에 따라 다음과 같이 besselh의 출력값을 스케일링합니다.

    • K = 1이면 제1종 한켈 함수 Hν(1)(z)eiZ배만큼 스케일링합니다.

    • K = 2이면 제2종 한켈 함수 Hν(2)(z)e+iZ배만큼 스케일링합니다.

    복소 평면에서 imag(Z)의 값이 크고 음수이면 Hν(1)(z)가 오버플로됩니다. 마찬가지로, imag(Z)의 값이 크고 양수이면 Hν(2)(z)가 오버플로됩니다. besselh는 정확도를 손실하거나 배정밀도의 제한을 오버플로하기 쉬우므로 위 두 경우에 이 함수의 출력값을 지수적으로 스케일링하는 것이 유용합니다.

예: besselh(nu,K,Z,1)

세부 정보

모두 축소

한켈 함수와 베셀 방정식

다음 미분 방정식은 베셀 방정식이라고 합니다. 여기서 ν는 실수형 상수입니다.

z2d2ydz2+zdydz+(z2ν2)y=0.

그 해는 베셀 함수라고 합니다.

Jν(z)J–ν(z)로 표현되는 제1종 베셀 함수는 정수가 아닌 ν에 대해 베셀 방정식의 기본 해 집합을 구성합니다. Yν(z)로 표현되는 제2종 베셀 함수는 베셀 방정식의 두 번째 해(Jν(z)의 선형 독립 해)를 구성하며 다음과 같이 정의됩니다.

Yν(z)=Jν(z)cos(νπ)Jν(z)sin(νπ).

제1종 및 제2종 한켈 함수라고도 불리는 제3종 베셀 함수는 베셀 함수들의 선형 결합으로 정의됩니다. 여기서 Jν(z)besselj이고 Yν(z)bessely입니다.

Hν(1)(z)=Jν(z)+iYν(z)Hν(2)(z)=Jν(z)iYν(z).

참고 문헌

[1] Abramowitz, M., and I.A. Stegun. Handbook of Mathematical Functions. National Bureau of Standards, Applied Math. Series #55, Dover Publications, 1965.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |