1.在matlab中如何算實數(real)雙(!!)階層(factorial)?
例如:0.76029!!=?
2.雙(!!)階層(factorial)與單(!)階層(factorial)之關係為何?
3.
0.48837!!=?
0.48837!=?
請教我如何求?我想要學會方法 .
2007-01-28 15:42:32 · 1 個解答 · 發問者 ? 2 in 電腦與網際網路 ➔ 程式設計
N 天沒人回答,我只好獻醜了!
0! = 1 (定義)
1! = 1 = 1 = 0! * 1
2! = 2 = 1 * 2 = 1! * 2
3! = 6 = 1 * 2 * 3 = 2! * 3
4! = 24 = 1 * 2 * 3 * 4 = 3! * 4
n! = (n-1)! * n
正數階乘定義如下:
Γ(r)=∫0 ∞ (t r-1e-t )dt
因為 n! = n (n-1)!
而
Γ(r+1) = r Γ(r),且Γ(1)=1
所以,Γ(r+1) = r!
所以,
(n+1/2)! = √(π) * Πk=[0,n](2k+1)/2 … … (1)
如:3.5! = √(π) * 1/2 * 3/2 * 5/2 * 7/2 ≒ 11.631728396567448929144224109426
雙階乘(!!)基本定義如下:
0!! = 1 (定義)
1!! = 1 (定義)
n!! = (n-2)!! * n … … (2)
所以,
2!! = 0!! * 2 = 2
3!! = 1!! * 3 = 3
4!! = 2!! * 4 = 8
5!! = 3!! * 5 = 15
6!! = 4!! * 6 = 48
7!! = 5!! * 7 = 105
8!! = 6!! * 8 = 384
非整數階乘定義如下:
負數雙階乘的定義如下:
(n-2)!! = n!! / n (註:由 (2) 式移項而來)
-1!! = 1!! / 1 = 1
-3!! = -1!! / -1 = 1 / -1 = -1
-5!! = -3!! / -3 = -1 / -3 = 1/3
而
-2!! = 0!! / 0 = 1 / 0 =
-4!! = -2!! / -2 = ∞ / -2 = ∞
所以,負偶數的雙階乘是∞
雙階乘也可由階乘來定義:
n! = n!! (n-1)!! (這個看得懂吧!)
(2n)!! = 2nn! (這個有用囉!) … … (3)
(2n+1)!! = (2n+1)! / (2n)!! = (2n+1)! / 2nn!(這個和(3)就可算出所有的了!) … … (4)
因為階乘可算實數(1),所以,用(3)和(4)就可算出非整數的雙階乘。
MatLab 內建的階乘只適用於非負整數(階乘的最基本定義)。
超過這個定義的,可能都要自己寫。
0.48837! ≒ 0.88590710771387380375418909708111
以下純個人亂猜:
圖片參考:http://tw.yimg.com/i/tw/blog/smiley/8.gif
0.48837!! = 2(0.48837 / 2) * 0.48837!
≒ 1.1844234833786596720635438872361 * 0.88590710771387380375418909708111
≒ 1.0492891824683798729506932319386
0.76029!! = 2(0.76029 / 2) * 0.76029!
≒ 1.3014726551234385808542097775527 * 0.92144307504135716660341024367963
≒ 1.1992329654191809719436619159729
2007-02-02 00:10:01 補充:
亂猜根據:公式 (3)
問:為何不用公式 (4)?
答:公式 (4)較麻煩,懶得用!
2007-02-02 15:09:45 補充:
實數階乘的matlab程式,在你問的另一題
http://tw.knowledge.yahoo.com/question/question?qid=1607012501826
裡,有人已經回答。所以,從略。
2007-02-27 21:16:30 補充:
來信問到 5 題,由於過忙,只能慢慢的寫,只舉例說明,就不證明了
3.1 n! = n!! ( n-1)!!
設 n = 8,則是
8! = 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
8!! = 8 * 6 * 4 * 2
7!! = 7 * 5 * 3 * 1
所以
8! = 8!! * 7!!
3.2 (2n)!! = 2^n * n!
設 n = 4, 則是
8!! = 2^4 * 8!
16 * 4 * 3 * 2 * 1
= 2 * 4 * 2 * 3 * 2 * 2 * 2 * 1
= 8 * 6 * 4 * 2
= 8!!
2007-02-27 21:27:24 補充:
因為 ! 已在 (1) 定義為實數範圍,
所以,若能把 !! 只用 ! 算出,那就能把 !! 也定義到實數範圍去。
上一個(就是 (3))已經只用 ! 算出偶數的 !!,
再來這個(就是 (4))想只用 ! 算出奇數的 !!。
(2n+1)!! = (2n+1)! / (2n)!! (這個不好,有 !!,用 (3),把!!換掉)
= (2n+1)! / (2^n*n!)
2007-02-27 21:28:47 補充:
設 n = 4, 則
9!! = 9! / 8 !! = 9! / (2^4 * 4!)
9! = 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1
8!! = 8 * 6 * 4 * 2
9! / 8!! = 9 * 7 * 5 * 3 * 1 = 9!! 沒錯耶!
只是,8!! 要用 (3) 去算,才能達到不用 !! 算 !! 的目的。
(8!! 用 ! 的算法已在上例列出。)
2007-02-27 21:50:01 補充:
2. 非整數階乘的定義:
負的不詳,0! 定義為 1,正實數定義已在正文回答過,解釋如下:
正數階乘定義如下:
Γ(r)=∫0 ∞ (t r-1e-t )dt
因為 n! = n (n-1)!
而
Γ(r+1) = r Γ(r),且Γ(1)=1
所以,Γ(r+1) = r!
就是正實數階乘定義的由來。
寫成看得比較習慣的寫法:
r! = Γ(r+1)
2007-02-27 21:54:52 補充:
1.
3.6 ! = 13.3812858709324493552745220941
3.85! = 19.195079471266412402046621898565
算法:根據 r! = Γ(r+1)
3.6 ! = Γ(3.6 +1) = Γ(4.6 )
3.85! = Γ(3.85+1) = Γ(4.85)
2007-02-01 19:08:26 · answer #1 · answered by ? 7 · 0⤊ 0⤋