数学の質問なのかもしれません。
n!の値を普通に求めて、それをスターリングの公式で求めたn!と比較するプログラミングを作る宿題がでたのですが、
n^n√2πn/e^n(1+1/12n+1/288n^2)
の公式を与えられました。
n^nやe^nをそのまま使うと数が大きくなりすぎるので、より正確な数字を求めるためにいったん自然対数におきかえるように指示されています。数学がまったくできないので、ある人に自然対数を使って書き換えるてもらったら、
logΓ(x)=(x-1/2)logx-x+(1/2)log2π+Σ[n=1,∞](-1)^nB_2n/2n(2n-1)x^(2n-1)
という式をもらったのですが、Σや∞の使い方もわからないし、Bっていうのがなになのかすらわかりません。
C++も初心者なうえ数学もまったくだめでとてもこまっています。
いったんlogに置き換えるというのはこういう意味ではないのでしょうか、
n^n√2πn/e^n(1+1/12n+1/288n^2) を途中でわけてそれをlogにおきかえ
(n^n√2πn/e^nのlogと1+1/12n+1/288n^2)のlogを別々に求め*というふうに)
最終的にまた戻すというふうに理解した方がいいのでしょうか。
それと
n^n√2πn/e^n(1+1/12n+1/288n^2)
=pow(n,n)*sqrt(2*PI*n))/exp(n)*(1+1/12*n+1/288*n*n)
この書き方であってますか。
わかりにくい点があれば補足しますので、お願いします。