Namensräume
Varianten
Aktionen

std::riemann_zeta, std::riemann_zetaf, std::riemann_zetal

Von cppreference.com
 
 
 
 
double      riemann_zeta( double arg );

double      riemann_zeta( float arg );
double      riemann_zeta( long double arg );
float       riemann_zetaf( float arg );

long double riemann_zetal( long double arg );
(1)
double      riemann_zeta( IntegralType arg );
(2)
1) Berechnet die Riemannsche Zeta-Funktion von arg.
2) Eine Menge von Überladungen oder eine Funktionsschablone, die ein Argument eines beliebigen Ganzzahltyps akzeptiert. Entspricht (1) nach Umwandlung des Arguments in double.

Wie alle Spezialfunktionen ist riemann_zeta nur dann in <cmath> verfügbar, 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 irgendwelche Standardbibliotheksheader einschließt.

Inhalt

[edit] Parameter

arg - Wert eines Fließkomma- oder Ganzzahltyps

[edit] Rückgabewert

Wenn keine Fehler auftreten, Wert der Riemannschen Zeta-Funktion von arg, ζ(arg), definiert für die gesamte reelle Achse

  • Für arg > 1, Σ
    n=1
    n-arg
    .
  • Für 0 ≤ arg ≤ 1,
    1
    1 - 21-arg
    Σ
    n=1
    (-1)n-1
    n-arg
    .
  • Für arg < 0, 2arg
    πarg-1
    sin(
    πarg
    2
    )Γ(1 − arg)ζ(1 − arg)
    .

[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.

[edit] Hinweise

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.

[edit] Beispiel

(funktioniert wie gezeigt mit gcc 6.0)

#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1
#include <cmath>
#include <iostream>
 
int main()
{
    // spot checks for well-known values
    std::cout << "ζ(-1) = " << std::riemann_zeta(-1) << '\n'
              << "ζ(0) = " << std::riemann_zeta(0) << '\n'
              << "ζ(1) = " << std::riemann_zeta(1) << '\n'
              << "ζ(0.5) = " << std::riemann_zeta(0.5) << '\n'
              << "ζ(2) = " << std::riemann_zeta(2) << ' '
              << "(π²/6 = " << std::pow(std::acos(-1), 2) / 6 << ")\n";
}

Ausgabe

ζ(-1) = -0.0833333
ζ(0) = -0.5
ζ(1) = inf
ζ(0.5) = -1.46035
ζ(2) = 1.64493 (π²/6 = 1.64493)

[edit] Externe Links

Weisstein, Eric W. "Riemann Zeta Function." Aus MathWorld--A Wolfram Web Resource.