std::comp_ellint_2, std::comp_ellint_2f, std::comp_ellint_2l
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float comp_ellint_2 ( float k ); double comp_ellint_2 ( 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) |
std::comp_ellint_2 für alle cv-unqualifizierten Gleitkommazahltypen als Typ des Parameters k bereit.(seit C++23)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) |
[edit] Externe Links
| Weisstein, Eric W. "Complete Elliptic Integral of the Second Kind." From MathWorld — A Wolfram Web Resource. |