Re: [問題] 有人知道這pi公式的名字嗎?

看板C_and_CPP作者 (海納百川天下歸心)時間13年前 (2010/12/08 01:07), 編輯推噓0(006)
留言6則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《DrStein (啤酒肚)》之銘言: : 上色版 : http://nopaste.csie.org/900f4 : #define NUM_TERM 1000 : int Serial_Pi(double *pi) : { : int i; : double step, x, sum; : sum = 0.0; : step = 1.0/NUM_TERM; : for(i =1; i<= NUM_TERM; i++){ : x = (i - 0.5)*step; : sum += 4.0/(1.0 + x*x); : }/*for i*/ : *pi = step*sum; : return 0; : }/*Serial_Pi*/ : 這公式很棒啊,沒有正負交替。 : 極適合平行計算。 : 收殮又快,做一千項就有小數點七位精度 : Leibniz formula做一千項才到小數點後第三位 0.0 : (或是說Leibniz要作一千兩百萬才只有他一千次的精度) : 有人知道這公式的名字/來源或推導的嗎? : 謝謝 看起來很像 4/(1 + x^2) 的黎曼和0到1的積分,不過不是 x = (i - 0.5)*step; 改成 x = i*step; 才是黎曼和積分 黎曼和積分的收歛速度比這個慢 用 Maple 計算結果: n是NUM_TERM 1/n* sum(4/(((k-1/2)/n)^2 + 1), k=1..n); 得到 (-2*I*n*Psi(n+1/2-I*n)+2*I*n*Psi(n+1/2+I*n)+2*I*n*Psi(1/2-I*n)-2*I*n*Psi(1/2+I*n))/n 其中 Psi = Digamma function http://en.wikipedia.org/wiki/Digamma_function I=√-1 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.101.202

12/08 01:45, , 1F
有趣的是 0.5 改成任何數字都會收歛到pi,只是速度較慢
12/08 01:45, 1F

12/08 01:45, , 2F
目前測試似乎0.5最快
12/08 01:45, 2F

12/08 04:12, , 3F
後來想想 0.5 改成 0至1間的數字都是黎曼積分
12/08 04:12, 3F

12/08 04:16, , 4F
改成 100、10000等較大的數字,則是在0和1附近捨棄或增
12/08 04:16, 4F

12/08 04:16, , 5F
加有限項的黎曼積分
12/08 04:16, 5F

12/08 04:18, , 6F
當n->∞,這些有限項不影響最後的值。
12/08 04:18, 6F
※ 編輯: newversion 來自: 114.32.101.202 (12/08 04:19)
文章代碼(AID): #1C_cd4Jr (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1C_cd4Jr (C_and_CPP)