Namespaces
Variants

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

From cppreference.net
Definiert im Header <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 ) ;
(seit C++17)
(bis C++23)
/* floating-point-type */ cy_bessel_j ( /* floating-point-type */ nu,
/* floating-point-type */ x ) ;
(seit C++23)
float cyl_bessel_jf ( float nu, float x ) ;
(2) (seit C++17)
long double cyl_bessel_jl ( long double nu, long double x ) ;
(3) (seit C++17)
Definiert im Header <cmath>
template < class Arithmetic1, class Arithmetic2 >

/* common-floating-point-type */

cyl_bessel_j ( Arithmetic1 nu, Arithmetic2 x ) ;
(A) (seit C++17)
1) Berechnet die zylindrische Bessel-Funktion erster Art von nu und x . Die Bibliothek bietet Überladungen von std::cyl_bessel_j für alle cv-unqualifizierten Gleitkommatypen als Typ der Parameter nu und x . (seit C++23)
A) Zusätzliche Überladungen werden für alle anderen Kombinationen arithmetischer Typen bereitgestellt.

Inhaltsverzeichnis

Parameter

nu - die Ordnung der Funktion
x - das Argument der Funktion

Rückgabewert

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

Fehlerbehandlung

Fehler können wie in math_errhandling spezifiziert gemeldet werden:

  • Wenn das Argument NaN ist, wird NaN zurückgegeben und kein Domänenfehler gemeldet.
  • Wenn nu≥128 , ist das Verhalten implementierungsdefiniert.

Hinweise

Implementierungen, die C++17 nicht unterstützen, aber ISO 29124:2010 unterstützen, stellen diese Funktion bereit, wenn __STDCPP_MATH_SPEC_FUNCS__ durch die Implementierung auf einen Wert von mindestens 201003L definiert ist und wenn der Benutzer __STDCPP_WANT_MATH_SPEC_FUNCS__ definiert, bevor er beliebige Standardbibliotheksheader einbindet.

Implementierungen, die ISO 29124:2010 nicht unterstützen, aber TR 19768:2007 (TR1) unterstützen, stellen diese Funktion im Header tr1/cmath und im Namespace std::tr1 bereit.

Eine Implementierung dieser Funktion ist ebenfalls verfügbar in boost.math .

Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr erstes Argument num1 und zweites Argument num2 :

  • Falls num1 oder num2 den Typ long double hat, dann hat std :: cyl_bessel_j ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_j ( static_cast < long double > ( num1 ) ,
    static_cast < long double > ( num2 ) )
    .
  • Andernfalls, falls num1 und/oder num2 den Typ double oder einen Ganzzahltyp hat, dann hat std :: cyl_bessel_j ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_j ( static_cast < double > ( num1 ) ,
    static_cast < double > ( num2 ) )
    .
  • Andernfalls, falls num1 oder num2 den Typ float hat, dann hat std :: cyl_bessel_j ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_j ( static_cast < float > ( num1 ) ,
    static_cast < float > ( num2 ) )
    .
(bis C++23)

Falls num1 und num2 arithmetische Typen haben, dann hat std :: cyl_bessel_j ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_j ( static_cast < /* common-floating-point-type */ > ( num1 ) ,
static_cast < /* common-floating-point-type */ > ( num2 ) )
, wobei /* common-floating-point-type */ der Gleitkommatyp mit dem höchsten Gleitkomma-Konvertierungsrang und der höchsten Gleitkomma-Konvertierungsunterrang zwischen den Typen von num1 und num2 ist; Argumente von Ganzzahltyp werden als mit demselben Gleitkomma-Konvertierungsrang wie double betrachtet.

Falls kein solcher Gleitkommatyp mit dem höchsten Rang und Unterrang existiert, dann führt die Überlagerungsauflösung nicht zu einem verwendbaren Kandidaten aus den bereitgestellten Überlagerungen.

(seit C++23)

Beispiel

#include <cmath>
#include <iostream>
int main()
{
    // Stichprobe für nu == 0
    const double x = 1.2345;
    std::cout << "J_0(" << x << ") = " << std::cyl_bessel_j(0, x) << '\n';
    // Reihenentwicklung für 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';
    }
}

Ausgabe:

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

Siehe auch

Reguläre modifizierte zylindrische Bessel-Funktionen
(Funktion)

Externe Links

Weisstein, Eric W. "Bessel Function of the First Kind." Von MathWorld — Eine Wolfram Web Resource.