Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
Definiert in der Header-Datei <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)
/* Gleitkommatyp */ sph_legendre( unsigned l, unsigned m,
                                        /* Gleitkommatyp */ 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 in der Header-Datei <cmath>
template< class Integer >
double      sph_legendre ( unsigned l, unsigned m, Integer theta );
(A) (seit C++17)
1-3) Berechnet die zugeordnete Kugelflächenfunktion vom Grad l, der Ordnung m und dem 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 ganzzahligen Typen bereitgestellt, die als double behandelt werden.

Inhalt

[edit] Parameter

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

[edit] Rückgabewert

Wenn keine Fehler auftreten, wird der Wert der zugeordneten Kugelflächenfunktion (d. h. der Kugelfunktion mit ϕ = 0) von l, m und theta zurückgegeben, wobei die Kugelfunktion definiert ist als Ym
l
(theta,ϕ) = (-1)m
[
(2l+1)(l-m)!
4π(l+m)!
]1/2
Pm
l
(cos(theta))eimϕ
wobei Pm
l
(x)
std::assoc_legendre(l, m, x) ist) und |m|≤l.

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

[edit] Fehlerbehandlung

Fehler können wie in math_errhandling angegeben gemeldet werden.

  • Wenn das Argument NaN ist, wird NaN zurückgegeben und kein Domänenfehler gemeldet.
  • Wenn l≥128, ist das Verhalten implementierungsabhängig.

[edit] 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 beliebige Standardbibliotheks-Header einschließt.

Implementierungen, die ISO 29124:2010 nicht unterstützen, aber TR 19768:2007 (TR1) unterstützen, stellen diese Funktion im Header tr1/cmath im Namespace std::tr1 bereit.

Eine Implementierung der Kugelfunktion ist in boost.math verfügbar und reduziert sich auf diese Funktion, wenn sie mit dem Parameter phi auf Null aufgerufen wird.

Die zusätzlichen Überladungen müssen nicht exakt als (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihre Argument num vom ganzzahligen Typ, std::sph_legendre(int_num1, int_num2, num) die gleiche Wirkung hat wie std::sph_legendre(int_num1, int_num2, static_cast<double>(num)).

[edit] Beispiel

#include <cmath>
#include <iostream>
#include <numbers>
 
int main()
{
    // spot check for l=3, m=0
    double x = 1.2345;
    std::cout << "Y_3^0(" << x << ") = " << std::sph_legendre(3, 0, x) << '\n';
 
    // exact solution
    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

[edit] Siehe auch

assoziierte Legendre-Polynome
(Funktion) [bearbeiten]

[edit] Weblinks

Weisstein, Eric W. "Spherical Harmonic." From MathWorld - A Wolfram Web Resource.