std::assoc_legendre, std::assoc_legendref, std::assoc_legendrel
| double assoc_legendre( unsigned int n, unsigned int m, double x ); double assoc_legendre( unsigned int n, unsigned int m, float x ); |
(1) | |
| double assoc_legendre( unsigned int n, unsigned int m, IntegralType x ); |
(2) | |
Wie alle speziellen Funktionen ist assoc_legendre nur dann garantiert in <cmath> verfügbar, wenn __STDCPP_MATH_SPEC_FUNCS__ von der Implementierung auf einen Wert von mindestens 201003L definiert ist und wenn der Benutzer __STDCPP_WANT_MATH_SPEC_FUNCS__ definiert, bevor er irgendeine Standardbibliotheks-Header-Datei einbindet.
Inhalt |
[edit] Parameter
| n | - | der Grad des Polynoms, ein Wert vom Typ `unsigned int` |
| m | - | die Ordnung des Polynoms, ein Wert vom Typ `unsigned int` |
| x | - | das Argument, ein Wert vom Fließkomma- oder Ganzzahltyp |
[edit] Rückgabewert
Wenn keine Fehler auftreten, wird der Wert des assoziierten Legendre-Polynoms Pmn von x zurückgegeben, d.h. (1 - x2
)m/2
| dm |
| dxm |
[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 |x| > 1, kann ein Domänenfehler auftreten.
- Wenn
ngrößer oder gleich 128 ist, ist das Verhalten implementierungsdefiniert.
[edit] Anmerkungen
Implementierungen, die TR 29124 nicht unterstützen, aber TR 19768 unterstützen, stellen diese Funktion im Header tr1/cmath und im Namensraum std::tr1 bereit.
Eine Implementierung dieser Funktion ist auch in boost.math verfügbar.
Die ersten assoziierten Legendre-Polynome sind:
- 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
).
[edit] Beispiel
(funktioniert wie gezeigt mit gcc 6.0)
#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1 #include <cmath> #include <iostream> double P20(double x) { return 0.5 * (3 * x * x - 1); } double P21(double x) { return -3.0 * x * std::sqrt(1 - x * x); } double P22(double x) { return 3 * (1 - x * x); } int main() { // spot-checks 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'; }
Ausgabe
-0.125=-0.125 -1.29904=-1.29904 2.25=2.25
[edit] Siehe auch
| Legendre-Polynome (Funktion) |
[edit] Externe Links
Weisstein, Eric W. "Associated Legendre Polynomial." From MathWorld--A Wolfram Web Resource.