Мне нужно реализовать приближение к обратному , т.е. функцию квадратного суперкорня (ssrt). Например, означает, что . Меня не так интересует какая-либо конкретная точность / битовая глубина, как понимание того, какие у меня варианты, в отличие от более простых подходов с использованием степенных рядов.
Wolfram Alpha дает хорошее символическое решение в терминах W-функции Ламберта (т. ). Википедия дает такую же формулу , как и эквивалент . Учитывая, что имеется достаточное количество информации о вычислениях [1] [2], технически это все, что нужно для реализации чего-либодля различных требований. Я знаю, по крайней мере, две книги, в которых подробно описывается аппроксимация [3] [4], поэтому есть даже много возможностей для оптимизации в этом направлении.
Однако у меня есть два вопроса:
- Были ли где-нибудь опубликованы методы аппроксимации, специфичные для этой функции?
- Идет ли оно под другим именем, кроме «квадратный супер-корень», что немного облегчит поиск ссылок?
Википедия / Google опубликовали некоторые ссылки, посвященные более общим функциям «тетратации», которые включают в качестве особого случая, но большинство из них, похоже, более приспособлены для изучения / определения общих случаев.
-
- Corless, R .; Gonnet, G .; Заяц, Д .; Джеффри Д. Кнут, Дональд (1996), «О функции Ламберта W» http://www.apmaths.uwo.ca/~djeffrey/Offprints/W-adv-cm.pdf
- Электронная библиотека математических функций . http://dlmf.nist.gov/4.13
- Crenshaw, Jack W. (2000), Math Toolkit для программирования в реальном времени.
- Харт, Джон Ф. (1978), Компьютерные аппроксимации.
- Chapeau-Blondeau, F. and Monir, A. (2002). Численная оценка W-функции Ламберта и ее применение для генерации обобщенного гауссовского шума с показателем 1/2. Операции IEEE по обработке сигналов 50, 2160-2165. http://www.istia.univ-angers.fr/~chapeau/papers/lambertw.pdf
- Минеро, Пол. Быстрая Приблизительная Ламберта W . http://www.machinedlearnings.com/2011/07/fast-approximate-lambert-w.html
-
Обновить
После этого еще несколько исследований , в течение последних нескольких дней, я до сих пор не нашел своего рода практических «Кренего стиль» лечение S S г т ( х ) я надеялся на, но я нашел новый Ссылка стоит документировать здесь. На третьей странице в [ 5 ] есть раздел, озаглавленный «Быстрое приближение», в котором подробно рассказывается о приближении W ( x ) в контексте генерации шума. Интересно отметить, что плотность вероятности «гауссовского шума с показателем 1/2» [в статье] выглядит поразительно похожей на гистограмму в ответе Келленджба наэтот вопрос об обнаружении отсечения сигнала .
Кроме того, ссылка, предоставленная rwong в комментариях является отличным ресурсом для фактической реализации W ( x ) , и она даже ссылается на лицензированный проект BSD автора под названием fastapprox , который включает в себя описанную реализацию.
источник
Ответы:
Некоторые числовые удары в темноте дали следующий результат для итеративного подхода:
Мы ищем решение y = f (x), где y ^ y = x.
Значение для является фиксированной точкой вышеприведенного уравнения, и эмпирически оно кажется сходящимся для некоторых значений x , но для больших значений x оно колеблется или расходится.y x x
Затем я попробовал подход, подобный итеративному квадратному корню Ньютона:
где y * должен представлять собой не сходящийся, но оптимистичный ответ, который сохраняет точность, если вы угадаете точное начальное значение (в квадратном корне y 2 = x, это y * = x / y).
Это кажется сходящимся, но очень медленно в нижнем конце (около x m i n = ( 1x )xmin=(1e)1e
Это также выглядит, как хорошее первоначальное предположение: .y0=ln(x)+1
Поэтому я подумал, что, может быть, есть более подходящее решение:
для некоторого значения a , являющегося функцией x .y=(1−a)×y+a×g(x,y) a x
Тогда я нашел что-то интересное.
Если я получу сходящийся ответ из вышеприведенного подхода для y y = x , а затем вычислю y 2 = g ( x , y + ϵ ) = e ln ( x )y yy=x , этовыглядит так,как будтоy2-y= приблизительноϵ×(-ln(y)).... например, если у нас было предположение, чтоy1=y+ϵдля некоторого неизвестногоϵ, и вычислилиy2=g(x,y1), то(y2-y)≈ϵ×(-ln(y2=g(x,y+ϵ)=eln(x)y+ϵ y2−y ϵ×(−ln(y)) y1=y+ϵ ϵ y2=g(x,y1) . (Просто чтобы уточнить, у меня нет анализа, чтобы подтвердить это, но цифры просто выпали из какой-то численной оценки, которую я выполнил.)(y2−y)≈ϵ×(−ln(y))=(y1−y)×(−ln(y))
Решите для линейных членов в , и вы получите y = y 2 + ln ( y ) × y 1y y=y2+ln(y)×y11+ln(y) ln(y1) ln(y)
(Кто-то может показать, что это в некотором роде эквивалентно Ньютон-Рафсону, но я думаю, что это за пределами моих возможностей.)
источник