![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Modified Bessel Functions of the First and Second KindsBoost , Math Toolkit 2.5.0 , Bessel Functions
|
Microsoft Visual C++ версия 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Бессел I0: Mathworld Data (целая версия) |
Макс = 0,877ε (Средний = 0,549ε) |
Макс = 4.57ε (Средний = 2.1ε) |
Max = 0ε (Mean = 0ε) |
Макс = 4.54ε (Средний = 2.11ε) |
Бессель I1: Mathworld Data (целая версия) |
Макс = 0.885ε (Средний = 0.55ε) |
Макс = 7.83ε (Средний = 2.79ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 6,52ε (Средний = 2,25ε) |
Бессел In: Mathworld Data (целая версия) |
Макс = 3.46ε (Средний = 1.32ε) |
Max = 1.8ε (Mean = 1.33ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 463ε (Средний = 140ε) |
Table 6.45. Error rates for cyl_bessel_i
Microsoft Visual C++ версия 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Бессел I0: Mathworld Data |
Макс = 0,877ε (Средний = 0,549ε) |
Max = 4.57ε (Mean = 2.1ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 4.54ε (Средний = 2.11ε) |
Бессель I1: Mathworld Data |
Макс = 0.885ε (Средний = 0.55ε) |
Max = 7.83ε (Mean = 2.79ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 6,52ε (Средний = 2,25ε) |
Бессел In: Mathworld Data |
Макс = 3.46ε (Средний = 1.32ε) |
Max = 1.8ε (Mean = 1.33ε) |
Max = 0ε (Mean = 0ε) |
Макс = 463ε (Средний = 140ε) |
Бессел Ив: Данные математического мира |
Макс = 2.97ε (Средний = 1.33ε) |
Max = 4.12ε (Mean = 1.85ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 4.12ε (Средний = 1,95ε) |
Бессел В: Случайные данные |
Макс = 9,67ε (Средний = 1,89ε) |
Макс = 6.79ε (Mean = 1.15ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 176ε (Средний = 39.2ε) |
Бессель Ив: Случайные данные |
Макс = 7,46ε (Средний = 1,54ε) |
Макс = 8.35ε (Средний = 1,49ε) |
Макс = 0.661ε (Mean = 0.0441ε) |
Макс = 283ε (Средний = 88.4ε) |
Бессель Ив: Данные математического мира (большие значения) |
Макс = 3,67ε (Средний = 1,64ε) |
Max = 14.7ε (Mean = 6.57ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 14,7ε (Средний = 6,59ε) |
Table 6.46. Error rates for cyl_bessel_k (integer orders)
Microsoft Visual C++ версия 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Бессел K0: Данные Mathworld (целая версия) |
Макс = 1.55ε (Средний = 0.837ε) |
Макс = 4.16ε (Средний = 1,46ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 4.16ε (Средний = 1,49ε) |
Бессел К1: Данные Mathworld (целая версия) |
Макс = 1ε (Средний = 0,573ε) |
Max = 1.8ε (Mean = 1.02ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 1,8ε (Средний = 1,02ε) |
Бессел Кн: Данные Mathworld (целая версия) |
Макс = 3,63ε (Средний = 1,46ε) |
Max = 4.48ε (Mean = 2.14ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 4,48ε (Средний = 1,98ε) |
Table 6.47. Error rates for cyl_bessel_k
Microsoft Visual C++ версия 12.0 |
GNU C++ версия 5.1.0 |
GNU C++ версия 5.1.0 |
Солнечный компилятор версии 0x5130 |
|
---|---|---|---|---|
Бессел К0: Данные математического мира |
Макс = 1.55ε (Средний = 0.837ε) |
Макс = 4.16ε (Средний = 1,46ε) |
Max = 0ε (Mean = 0ε) |
Макс = 4.16ε (Средний = 1,49ε) |
Бессел К1: Данные математического мира |
Макс = 1ε (Средний = 0,573ε) |
Max = 1.8ε (Mean = 1.02ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 1,8ε (Средний = 1,02ε) |
Бессел Кн: Данные математического мира |
Макс = 3,63ε (Средний = 1,46ε) |
Max = 4.48ε (Mean = 2.14ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 4,48ε (Средний = 1,98ε) |
Бессел Кв: Данные математического мира |
Макс = 4.78ε (Средний = 2.2ε) |
Макс = 3.58ε (Средний = 2.44ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 3,58ε (Средний = 2,29ε) |
Бессел Кв: Данные математического мира (большие значения) |
Макс = 59,8ε (Средний = 26,9ε) |
Max = 42.3ε (Mean = 21ε) |
Макс = 0ε (Mean = 0ε) |
Макс = 43.1ε (Средний = 21.3ε) |
Бессел Кн: Случайные данные |
Макс = 7,47ε (Средний = 1,4ε) |
Max = 4.55ε (Mean = 1.09ε) |
Макс = 0,764ε (Mean = 0,0348ε) |
Макс = 4.55ε (Средний = 1.21ε) |
Бессел Кв: Случайные данные |
Макс = 8,33ε (Средний = 1,62ε) |
Max = 7.88ε (Mean = 1.48ε) |
Макс = 0,507ε (Mean = 0,0313ε) |
Макс = 7,88ε (Средний = 1,49ε) |
В первую очередь рассматриваются следующие особые случаи:
При вычислении Iv дляx< 0, то ν должно быть целое число или возникает ошибка домена. Если ν является целым числом, то функция нечетная, если ν нечетная и даже если ν четная, и мы можем отражать доx >0.
Для Iv& #160; с v, равным 0, 1 или 0,5, рассматриваются как особые случаи.
В 0 и 1 случаях используются минимаксные рациональные приближения на конечных и бесконечных интервалах. Коэффициенты исходят из:
В то время как корпус 0.5 является простой тригонометрической функцией:
I0,5(x) = sqrt(2 / & #960;x) * sinh(x)
Для Kv& #160; сvцелым числом результат рассчитывается с использованием отношения повторения:
начиная с K0& #160; и K1& #160; которые рассчитываются с использованием рациональных приближений выше. Эти рациональные приближения точны примерно до 19 цифр и поэтому используются только тогда, когда T имеет не более 64 двоичных цифр точности.
Когдаxмало по сравнению сv, яvx & #160; лучше всего вычисляется непосредственно из серии:
В общем случае мы сначала нормализуем ν до<0, [inf]
>с помощью формул отражения:
Пусть μ = ν - пол(ν + 1/2), затем μ является дробной частью ν такой, что |μ |<= 1/2 (это нам нужно для конвергенции позже). Идея состоит в том, чтобы вычислить K& #956;(x) и K& #956; +1(x) и использовать их для получения I& #957;(x) и K& #957;(x).
Алгоритм предложен Темме в Н.М. Темме. О численной оценке модифицированной функции осей третьего рода, Journal of Computational Physics, vol 19, 324 (1975), которая требует двух непрерывных фракций, а также Вронского:
Продолжающиеся фракции вычисляются с использованием модифицированного метода Ленца (W.J. Lentz,).Генерация функций Бесселя в расчетах рассеяния Ми с использованием непрерывных фракций, Прикладная оптика, том 15, 668 (1976) . Их скорости сходимости зависят отх, поэтому нам нужны разные стратегии для большиххи малыхх.
x >v, CF1 нуждается в Ox) итерациях для конвергенции, CF2 быстро сходится.
x<= v, CF1 быстро сходится, CF2 не сходится, когдаx<->
>0.
Когдаxявляется большимx>2], обе непрерывные фракции сходятся (CF1 может быть медленным для действительно большихx. K& #956;& #160; и K& #956; +1& #160; может быть вычислено путем
где
Sтакже представляет собой серию, которая суммируется вместе с CF2, см. I.J. Thompson and A.R. Barnett,Модифицированные функции Бесселя I_v и K_v реального порядка и сложного аргумента с выбранной точностью, Computer Physics Communications, vol 47, 245 (1987).
Когдаxневеликx<2], конвергенция CF2 может потерпеть неудачу (но CF1 работает очень хорошо). Решением здесь является серия Temme:
где
fk& #160; и hk& #160; также вычисляются рекурсиями (с участием гамма-функций), но формулы немного сложны, читатели ссылаются на Н.М. Темме,О численной оценке модифицированной функции Бесселя третьего рода, Journal of Computational Physics, vol 19, 324 (1975). Примечание: Серия Темме сходится только для |μ |<= 1/2.
K& #957;(x) затем вычисляется из прямого повторения, как K& #957; + 1(x). С этими двумя значениями и f& #957;, Вронский дает I& #957;(x) непосредственно.
Статья Modified Bessel Functions of the First and Second Kinds раздела Math Toolkit 2.5.0 Bessel Functions может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Bessel Functions ::
реклама |