Main Content

lambertw

람베르트 W 함수

설명

예제

lambertw(x)람베르트 W 함수의 주 분지를 반환합니다. 이 구문은 lambertw(0,x)와 동일합니다.

예제

lambertw(k,x)는 람베르트 W 함수의 k번째 분지입니다. 이 구문은 k = 0 또는 k = -1인 경우에만 실수 값을 반환합니다.

예제

모두 축소

람베르트 W 함수 W(x)는 방정식 x = W(x)eW(x)의 해 집합입니다.

아래의 방정식을 풉니다. 해는 람베르트 W 함수입니다.

syms x W
eqn = x == W*exp(W);
solve(eqn,W)
ans =
lambertw(0, x)

람베르트 W 함수의 분지가 방정식 x = W*eW의 유효한 해임을 확인합니다.

k = -2:2;
eqn = subs(eqn,W,lambertw(k,x));
isAlways(eqn)
ans =
  1×5 logical array
     1     1     1     1     1

lambertw는 해당 인수에 따라 부동소수점 결과를 반환할 수도 있고 정확한 기호 결과를 반환할 수도 있습니다.

다음 숫자에 대해 람베르트 W 함수를 계산합니다. 이러한 숫자는 기호 객체가 아니므로 부동소수점 결과를 얻게 됩니다.

A = [0 -1/exp(1); pi i];
lambertw(A)
ans =
   0.0000 + 0.0000i  -1.0000 + 0.0000i
   1.0737 + 0.0000i   0.3747 + 0.5764i
lambertw(-1,A)
ans =
     -Inf + 0.0000i  -1.0000 + 0.0000i
  -0.3910 - 4.6281i  -1.0896 - 2.7664i

기호 객체로 변환된 숫자에 대해 람베르트 W 함수를 계산합니다. 대부분의 기호 숫자(즉, 정확한 숫자 표현)에 대해 lambertw는 계산되지 않은 기호 호출을 반환합니다.

A = [0 -1/exp(sym(1)); pi i];
W0 = lambertw(A)
W0 =
[               0,             -1]
[ lambertw(0, pi), lambertw(0, 1i)]
Wmin1 = lambertw(-1,A)
Wmin1 =
[             -Inf,              -1]
[ lambertw(-1, pi), lambertw(-1, 1i)]

double을 사용하여 기호 결과를 double형으로 변환합니다.

double(W0)
ans =
   0.0000 + 0.0000i  -1.0000 + 0.0000i
   1.0737 + 0.0000i   0.3747 + 0.5764i

람베르트 W 함수의 두 주 분지 W0(x)W-1(x)를 플로팅합니다.

syms x
fplot(lambertw(x))
hold on
fplot(lambertw(-1,x))
hold off
axis([-0.5 4 -4 2])
title('Lambert W function, two main branches')
legend('k=0','k=1','Location','best')

Figure contains an axes object. The axes object with title Lambert W function, two main branches contains 2 objects of type functionline. These objects represent k=0, k=1.

복소 평면 위에 람베르트 W 함수의 주 분지를 플로팅합니다.

fmesh를 사용하여 람베르트 W 함수의 실수 값을 플로팅합니다. 'ShowContours''On'으로 설정하여 등고선을 함께 플로팅합니다.

syms x y
f = lambertw(x + 1i*y);
interval = [-100 100 -100 100];
fmesh(real(f),interval,'ShowContours','On')

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

람베르트 W 함수의 허수 값을 플로팅합니다. 플롯에는 음의 실수축을 따라 분지 절단이 있습니다. 등고선을 따로 플로팅합니다.

fmesh(imag(f),interval)

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

fcontour(imag(f),interval,'Fill','on')

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

람베르트 W 함수의 절댓값을 플로팅합니다.

fmesh(abs(f),interval,'ShowContours','On')

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

입력 인수

모두 축소

입력값으로, 숫자, 벡터, 행렬, 배열로 지정되거나 기호 숫자, 기호 변수, 기호 배열, 기호 함수, 기호 표현식으로 지정됩니다.

적어도 하나의 입력 인수는 스칼라여야 합니다. 그렇지 않으면 두 인수가 동일한 크기의 벡터 또는 행렬이어야 합니다. 하나의 입력 인수가 스칼라이고 다른 인수는 벡터 또는 행렬인 경우 lambertw는 스칼라를 다른 인수와 동일한 크기의 벡터 또는 행렬로 확장하는데 이때 모든 요소는 해당 스칼라의 값을 갖습니다.

람베르트 W 함수의 분지로, 정수, 정수로 구성된 벡터나 행렬, 기호 정수 또는 정수로 구성된 기호 벡터나 행렬로 지정됩니다.

적어도 하나의 입력 인수는 스칼라여야 합니다. 그렇지 않으면 두 인수가 동일한 크기의 벡터 또는 행렬이어야 합니다. 하나의 입력 인수가 스칼라이고 다른 인수는 벡터 또는 행렬인 경우 lambertw는 스칼라를 다른 인수와 동일한 크기의 벡터 또는 행렬로 확장하는데 이때 모든 요소는 해당 스칼라의 값을 갖습니다.

세부 정보

모두 축소

람베르트 W 함수

람베르트 W 함수 W(x)는 모든 복소수 x에 대한 방정식 yey=x의 해 y를 나타냅니다.

  • 복소수 x에 대해, 방정식은 무한한 개수의 해 y = lambertW(k,x)를 갖습니다. 여기서 k의 범위는 모든 정수입니다.

  • x ≥ 0인 모든 실수에 대해, 방정식은 정확히 하나의 실수 해 y = lambertW(x) = lambertW(0,x)를 갖습니다.

  • e1<x<0인 실수 x에 대해, 방정식은 정확히 두 개의 실수 해를 갖습니다. 큰 해는 y = lambertW(x)로 나타나고 작은 해는 y = lambertW(–1,x)로 나타납니다.

  • x=e1에 대해, 방정식은 정확히 하나의 실수 해 y = –1 = lambertW(0, –exp(–1)) = lambertW(–1, -exp(–1))을 갖습니다.

참고 문헌

[1] Corless, R.M., G.H. Gonnet, D.E.G. Hare, D.J. Jeffrey, and D.E. Knuth. "On the Lambert W Function." Advances in Computational Mathematics, Vol. 5, pp. 329–359, 1996.

버전 내역

R2006a 이전에 개발됨

참고 항목

함수