std::cyl_neumann, std::cyl_neumannf, std::cyl_neumannl
Definido en el archivo de encabezado <cmath> | ||
double cyl_neumann(double ν, double x ); float cyl_neumannf(float ν, float x ); | (1) | (desde C++17) |
Promovido cyl_neumann( Aritmético ν, Aritmético x ); | (2) | (desde C++17) |
ν
y x
.Promovido
también es longdouble, de lo contrario el tipo de retorno es siempre double.Contenido |
[editar]Parámetros
ν | - | El orden de la función. |
x | - | El argumento de la función. |
[editar]Valor de retorno
Si no se generan errores, devuelve el valor de la función cilíndrica de Neumann (función de Bessel de segunda especie) deν
y x
; es decir Nν(x) =
J ν(x)cos(νπ)-J -ν(x) |
sin(νπ) |
ν(x) es std::cyl_bessel_j(ν,x)) para x≥0 y ν no entera; para una ν entera se usa un límite.
[editar]Manejo de errores
Los errores se pueden informar como se especifica en math_errhandling.
- Si el argumento es NaN, se devuelve NaN y no se informa de un error de dominio.
- Si ν>=128, el comportamiento está definido por la implementación.
[editar]Notas
Las implementaciones que no son compatibles con C++17, pero son compatibles con ISO 29124:2010, proporcionan esta función si __STDCPP_MATH_SPEC_FUNCS__
está definida por la implementación a un valor de al menos 201003L y si el usuario define __STDCPP_WANT_MATH_SPEC_FUNCS__
antes de incluir cualquier archivo de encabezado de la biblioteca estándar.
Las implementaciones que no son compatibles con ISO 29124:2010 pero son compatibles con TR 19768:2007 (TR1), proporcionan esta función en el archivo de encabezado tr1/cmath
y el espacio de nombres std::tr1
.
Una implementación de esta función también se encuentra disponible en Boost.Math.
[editar]Ejemplo
#include <cassert>#include <cmath>#include <iostream>#include <numbers> constdouble π =std::numbers::pi;// or std::acos(-1) in pre C++20 // Para calcular la función cilíndrica de Neumann vía la función cilíndrica de Bessel de// primera especie tenemos que implementar la J₋ᵥ, ya que la invocación directa de// std::cyl_bessel_j(ν,x), de acuerdo con la fórmula anterior, genera 'std::domain_error'// para una ν negativa.// Mal argumento en __cyl_bessel_j. double J₋ᵥ (double ν, double x){returnstd::cos(-ν*π)*std::cyl_bessel_j(-ν,x)-std::sin(-ν*π)* std::cyl_neumann(-ν,x);} double J₊ᵥ (double ν, double x){returnstd::cyl_bessel_j(ν,x);} double Jᵥ (double ν, double x){return ν <0.0? J₋ᵥ(ν,x): J₊ᵥ(ν,x);} int main(){std::cout<<"verificaciones al azar para ν == 0.5\n"<<std::fixed<<std::showpos;double ν =0.5;for(double x =0.0; x <=2.0; x +=0.333){constdouble n = std::cyl_neumann(ν, x);constdouble j =(Jᵥ(ν, x)*std::cos(ν*π)- Jᵥ(-ν, x))/std::sin(ν*π);std::cout<<"N_.5("<< x <<") = "<< n <<", calculado vía J = "<< j <<'\n';assert(n == j);}}
Salida:
verificaciones al azar para ν == 0.5 N_.5(+0.000000) = -inf, calculado vía J = -inf N_.5(+0.333000) = -1.306713, calculado vía J = -1.306713 N_.5(+0.666000) = -0.768760, calculado vía J = -0.768760 N_.5(+0.999000) = -0.431986, calculado vía J = -0.431986 N_.5(+1.332000) = -0.163524, calculado vía J = -0.163524 N_.5(+1.665000) = +0.058165, calculado vía J = +0.058165 N_.5(+1.998000) = +0.233876, calculado vía J = +0.233876
[editar]Véase también
(C++17)(C++17)(C++17) | Funciones cilíndricas de Bessel regulares modificadas. (función) |
(C++17)(C++17)(C++17) | Funciones cilíndricas de Bessel de primera especie. (función) |
(C++17)(C++17)(C++17) | Funciones cilíndricas de Bessel irregulares modificadas (o de segunda especie). (función) |
[editar]Enlaces externos
Weisstein, Eric W. "Función de Bessel de segunda especie." De MathWorld — Un recurso web de Wolfram.