std::cyl_bessel_j, std::cyl_bessel_jf, std::cyl_bessel_jl
Определено в заголовочном файле <cmath> | ||
|---|---|---|
float cyl_bessel_j ( float nu, float x ); double cyl_bessel_j ( double nu, double x ); long double cyl_bessel_j ( long double nu, long double x ); | (1) |
(начиная с C++17) (до C++23) |
/* floating-point-type */ cy_bessel_j( /* floating-point-type */ nu,
/* floating-point-type */ x );
| (начиная с C++23) | |
float cyl_bessel_jf( float nu, float x ); | (2) | (начиная с C++17) |
long double cyl_bessel_jl( long double nu, long double x ); | (3) | (начиная с C++17) |
| Дополнительные перегрузки | ||
Определено в заголовочном файле <cmath> | ||
template< class Arithmetic1, class Arithmetic2 >
/* common-floating-point-type */
cyl_bessel_j( Arithmetic1 nu, Arithmetic2 x );
| (A) | (начиная с C++17) |
nu и x. Библиотека предоставляет перегрузки std::cyl_bessel_j для всех типов с плавающей точкой без cv-квалификаторов в качестве типов параметров nu и x.(начиная с C++23)
Параметры
| nu | - | порядок функции |
| x | - | аргумент функции |
Возвращаемое значение
Если ошибки не возникают, возвращается значение цилиндрической функции Бесселя первого рода для nu и x, то есть J
(для x≥0).
Обработка ошибок
Об ошибках может сообщаться согласно math_errhandling:
- Если аргумент равен NaN, возвращается NaN, а ошибка области определения не сообщается.
- Если nu≥128, поведение определяется реализацией.
Примечания
Реализации, не поддерживающие C++17, но поддерживающие ISO 29124:2010, предоставляют эту функцию, если реализация определяет __STDCPP_MATH_SPEC_FUNCS__ значением не менее 201003L и пользователь определяет __STDCPP_WANT_MATH_SPEC_FUNCS__ до включения любых заголовочных файлов стандартной библиотеки.
Реализации, не поддерживающие ISO 29124:2010, но поддерживающие TR 19768:2007 (TR1), предоставляют эту функцию в заголовочном файле tr1/cmath и пространстве имён std::tr1.
Реализация этой функции также доступна в boost.math.
Дополнительные перегрузки не обязательно должны быть предоставлены в точности в виде (A). Они должны лишь обеспечивать, чтобы для первого аргумента num1 и второго аргумента num2:
| (до C++23) |
| Если Если такого типа с плавающей точкой с наибольшими рангом и подрангом не существует, то разрешение перегрузки не выбирает подходящего кандидата из предоставленных перегрузок. | (начиная с C++23) |
Пример
#include <cmath>
#include <iostream>
int main()
{
// spot check for nu == 0
const double x = 1.2345;
std::cout << "J_0(" << x << ") = " << std::cyl_bessel_j(0, x) << '\n';
// series expansion for J_0
double fct = 1;
double sum = 0;
for (int k = 0; k < 6; fct *= ++k)
{
sum += std::pow(-1, k) * std::pow(x / 2, 2 * k) / std::pow(fct, 2);
std::cout << "sum = " << sum << '\n';
}
}
Вывод:
J_0(1.2345) = 0.653792 sum = 1 sum = 0.619002 sum = 0.655292 sum = 0.653756 sum = 0.653793 sum = 0.653792
См. также
|
(C++17)(C++17)(C++17) | регулярные модифицированные цилиндрические функции Бесселя (функция) |
Внешние ссылки
| Вайсстайн, Эрик У. «Функция Бесселя первого рода». Из MathWorld — веб-ресурса Wolfram. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/special_functions/cyl_bessel_j