Перейти к содержанию
    

Модифицированную функцию Бесселя

Ищу библиотеку, которая позволяет вычислить модифицированную функцию Бесселя с экспоненциальным масштабным множителем. Пока что использую GSL из GNUWin32, но она не считает функцию с порядком выше 32-го.

Насколько я понял, в Матлабе используется вот эта библиотека: http://www.netlib.org/amos, но она на фортране :05: ... боюсь, проблематично её будет с MSVC-шным проектом использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите математические библиотеки, идущие в комплекте к Scientific linux. Библиотек несколько, в какой специальные функции не помню. Они добавлены в дистрибутив. Есть в исходных кодах на С. В linux есть транслятор fortran->C, скорее не очень эффективный, но все же.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...позволяет вычислить модифицированную функцию Бесселя с экспоненциальным масштабным множителем. Пока что использую GSL из GNUWin32, но она не считает функцию с порядком выше 32-го

Можно посчитать нулевой и первый порядок с помощью рядов, потом считаете функцию требуемого порядка с помощью рекурсивной формулы. Вполне прилично получалось до 100 порядка, проверял по таблицам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

mdmitry

Насколько я понял, в Scientific Linux используется GSL, и как раз её я использую сейчас. Правда приходится пользоваться версией 1.8, поскольку свежие не понял, как под винду собрать...

За наводку про F2C спасибо, нашёл и попробовал. Исходник конечно не фонтан, но лучше чем ничего. Самое неприятное, что в результате сборки бесселя получается dll-ка размером 132КБ, поскольку приходится фортрановский рантайм прилинковывать. При таких размерах она скорее всего не влезет в страницу кэша и будет тормозить.

 

=GM=

Согласен, решение логичное, и в моём случае удобное, поскольку мне нужно считать I_0, I_n и I_2n для одного аргумента. Но смущает то, что его не используют (как мне показалось) ни в netlib.org/amos ни в GSL. Может при рекурсивном вычислении ошибка накапливается? Там ведь дробно-полиномиальный множитель будет...

А не помните, какая точность получалась в сравнении с таблицами? Мне очень желательно 12 знаков получить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

=GM=

А не помните, какая точность получалась в сравнении с таблицами? Мне очень желательно 12 знаков получить

Давно было, лет 25 назад, считал на фортране ряды Пуассона, плохо сходящиеся, помню, что точность переменных была удвоенная, то ли 64 бита, то ли 80, с таблицами совпадало до последнего знака.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...