Функция Ламберта В
Функция Ламберта В W(x)
набор решений уравнения x = W(x)eW(x)
.
Решите это уравнение. Решение является функцией Ламберта В.
syms x W eqn = x == W*exp(W); solve(eqn,W)
ans = lambertw(0, x)
Проверьте, что ветви функции Ламберта В являются допустимыми решениями уравнения 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
может возвратить или точные символьные результаты с плавающей точкой.
Вычислите функции Ламберта В для этих чисел. Поскольку числа не являются символьными объектами, вы получаете результаты с плавающей точкой.
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
Вычислите функции Ламберта В для чисел, преобразованных в символьные объекты. Для большинства символьных (точных) чисел, 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
Постройте две основных ветви, и , из функции Ламберта В.
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')
Постройте основную ветвь функции Ламберта В на комплексной плоскости.
Постройте действительное значение функции Ламберта В при помощи 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
— Ветвь функции Ламберта ВВетвь функции Ламберта В, заданной как целое число, вектор или матрица целых чисел, символьного целого числа, или символьного вектора или матрицы целых чисел.
По крайней мере один входной параметр должен быть скаляром, или оба аргумента должны быть векторами или матрицами, одного размера. Если один входной параметр является скаляром, и другой вектор или матрица, lambertw
расширяет скаляр в вектор или матрицу одного размера с другим аргументом со всеми элементами, равными тому скаляру.
Функция Ламберта В 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., Г.Х. Гоннет, D.E.G. Заяц, Д.Дж. Джеффри и Д. Нут. "На Функции Ламберта В". Усовершенствования в Вычислительной Математике, Издании 5, стр 329–359, 1996.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.