Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
Definiert in der Header-Datei <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)
/* Gleitkommazahltyp */ comp_ellint_2( /* Gleitkommazahltyp */ 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 in der Header-Datei <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 stellt Überladungen von std::comp_ellint_2 für alle cv-unqualifizierten Gleitkommazahltypen als Typ des Parameters k bereit.(seit C++23)
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.

Inhalt

[edit] Parameter

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

[edit] Rückgabewert

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

[edit] Fehlerbehandlung

Fehler können wie in math_errhandling angegeben gemeldet werden.

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

[edit] Anmerkungen

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 Standardbibliotheks-Header einschließt.

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

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

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

Die zusätzlichen Überladungen müssen nicht exakt als (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom ganzzahligen Typ std::comp_ellint_2(num) die gleiche Wirkung hat wie std::comp_ellint_2(static_cast<double>(num)).

[edit] 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

[edit] Siehe auch

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

[edit] Externe Links

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