[ GO FOR IT ] 2) 実数の階乗

問題:

ある検索サイトに5!と入力するとその計算結果である120が表示されます。
その検索サイトに2.5!と入力するとなんと3.32335097と表示されます。
さらにその検索サイトに(-1.9)!と入力すると-10.5705641と表示されます。
きっとそれらの仕組みはとても難しくて企業秘密に違いないので是非ともこれらを実行するプログラムを作ってほしい。
ただし、君のPCは古いのでネットワークや便利で高度な数学関数は入っていません。
入っている数学関数はsin,cos,tan,log,pow,floorなどの初歩的な関数のみです、残念ながら。

i)入力された整数a(0<=a<=10)の階乗を求めるプログラムを作ってください。 ii)入力された実数a(0<=a<=10)の階乗を求めるプログラムを作ってください。 iii)入力された実数a(-1.9<=a<=-1.1)の階乗を求めるプログラムを作ってください。 回答(C++プログラムコード):

プログラムコード:LifeClock.cpp
URL: http://leybreeze.com/blog/wp-content/uploads/2012/02/RealNumberFactorial.cpp

回答できた問題の出力:
入力によって違います。

アルゴリズムの簡単な説明:
実数の階乗と言うと、ガンマ関数のことです。
使用可能な数学関数はsin,cos,tan,log,pow,floorなどの初歩的な関数のみですから、Lanczos approximationというの近似法は使えます。
(ご参考まで:http://en.wikipedia.org/wiki/Lanczos_approximation )

実行方法:RealNumberFactorial.exe (msvcp100d.dllは必要です。)実行して実数の実部と虚部を入力してください
URL: http://leybreeze.com/blog/wp-content/uploads/2012/02/RealNumberFactorial.exe

実行環境:Windows XP/Vista/7

ライセンス:GPLv3

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注