Namespaces
Variants

std:: comp_ellint_2, std:: comp_ellint_2f, std:: comp_ellint_2l

From cppreference.net
Definiert im Header <cmath>
(1)
float comp_ellint_2 ( float k ) ;

double comp_ellint_2 ( double k ) ;

long double comp_ellint_2 ( long double k ) ;
(seit C++17)
(bis C++23)
/* floating-point-type */ comp_ellint_2 ( /* floating-point-type */ k ) ;
(seit C++23)
float comp_ellint_2f ( float k ) ;
(2) (seit C++17)
long double comp_ellint_2l ( long double k ) ;
(3) (seit C++17)
Definiert im Header <cmath>
template < class Integer >
double comp_ellint_2 ( Integer k ) ;
(A) (seit C++17)
1-3) Berechnet das vollständige elliptische Integral zweiter Art von k . Die Bibliothek bietet Überladungen von std::comp_ellint_2 für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters k an. (seit C++23)
A) Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als double behandelt werden.

Inhaltsverzeichnis

Parameter

k - elliptischer Modul oder Exzentrizität (ein Gleitkomma- oder Ganzzahlwert)

Rückgabewert

Wenn keine Fehler auftreten, wird der Wert des vollständigen elliptischen Integrals zweiter Art von k , also std::ellint_2(k, π/2) , zurückgegeben.

Fehlerbehandlung

Fehler können gemäß den Angaben in math_errhandling gemeldet werden.

  • Wenn das Argument NaN ist, wird NaN zurückgegeben und kein Domänenfehler gemeldet.
  • Wenn |k|>1 , kann ein Domänenfehler auftreten.

Hinweise

Implementierungen, die C++17 nicht unterstützen, aber ISO 29124:2010 unterstützen, stellen diese Funktion bereit, wenn __STDCPP_MATH_SPEC_FUNCS__ von der Implementierung auf einen Wert von mindestens 201003L definiert wird 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 in boost.math verfügbar .

Der Umfang einer Ellipse mit Exzentrizität k und großer Halbachse a beträgt 4aE(k) , wobei E für std::comp_ellint_2 steht. Wenn die Exzentrizität 0 beträgt, degeneriert die Ellipse zu einem Kreis mit Radius a und der Umfang beträgt 2πa , daher gilt E(0) = π/2 . Wenn die Exzentrizität 1 beträgt, degeneriert die Ellipse zu einer Strecke der Länge 2a, deren Umfang 4a beträgt, daher gilt E(1) = 1 .

Die zusätzlichen Überladungen müssen nicht exakt wie in (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr Argument num vom Ganzzahltyp std :: comp_ellint_2 ( num ) die gleiche Wirkung hat wie std :: comp_ellint_2 ( static_cast < double > ( num ) ) .

Beispiel

#include <cmath>
#include <iostream>
#include <numbers>
int main()
{
    constexpr double hpi = std::numbers::pi / 2.0;
    std::cout << "E(0) = " << std::comp_ellint_2(0) << '\n'
              << "π/2 = " << hpi << '\n'
              << "E(1) = " << std::comp_ellint_2(1) << '\n'
              << "E(1, π/2) = " << std::ellint_2(1, hpi) << '\n';
}

Ausgabe:

E(0) = 1.5708
π/2 = 1.5708
E(1) = 1
E(1, π/2) = 1

Siehe auch

(C++17) (C++17) (C++17)
(unvollständiges) elliptisches Integral zweiter Art
(Funktion)

Externe Links

Weisstein, Eric W. "Complete Elliptic Integral of the Second Kind." Von MathWorld — Eine Wolfram Web Resource.