std::cyl_bessel_i, std::cyl_bessel_if, std::cyl_bessel_il
Определено в заголовке <cmath> | ||
|---|---|---|
| (1) | ||
float cyl_bessel_i ( float nu, float x ); double cyl_bessel_i ( double nu, double x ); long double cyl_bessel_i ( long double nu, long double x ); |
(с C++17) (до C++23) | |
/* floating-point-type */ cyl_bessel_i( /* floating-point-type */ nu,
/* floating-point-type */ x );
| (с C++23) | |
float cyl_bessel_if( float nu, float x ); | (2) | (с C++17) |
long double cyl_bessel_il( long double nu, long double x ); | (3) | (с C++17) |
| Дополнительные перегрузки | ||
Определено в заголовке <cmath> | ||
template< class Arithmetic1, class Arithmetic2 >
/* common-floating-point-type */
cyl_bessel_i( Arithmetic1 nu, Arithmetic2 x );
| (A) | (с C++17) |
nu и x. Библиотека предоставляет перегрузки std::cyl_bessel_i для всех типов с плавающей точкой без квалификаторов cv в качестве типа параметров nu и x.(с C++23)
Параметры
| nu | - | порядок функции |
| x | - | аргумент функции |
Возвращаемое значение
Если ошибки не возникли, возвращается значение регулярной модифицированной цилиндрической функции Бесселя порядкаnu и x, то есть Inu(x) = Σ∞k=0(x/2)nu+2k/k!Γ(nu+k+1) (для 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 << "I_0(" << x << ") = " << std::cyl_bessel_i(0, x) << '\n';
// series expansion for I_0
double fct = 1;
double sum = 0;
for (int k = 0; k < 5; fct *= ++k)
{
sum += std::pow(x / 2, 2 * k) / std::pow(fct, 2);
std::cout << "sum = " << sum << '\n';
}
}Вывод:
I_0(1.2345) = 1.41886 sum = 1 sum = 1.381 sum = 1.41729 sum = 1.41882 sum = 1.41886
См. также
|
(C++17)(C++17)(C++17) | цилиндрические функции Бесселя (первого рода) (функция) |
Внешние ссылки
| Weisstein, Eric W. "Модифицированная функция Бесселя первого рода." Из MathWorld — Wolfram Web Resource. |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/special_functions/cyl_bessel_i