Namespaces
Variants

std:: sph_legendre, std:: sph_legendref, std:: sph_legendrel

From cppreference.net
Défini dans l'en-tête <cmath>
(1)
float sph_legendre ( unsigned l, unsigned m, float theta ) ;

double sph_legendre ( unsigned l, unsigned m, double theta ) ;

long double sph_legendre ( unsigned l, unsigned m, long double theta ) ;
(depuis C++17)
(jusqu'à C++23)
/* floating-point-type */ sph_legendre ( unsigned l, unsigned m,
/* floating-point-type */ theta ) ;
(depuis C++23)
float sph_legendref ( unsigned l, unsigned m, float theta ) ;
(2) (depuis C++17)
long double sph_legendrel ( unsigned l, unsigned m, long double theta ) ;
(3) (depuis C++17)
Défini dans l'en-tête <cmath>
template < class Integer >
double sph_legendre ( unsigned l, unsigned m, Integer theta ) ;
(A) (depuis C++17)
1-3) Calcule la fonction de Legendre associée sphérique de degré l , d'ordre m et d'angle polaire theta . La bibliothèque fournit des surcharges de std::sph_legendre pour tous les types à virgule flottante non qualifiés cv comme type du paramètre theta . (depuis C++23)
A) Des surcharges supplémentaires sont fournies pour tous les types entiers, qui sont traités comme double .

Table des matières

Paramètres

l - degré
m - ordre
theta - angle polaire, mesuré en radians

Valeur de retour

If no errors occur, returns the value of the spherical associated Legendre function (that is, spherical harmonic with ϕ = 0) of l , m , and theta , where the spherical harmonic function is defined as Y m
l
(θ,φ) = (-1) m
[
(2l+1)(l-m)!
4π(l+m)!
] 1/2
P m
l
(cos(θ))e imφ
where P m
l
(x)
is std:: assoc_legendre ( l, m, x ) ) and |m|≤l .

Notez que le terme de phase de Condon-Shortley (-1) m
est inclus dans cette définition car il est omis de la définition de P m
l
dans std::assoc_legendre .

Gestion des erreurs

Les erreurs peuvent être signalées comme spécifié dans math_errhandling .

  • Si l'argument est NaN, NaN est retourné et aucune erreur de domaine n'est signalée.
  • Si l≥128 , le comportement est défini par l'implémentation.

Notes

Les implémentations qui ne prennent pas en charge C++17, mais prennent en charge ISO 29124:2010 , fournissent cette fonction si __STDCPP_MATH_SPEC_FUNCS__ est défini par l'implémentation à une valeur d'au moins 201003L et si l'utilisateur définit __STDCPP_WANT_MATH_SPEC_FUNCS__ avant d'inclure tout en-tête de bibliothèque standard.

Les implémentations qui ne prennent pas en charge ISO 29124:2010 mais supportent TR 19768:2007 (TR1), fournissent cette fonction dans l'en-tête tr1/cmath et l'espace de noms std::tr1 .

Une implémentation de la fonction harmonique sphérique est disponible dans boost.math , et elle se réduit à cette fonction lorsque appelée avec le paramètre phi fixé à zéro.

Les surcharges supplémentaires ne sont pas requises d'être fournies exactement comme (A) . Elles doivent seulement être suffisantes pour garantir que pour leur argument num de type entier, std :: sph_legendre ( int_num1, int_num2, num ) ait le même effet que std :: sph_legendre ( int_num1, int_num2, static_cast < double > ( num ) ) .

Exemple

#include <cmath>
#include <iostream>
#include <numbers>
int main()
{
    // vérification ponctuelle pour l=3, m=0
    double x = 1.2345;
    std::cout << "Y_3^0(" << x << ") = " << std::sph_legendre(3, 0, x) << '\n';
    // solution exacte
    std::cout << "exact solution = "
              << 0.25 * std::sqrt(7 / std::numbers::pi)
                  * (5 * std::pow(std::cos(x), 3) - 3 * std::cos(x))
              << '\n';
}

Sortie :

Y_3^0(1.2345) = -0.302387
exact solution = -0.302387

Voir aussi

polynômes de Legendre associés
(fonction)

Liens externes

Weisstein, Eric W. "Spherical Harmonic." De MathWorld — Une ressource Web Wolfram.