std:: comp_ellint_2, std:: comp_ellint_2f, std:: comp_ellint_2l
|
Definiert im Header
<cmath>
|
||
| (1) | ||
|
float
comp_ellint_2
(
float
k
)
;
double
comp_ellint_2
(
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) |
std::comp_ellint_2
für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters
k
an.
(seit C++23)
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. |