Функция Ламберта W
Функция Ламберта 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')

Постройте график главной ветви функции Ламберта W на комплексной плоскости.
Постройте график действительного значения функции Ламберта W с помощью fmesh. Одновременная печать контуров с помощью настройки 'ShowContours' кому 'On'.
syms x y f = lambertw(x + 1i*y); interval = [-100 100 -100 100]; fmesh(real(f),interval,'ShowContours','On')

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

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

Постройте график абсолютного значения функции Ламберта В.
fmesh(abs(f),interval,'ShowContours','On')

x - ВходВвод, определяемый как число, вектор, матрица или массив, или символьное число, переменная, массив, функция или выражение.
По крайней мере один входной аргумент должен быть скаляром, либо оба аргумента должны быть векторами или матрицами одного размера. Если один входной аргумент является скаляром, а другой - вектором или матрицей, lambertw расширяет скаляр в вектор или матрицу того же размера, что и другой аргумент со всеми элементами, равными этому скаляру.
k - Ветвь функции Ламберта WВетвь функции Ламберта W, заданная как целое число, вектор или матрица целых чисел, символьное целое число или символьный вектор или матрица целых чисел.
По крайней мере один входной аргумент должен быть скаляром, либо оба аргумента должны быть векторами или матрицами одного размера. Если один входной аргумент является скаляром, а другой - вектором или матрицей, lambertw расширяет скаляр в вектор или матрицу того же размера, что и другой аргумент со всеми элементами, равными этому скаляру.
Функция Ламберта W (x) представляет решения y уравнения = x для любого комплексного числаx.
Для комплекса x, у уравнения есть бесконечное число решений y = lambertW (k, x), где k передвигается на все целые числа.
Для всего реального x ≥ 0, у уравнения есть точно одно реальное решение y = lambertW (x) = lambertW (0, x).
Для вещественных x где < x < 0 уравнение имеет ровно два вещественных решения. Больший раствор представлен y = lamoW (x), а меньший раствор y = lamoW (-1, x).
Для , у уравнения есть точно одно реальное решение y =-1 = lambertW (0,-exp (-1)) = lambertW (-1,-exp (-1)).
[1] Corless, R.M., G.H. Gonnet, D.E.G. Заяц, Ди Джей Джеффри и окружной прокурор Кнут. «На функции Ламберта В.» Достижения в области вычислительной математики, том 5, стр. 329-359, 1996.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.