2016-01-15 6 views
-1

Я пытаюсь найти библиотеку/функцию, которая вычисляет функцию Бесселя первого рода, но с нецелыми значениями. У меня есть следующая программа.C++: функция Бесселя с нецелыми

// Include standard libraries 
    #include <cstdlib> 
    #include <cmath> 
    #include <vector> 
    #include <array> 
    #include <iostream> 


    int main(int nargs, char* args[]) 
    { 
    std::cout << "bessel function " << jn(5./2., 1.) << "\n" ; 
    } 

Однако, кажется, эта функция вычисляет только для целочисленных значений, так что в данном примере я получаю первую функцию Бесселя при п = 2.

Кто-нибудь знает, как я могу определить первую функцию Бесселя с нецелыми значениями?

EDIT: Я хочу найти функцию на C++, которая вычисляет J_ (5/2) (x) для меня.

+0

2 + 1/2 - целое число. попробуйте 2 + 1.0/2 вместо –

+0

Я тоже пробовал 2.5, что тоже не работает. – chverb

+0

Что такое 'jn()' на самом деле? –

ответ

1

boost библиотека может быть ответом. Функция Бесселя первого рода называется cyl_bessel_j(v, x). Второй вид cyl_neumann(v, x). Оба работают по-настоящему v.

Интересной альтернативной является библиотека ROOT от ЦЕРНА с lot of functions для научных вычислений.

+0

Я посмотрел в Boost, но все, что я могу найти для функции bessel первого рода, это: T bessel_jn (int n, T x, const Policy & pol) – chverb

+0

http://www.boost.org/doc/libs/1_52_0/libs /math/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html –

+0

Я получаю это ... Но cyl_bessel_j_imp, кажется, проверяет, является ли ваш ввод целым: if (floor (v) == v) { T r = cyl_bessel_j_imp (v, T (-x), t, pol); if (iround (v, pol) & 1) r = -r; return r; } еще политика возврата :: raise_domain_error ( функция, "Got х =% 1%, но мы должны х> = 0", х, POL); } T j, y; bessel_jy (v, x, & j, & y, need_j, pol); return j; } – chverb