Namespaces
Variants

std:: cyl_bessel_j, std:: cyl_bessel_jf, std:: cyl_bessel_jl

From cppreference.net
Défini dans l'en-tête <cmath>
(1)
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 ) ;
(depuis C++17)
(jusqu'à C++23)
/* floating-point-type */ cy_bessel_j ( /* floating-point-type */ nu,
/* floating-point-type */ x ) ;
(depuis C++23)
float cyl_bessel_jf ( float nu, float x ) ;
(2) (depuis C++17)
long double cyl_bessel_jl ( long double nu, long double x ) ;
(3) (depuis C++17)
Défini dans l'en-tête <cmath>
template < class Arithmetic1, class Arithmetic2 >

/* common-floating-point-type */

cyl_bessel_j ( Arithmetic1 nu, Arithmetic2 x ) ;
(A) (depuis C++17)
1) Calcule la fonction de Bessel cylindrique de première espèce de nu et x . La bibliothèque fournit des surcharges de std::cyl_bessel_j pour tous les types à virgule flottante non qualifiés cv comme type des paramètres nu et x . (depuis C++23)
A) Des surcharges supplémentaires sont fournies pour toutes les autres combinaisons de types arithmétiques.

Table des matières

Paramètres

nu - l'ordre de la fonction
x - l'argument de la fonction

Valeur de retour

If no errors occur, value of the cylindrical Bessel function of the first kind of nu and x , that is J ν (x) = Σ
k=0
(-1) k
(x/2) ν+2k
k!Γ(ν+k+1)
(for x≥0 ), is returned.

Gestion des erreurs

Les erreurs peuvent être signalées comme spécifié dans math_errhandling :

  • Si l'argument est NaN, NaN est retourné et aucune erreur de domaine n'est signalée.
  • Si nu≥128 , le comportement est défini par l'implémentation.

Notes

Les implémentations qui ne prennent pas en charge C++17, mais qui prennent en charge ISO 29124:2010 , fournissent cette fonction si __STDCPP_MATH_SPEC_FUNCS__ est défini par l'implémentation à une valeur d'au moins 201003L et si l'utilisateur définit __STDCPP_WANT_MATH_SPEC_FUNCS__ avant d'inclure tout en-tête de la bibliothèque standard.

Les implémentations qui ne prennent pas en charge ISO 29124:2010 mais supportent TR 19768:2007 (TR1), fournissent cette fonction dans l'en-tête tr1/cmath et l'espace de noms std::tr1 .

Une implémentation de cette fonction est également disponible dans boost.math .

Les surcharges supplémentaires ne sont pas tenues d'être fournies exactement comme (A) . Elles doivent seulement être suffisantes pour garantir que pour leur premier argument num1 et second argument num2 :

  • Si num1 ou num2 a le type long double , alors std :: cyl_bessel_j ( num1, num2 ) a le même effet que std :: cyl_bessel_j ( static_cast < long double > ( num1 ) ,
    static_cast < long double > ( num2 ) )
    .
  • Sinon, si num1 et/ou num2 a le type double ou un type entier, alors std :: cyl_bessel_j ( num1, num2 ) a le même effet que std :: cyl_bessel_j ( static_cast < double > ( num1 ) ,
    static_cast < double > ( num2 ) )
    .
  • Sinon, si num1 ou num2 a le type float , alors std :: cyl_bessel_j ( num1, num2 ) a le même effet que std :: cyl_bessel_j ( static_cast < float > ( num1 ) ,
    static_cast < float > ( num2 ) )
    .
(jusqu'en C++23)

Si num1 et num2 ont des types arithmétiques, alors std :: cyl_bessel_j ( num1, num2 ) a le même effet que std :: cyl_bessel_j ( static_cast < /* common-floating-point-type */ > ( num1 ) ,
static_cast < /* common-floating-point-type */ > ( num2 ) )
, où /* common-floating-point-type */ est le type à virgule flottante ayant le plus grand rang de conversion en virgule flottante et la plus grande sous-catégorie de conversion en virgule flottante entre les types de num1 et num2 , les arguments de type entier sont considérés comme ayant le même rang de conversion en virgule flottante que double .

Si aucun tel type à virgule flottante avec le plus grand rang et la plus grande sous-catégorie n'existe, alors la résolution de surcharge ne résulte pas en un candidat utilisable parmi les surcharges fournies.

(depuis C++23)

Exemple

#include <cmath>
#include <iostream>
int main()
{
    // vérification ponctuelle pour nu == 0
    const double x = 1.2345;
    std::cout << "J_0(" << x << ") = " << std::cyl_bessel_j(0, x) << '\n';
    // développement en série pour 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';
    }
}

Sortie :

J_0(1.2345) = 0.653792
sum = 1
sum = 0.619002
sum = 0.655292
sum = 0.653756
sum = 0.653793
sum = 0.653792

Voir aussi

fonctions de Bessel cylindriques modifiées régulières
(fonction)

Liens externes

Weisstein, Eric W. "Bessel Function of the First Kind." De MathWorld — Une ressource Web Wolfram.