std::assoc_legendre, std::assoc_legendref, std::assoc_legendrel
Definido en el archivo de encabezado <cmath> | ||
double assoc_legendre(unsignedint n, unsignedint m, double x ); float assoc_legendre(unsignedint n, unsignedint m, float x ); | (1) | (desde C++17) |
double assoc_legendre(unsignedint n, unsignedint m, TipoEntero x ); | (2) | (desde C++17) |
Contenido |
[editar]Parámetros
n | - | El grado del polinomio, un valor de tipo entero sin signo. |
m | - | El orden del polinomio, un valor de tipo entero sin signo. |
x | - | el argumento, un valor de tipo entero o de punto flotante. |
[editar]Valor de retorno
Si no ocurren errores, el valor del polinomio asociado de Legendre Pmn de
x
. Es decir, se devuelve (1-x2)m/2
dm |
dxm |
n(x), (donde P
n(x) es el polinomio no asociado de Legendre, std::legendre(n, x)).
Observa que el término de fase Condon-Shortley(-1)m
se omite en esta definición.
[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 |x| > 1, se puede generar un error de dominio.
- Si
n
es mayor que o igual a 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 como boost::math::legendre_p
, excepto que la definición en Boost.Math incluye el término de la fase Condon-Shortley.
Unos pocos de los primeros polinomios asociados de Legendre son:
- assoc_legendre(0, 0, x) = 1
- assoc_legendre(1, 0, x) = x
- assoc_legendre(1, 1, x) = (1-x2
)1/2 - assoc_legendre(2, 0, x) =
(3x21 2
-1) - assoc_legendre(2, 1, x) = 3x(1-x2
)1/2 - assoc_legendre(2, 2, x) = 3(1-x2
)
[editar]Ejemplo
#include <cmath>#include <iostream>double P20(double x){return0.5*(3*x*x-1);}double P21(double x){return3.0*x*std::sqrt(1-x*x);}double P22(double x){return3*(1-x*x);}int main(){std::cout<< std::assoc_legendre(2, 0, 0.5)<<'='<< P20(0.5)<<'\n'<< std::assoc_legendre(2, 1, 0.5)<<'='<< P21(0.5)<<'\n'<< std::assoc_legendre(2, 2, 0.5)<<'='<< P22(0.5)<<'\n';}
Salida:
-0.125=-0.125 1.29904=1.29904 2.25=2.25
[editar]Véase también
(C++17)(C++17)(C++17) | Polinomios de Legendre. (función) |
[editar]Enlaces externos
Weisstein, Eric W. "Polinomio Asociado de Legendre ." De MathWorld – Un recurso web de Wolfram.