Namespaces
Variants

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

From cppreference.net
Definiert im Header <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 ) ;
(seit C++17)
(bis C++23)
/* floating-point-type */ sph_legendre ( unsigned l, unsigned m,
/* floating-point-type */ theta ) ;
(seit C++23)
float sph_legendref ( unsigned l, unsigned m, float theta ) ;
(2) (seit C++17)
long double sph_legendrel ( unsigned l, unsigned m, long double theta ) ;
(3) (seit C++17)
Definiert im Header <cmath>
template < class Integer >
double sph_legendre ( unsigned l, unsigned m, Integer theta ) ;
(A) (seit C++17)
1-3) Berechnet die sphärische assoziierte Legendre-Funktion vom Grad l , Ordnung m und Polarwinkel theta . Die Bibliothek stellt Überladungen von std::sph_legendre für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters theta bereit. (seit C++23)
A) Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als double behandelt werden.

Inhaltsverzeichnis

Parameter

l - Grad
m - Ordnung
theta - Polarwinkel, gemessen in Radiant

Rückgabewert

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 .

Beachten Sie, dass der Condon-Shortley-Phasenterm (-1) m
in dieser Definition enthalten ist, da er in der Definition von P m
l
in std::assoc_legendre weggelassen wird.

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 l≥128 , ist das Verhalten implementierungsdefiniert.

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 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 der sphärischen Harmonischen Funktion ist verfügbar in boost.math , und sie reduziert sich auf diese Funktion, wenn sie mit dem Parameter phi gleich null aufgerufen wird.

Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr Argument num vom Ganzzahltyp std :: sph_legendre ( int_num1, int_num2, num ) dieselbe Wirkung hat wie std :: sph_legendre ( int_num1, int_num2, static_cast < double > ( num ) ) .

Beispiel

#include <cmath>
#include <iostream>
#include <numbers>
int main()
{
    // Stichprobe für l=3, m=0
    double x = 1.2345;
    std::cout << "Y_3^0(" << x << ") = " << std::sph_legendre(3, 0, x) << '\n';
    // exakte Lösung
    std::cout << "exact solution = "
              << 0.25 * std::sqrt(7 / std::numbers::pi)
                  * (5 * std::pow(std::cos(x), 3) - 3 * std::cos(x))
              << '\n';
}

Ausgabe:

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

Siehe auch

Assoziierte Legendre-Polynome
(Funktion)

Externe Links

Weisstein, Eric W. "Spherical Harmonic." Von MathWorld — Eine Wolfram Web-Ressource.