std::sph_legendre, std::sph_legendref, std::sph_legendrel
| 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 ); |
(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) |
std::sph_legendre für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters theta bereit.(seit C++23)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 Yml(theta,ϕ) = (-1)m
[
| (2l+1)(l-m)! |
| 4π(l+m)! |
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
| (C++17)(C++17)(C++17) |
assoziierte Legendre-Polynome (Funktion) |
[edit] Weblinks
| Weisstein, Eric W. "Spherical Harmonic." From MathWorld - A Wolfram Web Resource. |