Namespaces
Variants

std:: cyl_bessel_k, std:: cyl_bessel_kf, std:: cyl_bessel_kl

From cppreference.net
Definiert im Header <cmath>
(1)
float cyl_bessel_k ( float nu, float x ) ;

double cyl_bessel_k ( double nu, double x ) ;

long double cyl_bessel_k ( long double nu, long double x ) ;
(seit C++17)
(bis C++23)
/* floating-point-type */ cyl_bessel_k ( /* floating-point-type */ nu,
/* floating-point-type */ x ) ;
(seit C++23)
float cyl_bessel_kf ( float nu, float x ) ;
(2) (seit C++17)
long double cyl_bessel_kl ( 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_k ( Arithmetic1 nu, Arithmetic2 x ) ;
(A) (seit C++17)
1-3) Berechnet die irreguläre modifizierte zylindrische Bessel-Funktion (auch bekannt als modifizierte Bessel-Funktion zweiter Art) von nu und x . Die Bibliothek bietet Überladungen von std::cyl_bessel_k für alle cv-unqualifizierten Gleitkommatypen als Typ der Parameter nu und x an. (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 irregular modified cylindrical Bessel function (modified Bessel function of the second kind) of nu and x , is returned, that is K nu (x) =
π
2
I -nu (x)-I nu (x)
sin(νπ)
(where I nu (x) is std:: cyl_bessel_i ( nu, x ) ) for x≥0 and non-integer nu ; for integer nu a limit is used.

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 wird und wenn der Benutzer __STDCPP_WANT_MATH_SPEC_FUNCS__ definiert, bevor er Standardbibliotheksheader einbindet.

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

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

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_k ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_k ( 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_k ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_k ( static_cast < double > ( num1 ) ,
    static_cast < double > ( num2 ) )
    .
  • Andernfalls, falls num1 oder num2 den Typ float hat, dann hat std :: cyl_bessel_k ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_k ( static_cast < float > ( num1 ) ,
    static_cast < float > ( num2 ) )
    .
(bis C++23)

Falls num1 und num2 arithmetische Typen haben, dann hat std :: cyl_bessel_k ( num1, num2 ) denselben Effekt wie std :: cyl_bessel_k ( 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 Überladenauflösung nicht zu einem verwendbaren Kandidaten aus den bereitgestellten Überladungen.

(seit C++23)

Beispiel

#include <cmath>
#include <iostream>
#include <numbers>
int main()
{
    double pi = std::numbers::pi;
    const double x = 1.2345;
    // spot check for nu == 0.5
    std::cout << "K_.5(" << x << ") = " << std::cyl_bessel_k(.5, x) << '\n'
              << "calculated via I = "
              << (pi / 2) * (std::cyl_bessel_i(-.5, x)
                 - std::cyl_bessel_i(.5, x)) / std::sin(.5 * pi) << '\n';
}

Ausgabe:

K_.5(1.2345) = 0.32823
calculated via I = 0.32823

Siehe auch

Reguläre modifizierte zylindrische Bessel-Funktionen
(Funktion)
Zylindrische Bessel-Funktionen (erster Art)
(Funktion)

Externe Links

Weisstein, Eric W. "Modifizierte Bessel-Funktion zweiter Art." Von MathWorld — Eine Wolfram Web Resource.