exponenta event banner

lambertw

Функция Ламберта W

Синтаксис

Описание

пример

lambertw(x) возвращает главную ветвь функции Ламберта В. Этот синтаксис эквивалентен lambertw(0,x).

пример

lambertw(k,x) является k4-я ветвь функции Ламберта В. Этот синтаксис возвращает вещественные значения только в том случае, если k = 0 или k = -1.

Примеры

свернуть все

Функция Ламберта W W(x) - набор решений уравнения x = W(x)eW(x).

Решите это уравнение. Решением является функция Ламберта В.

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(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. The axes with title Lambert W function, two main branches contains 2 objects of type functionline. These objects represent k=0, k=1.

Постройте график главной ветви функции Ламберта W на комплексной плоскости.

Постройте график действительного значения функции Ламберта W с помощью fmesh. Одновременная печать контуров с помощью настройки '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. The axes contains an object of type functionsurface.

Постройте график мнимого значения функции Ламберта В. График имеет разрез ответвления вдоль отрицательной вещественной оси. Постройте контуры отдельно.

fmesh(imag(f),interval)

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

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

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

Постройте график абсолютного значения функции Ламберта В.

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

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

Входные аргументы

свернуть все

Ввод, определяемый как число, вектор, матрица или массив, или символьное число, переменная, массив, функция или выражение.

По крайней мере один входной аргумент должен быть скаляром, либо оба аргумента должны быть векторами или матрицами одного размера. Если один входной аргумент является скаляром, а другой - вектором или матрицей, lambertw расширяет скаляр в вектор или матрицу того же размера, что и другой аргумент со всеми элементами, равными этому скаляру.

Ветвь функции Ламберта W, заданная как целое число, вектор или матрица целых чисел, символьное целое число или символьный вектор или матрица целых чисел.

По крайней мере один входной аргумент должен быть скаляром, либо оба аргумента должны быть векторами или матрицами одного размера. Если один входной аргумент является скаляром, а другой - вектором или матрицей, lambertw расширяет скаляр в вектор или матрицу того же размера, что и другой аргумент со всеми элементами, равными этому скаляру.

Подробнее

свернуть все

Функция Ламберта W

Функция Ламберта W (x) представляет решения y уравнения yy = x для любого комплексного числаx.

  • Для комплекса x, у уравнения есть бесконечное число решений y = lambertW (k, x), где k передвигается на все целые числа.

  • Для всего реального x ≥ 0, у уравнения есть точно одно реальное решение y = lambertW (x) = lambertW (0, x).

  • Для вещественных x где e 1 < x < 0 уравнение имеет ровно два вещественных решения. Больший раствор представлен y = lamoW (x), а меньший раствор y = lamoW (-1, x).

  • Для x =−e−1, у уравнения есть точно одно реальное решение y =-1 = lambertW (0,-exp (-1)) = lambertW (-1,-exp (-1)).

Ссылки

[1] Corless, R.M., G.H. Gonnet, D.E.G. Заяц, Ди Джей Джеффри и окружной прокурор Кнут. «На функции Ламберта В.» Достижения в области вычислительной математики, том 5, стр. 329-359, 1996.

См. также

Функции

Представлен до R2006a