Які методи наближення існують для функції суперкореня квадрата?


17

Мені потрібно здійснити наближення до зворотного , тобто функції квадратного суперкореня (ssrt). Наприклад, означає, що . Мене не так цікавить якась конкретна точність / бітова глибина, оскільки я розумію, які мої варіанти є на відміну від більш прямолінійних підходів, що використовують серію потужностей.ххссrт(2)1.561.561.562

Вольфрам Альфа дає приємне символічне рішення з точки зору функції Ламберта W (тобто ). Вікіпедія дає ту саму формулу , як і еквівалент . Зважаючи на те, що існує достатня кількість інформації щодо обчислень W (x) [1] [2], технічно це все, що потрібно для впровадження чогось для різних вимог. Мені відомо щонайменше дві книги, в яких детально описується наближення \ ln (x) [3] [4], тому є навіть багато місця для оптимізації з цього напрямку.ln(x)/W(ln(x))eW(ln(x))W(x)ln(x)

Однак у мене є два питання:

  1. Чи були опубліковані де-небудь методи наближення, характерні для цієї функції?
  2. Чи іде це за іншою назвою, окрім "квадратного суперкореня", який би полегшив пошук посилань?

У Вікіпедії / Google з'явилися деякі посилання, присвячені більш загальним функціям "тетрації", які включають як особливий випадок, але більшість з них, здається, більш орієнтовані на вивчення / визначення загальних випадків.ssrt(x)

-

  1. Corless, R .; Gonnet, G .; Заєць, Д .; Джеффрі, D .; Knuth, Donald (1996), "Про функцію Lambert W" http://www.apmaths.uwo.ca/~djeffrey/Offprints/W-adv-cm.pdf
  2. Цифрова бібліотека математичних функцій . http://dlmf.nist.gov/4.13
  3. Креншо, Джек В. (2000), Інструментарій з математики для програмування в режимі реального часу.
  4. Харт, Джон Ф. (1978), Комп'ютерні наближення.
  5. Chapeau-Blondeau, F. and Monir, A. (2002). Числова оцінка функції Ламберта W і застосування для генерації узагальненого гауссового шуму з експонентом 1/2. Операції IEEE з обробки сигналів 50, 2160-2165. http://www.istia.univ-angers.fr/~chapeau/papers/lambertw.pdf
  6. Мінеро, Пол. Швидка Приблизна Ламберта W . http://www.machinedlearnings.com/2011/07/fast-approximate-lambert-w.html

-

Оновлення

Провівши кілька останніх досліджень за останні кілька днів, я все ще не знайшов виду практичного "стилю Креншо" лікування s s r t ( x ), на який я сподівався, але знайшов нове Довідкова документація тут варто документувати. На сторінці третьої в [ 5 ] є розділ під назвою "Швидке наближення", який детально описує приближення W ( x ) в контексті створення шуму. Як цікавий бік, щільність ймовірності "гауссового шуму з експонентом 1/2" [у статті] виглядає разюче подібною до гістограми у відповіді Келенджба на[3]ssrt(x)[5]W(x)це питання щодо виявлення відсікання сигналу .

Крім того, посилання, подане rwong у коментарях є чудовим ресурсом для реальної реалізації W ( x ) , і воно навіть посилається на авторський ліцензований проект BSD під назвою fastapprox , який включає описану реалізацію.[6]W(x)



2
Я запитав про це в Meta, оскільки поле коментарів не призначене для розширених дискусій. Підкажіть, будь ласка, як нам тут вирішувати ці питання: Чи є питання щодо чисельного аналізу на тему?

@datageist - Початковий висновок з мета-запитання полягав у тому, що якщо ви хочете використовувати цей чисельний аналіз для обробки даних DSP, то це на тему. Якщо ні, то ні. Як це стосується DSP?
Кевін Вермер

2
@Kevin Він з'явився в контексті розвитку аудіоефекту.
datageist

1
Кожен раз, коли мені потрібно написати процедуру функції Ламберта, я зазвичай використовую наближення, наведені в цій роботі, а потім шліфую за допомогою Ньютона-Рафсона, Галлея чи будь-якого іншого ітеративного методу. Ви можете пристосувати цей підхід до інвертування ...xx

Відповіді:


6

Деякі цифрові удари в темряві давали наступне значення для ітеративного підходу:

Ми шукаємо рішення y = f (x), де y ^ y = x.

ylny=lnx

y=g(x,y)=elnxy

Значення для є фіксованою точкою вищевказаного рівняння, і емпірично воно, здається, збігається для деяких значень x , але для більших значень x воно коливається або розходиться.yxx

Тоді я спробував підхід, подібний до ітеративного квадратного кореня Ньютона:

y=yprevious+y2=y+elnxy2

де y * повинен представляти неконвертуючу, але оптимістичну відповідь, яка підтримує точність, якщо ви вгадаєте точне початкове значення (у квадратному корені y 2 = x, це y * = x / y).

Здається, це сходиться, але дуже повільно в нижньому кінці (біля x m i n = ( 1х )xmin=(1e)1e

Також добре виглядає, що початкова здогадка .y0=ln(x)+1

Тож я подумав, що, можливо, є краще рішення:

для деякого значення a, яке є функцією x .y=(1a)×y+a×g(x,y)ax

Тоді я знайшов щось цікаве.

Якщо я отримаю збіжну відповідь з вищевказаного підходу для y y = x , а потім обчислить y 2 = g ( x , y + ϵ ) = e ln ( x )yyy=x ,здається, щоy2-y= приблизноϵ×(-ln(y)).... наприклад, якби ми мали здогадкуy1=y+ϵдля деякого невідомогоϵ, і обчислилиy2=g(x,y1), тоді(y2-y)ϵ×(-ln(y2=g(x,y+ϵ)=eln(x)y+ϵy2yϵ×(ln(y))y1=y+ϵϵy2=g(x,y1) . (Просто для уточнення, у мене немає аналізу, щоб це підтвердити, але цифри просто вискочили з якихось чисельних оцінок, які я виконував.)(y2y)ϵ×(ln(y))=(y1y)×(ln(y))

Вирішіть для лінійних членів , і ви отримаєте у = у 2 + пров ( у ) × у 1yy=y2+ln(y)×y11+ln(y)ln(y1)ln(y)

y[n+1]=g(x,y[n])+ln(y[n])×y[n]1+ln(y[n])=eln(x)y[n]+ln(y[n])×y[n]1+ln(y[n])

This appears to work very well, with the initial guess y=1+ln(x), and appears to converge within 4 or 5 iterations.

(Someone could probably show that this is equivalent to Newton-Raphson in some way, but I think it's beyond my capability.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.