Namespaces
Variants

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

From cppreference.net
Definido en el encabezado <cmath>
(1)
float comp_ellint_2 ( float k ) ;

double comp_ellint_2 ( double k ) ;

long double comp_ellint_2 ( long double k ) ;
(desde C++17)
(hasta C++23)
/* floating-point-type */ comp_ellint_2 ( /* floating-point-type */ k ) ;
(desde C++23)
float comp_ellint_2f ( float k ) ;
(2) (desde C++17)
long double comp_ellint_2l ( long double k ) ;
(3) (desde C++17)
Definido en el encabezado <cmath>
template < class Integer >
double comp_ellint_2 ( Integer k ) ;
(A) (desde C++17)
1-3) Calcula la integral elíptica completa de segunda especie de k . La biblioteca proporciona sobrecargas de std::comp_ellint_2 para todos los tipos de punto flotante no calificados cv como el tipo del parámetro k . (desde C++23)
A) Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como double .

Contenidos

Parámetros

k - módulo elíptico o excentricidad (un valor de punto flotante o entero)

Valor de retorno

Si no ocurren errores, se devuelve el valor de la integral elíptica completa de segunda especie de k , es decir, std::ellint_2(k, π/2) .

Manejo de errores

Los errores pueden ser reportados como se especifica en math_errhandling .

  • Si el argumento es NaN, se devuelve NaN y no se reporta un error de dominio.
  • Si |k|>1 , puede ocurrir un error de dominio.

Notas

Las implementaciones que no admiten C++17, pero sí admiten ISO 29124:2010 , proporcionan esta función si __STDCPP_MATH_SPEC_FUNCS__ está definido por la implementación con un valor de al menos 201003L y si el usuario define __STDCPP_WANT_MATH_SPEC_FUNCS__ antes de incluir cualquier cabecera de la biblioteca estándar.

Las implementaciones que no admiten ISO 29124:2010 pero sí admiten TR 19768:2007 (TR1), proporcionan esta función en el encabezado tr1/cmath y el espacio de nombres std::tr1 .

Una implementación de esta función también está disponible en boost.math .

El perímetro de una elipse con excentricidad k y semieje mayor a es igual a 4aE(k) , donde E es std::comp_ellint_2 . Cuando la excentricidad es igual a 0 , la elipse degenera en un círculo de radio a y el perímetro es igual a 2πa , por lo tanto E(0) = π/2 . Cuando la excentricidad es igual a 1 , la elipse degenera en una línea de longitud 2a, cuyo perímetro es 4a , por lo tanto E(1) = 1 .

Las sobrecargas adicionales no están obligadas a proporcionarse exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: comp_ellint_2 ( num ) tenga el mismo efecto que std :: comp_ellint_2 ( static_cast < double > ( num ) ) .

Ejemplo

#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';
}

Salida:

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

Véase también

(C++17) (C++17) (C++17)
integral elíptica incompleta de segundo tipo
(función)

Enlaces externos

Weisstein, Eric W. "Complete Elliptic Integral of the Second Kind." De MathWorld — Un recurso web de Wolfram.