Функция Lambert W
Функция Ламберта W W(x)
- набор решений уравнения x = W (x) eW(x)
.
Решить это уравнение. Решением является функция Lambert W.
syms x W eqn = x == W*exp(W); solve(eqn,W)
ans = lambertw(0, x)
Проверьте, что ветви функции Lambert 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
может вернуть с плавающей точкой или точные символьные результаты.
Вычислите функции Lambert 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
Вычислите функции Lambert 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
Постройте график двух основных ветвей, и , функции Lambert W.
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')
Постройте график основной ветви функции Lambert W на комплексной плоскости.
Постройте график реального значения функции Lambert W при помощи fmesh
. Одновременно постройте график контуров путем установки 'ShowContours'
на 'On'
.
syms x y f = lambertw(x + 1i*y); interval = [-100 100 -100 100]; fmesh(real(f),interval,'ShowContours','On')
Постройте график мнимого значения функции Lambert W. График имеет срез ветви вдоль отрицательной действительной оси. Постройте графики контуров по отдельности.
fmesh(imag(f),interval)
fcontour(imag(f),interval,'Fill','on')
Постройте график абсолютного значения функции Lambert W.
fmesh(abs(f),interval,'ShowContours','On')
x
- ВходВход, заданный как число, вектор, матрица или массив или символьное число, переменная, массив, функция или выражение.
По крайней мере, один входной параметр должен быть скаляром, или оба аргумента должны быть векторами или матрицами одного размера. Если один входной параметр является скаляром, а другой - вектором или матрицей, lambertw
расширяет скаляр в вектор или матрицу того же размера, что и другой аргумент со всеми элементами, равными этому скаляру.
k
- Ветвь функции Lambert WВетвь функции Lambert W, заданная как целое число, вектор или матрица целых чисел, символьное целое число или символьный вектор или матрица целых чисел.
По крайней мере, один входной параметр должен быть скаляром, или оба аргумента должны быть векторами или матрицами одного размера. Если один входной параметр является скаляром, а другой - вектором или матрицей, lambertw
расширяет скаляр в вектор или матрицу того же размера, что и другой аргумент со всеми элементами, равными этому скаляру.
Функция Lambert W W (x) представляет решения y уравнения для любого комплексного числового x
.
Для комплексных x уравнение имеет бесконечное число решений y = lambertW (k, x), где k областей значений по всем целым числам.
Для всех действительных x ≥ 0, уравнение имеет в точности одно действительное решение y = lambertW (x) = lambertW (0, x).
Для реальных x где , уравнение имеет в точности два действительных решения. Большое решение представлено y = lambertW (x) и меньшее решение y = lambertW (-1, x).
Для , уравнение имеет в точности одно действительное решение y = -1 = lambertW (0, -exp (-1)) = lambertW (-1, -exp (-1)).
[1] Corless, R.M., G.H. Gonnet, D.E.G. Заяц, Д. Дж. Джеффри и Д. Э. Кнут. «О функции Lambert W». Усовершенствования в вычислительной математике, том 5, стр. 329-359, 1996 год.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.