看板 Math 關於我們 聯絡資訊
從辛普森法的推導可知每次需要三個點來去找出一個拋物線, 這樣是不是表示辛普森法在某些點數限制下會有很大的誤差呢?? 例如 let I_n = int exp(x)dx from 0~1, dx = 1/n, 若是取 n = 10 則誤差會很大,n = 11 誤差則是會很小 是否是因為只有10個點在邊邊沒有辦法有足夠的點數去找出一條拋物線?? n int exp(x)dx from 0~1 error(calculation - real value) 6 1.7189001640989792 6.1834e-004 7 1.7182841546998970 2.3262e-006 8 1.7185770700164256 2.9524e-004 9 1.7182827819248239 9.5347e-007 10 1.7184450515827283 1.6322e-004 11 1.7182822884380204 4.5998e-007 12 1.7183813535178587 9.9525e-005 13 1.7182820767986728 2.4834e-007 14 1.7183469225853738 6.5094e-005 15 1.7182819740518918 1.4559e-007 16 1.7183267068743548 4.4878e-005 17 1.7182819193608108 9.0902e-008 18 1.7183140659415748 3.2237e-005 19 1.7182818881038566 5.9645e-008 20 1.7183057597112446 2.3931e-005 21 1.7182818691993578 4.0740e-008 22 1.7183000786192362 1.8250e-005 23 1.7182818572255549 2.8767e-008 24 1.7182960623783012 1.4234e-005 25 1.7182818493448890 2.0886e-008 26 1.7182931431976525 1.1315e-005 27 1.7182818439873422 1.5528e-008 28 1.7182909706740290 9.1422e-006 29 1.7182818402426843 1.1784e-008 30 1.7182893205681540 7.4921e-006 31 1.7182818375617719 9.1027e-009 32 1.7182880448345867 6.2164e-006 33 1.7182818356017304 7.1427e-009 34 1.7182870430494297 5.2146e-006 35 1.7182818341419714 5.6829e-009 36 1.7182862454555616 4.4170e-006 37 1.7182818330367911 4.5777e-009 38 1.7182856025702056 3.7741e-006 39 1.7182818321876780 3.7286e-009 40 1.7182850786302126 3.2502e-006 41 1.7182818315266219 3.0676e-009 42 1.7182846473515589 2.8189e-006 43 1.7182818310057846 2.5467e-009 44 1.7182842891229824 2.4607e-006 45 1.7182818305909418 2.1319e-009 46 1.7182839891103716 2.1607e-006 47 1.7182818302572309 1.7982e-009 48 1.7182837359524423 1.9075e-006 -- !!!!!!!!!!!!!簽名檔破710000點擊率啦!!!!!!!!!!!!!!! Fw: [問卦] 電影:決勝21點的機率問題 https://goo.gl/2BpbB7 #1MfN3FgZ (joke)
yeebon: chx64的1/2悖論真的很經典呢07/22 16:41
!!!!!!!!!!!!!!簽名檔破710000點擊率啦!!!!!!!!!!!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.246.222.16 ※ 文章網址: https://www.ptt.cc/bbs/Math/M.1539429197.A.9B3.html
Ricestone : 我不知道那是不是運算中會變成2n來算 10/13 19:18
Ricestone : 但是點取越多會越精確不是很正常嗎? 10/13 19:19
Ricestone : 13呢? 10/13 19:28
Ricestone : 總之就是在逼近而已,我們只能確保說越大會越好 10/13 19:30
Ricestone : 前面幾項如果誤差很小只能說是剛好而已 10/13 19:31
Ricestone : 講另一個例子,如果一開始就是拋物線 10/13 19:47
Ricestone : 那最一開始當然就是最準,後面會失準,但最後會逼近 10/13 19:48
補上 n from 6 to 48 的結果,可以看到當 n 為奇數時誤差皆比 n 為偶數時小很多, 且 n = 7 的結果甚至比 n = 44 的結果還要準 ※ 編輯: j0958322080 (27.246.222.16), 10/13/2018 21:16:30
Ricestone : 所以我第一句才會說不知道有沒有做2n的處理 10/13 21:22
Ricestone : 因為辛普森基本上要切偶數,奇數你的程式怎麼處理 10/13 21:23
Ricestone : 我不知道,但你也看到就算奇偶不穩,但總體來看 10/13 21:23
Ricestone : 奇數在奇數內是變準,偶數也在偶數內變準 10/13 21:24
抱歉我更新一下,我的程式在偶數時最後一個是用梯形法做計算, 如果單純都是用辛普森的話誤差如下 n int exp(x)dx from 0~1 error(calculation - real value) 6 1.5980739671741528 -1.2021e-001 7 1.7182841546998970 2.3262e-006 8 1.6231936018174213 -9.5088e-002 9 1.7182827819248239 9.5347e-007 10 1.6396519165360308 -7.8630e-002 11 1.7182822884380204 4.5998e-007 12 1.6512620586153866 -6.7020e-002 13 1.7182820767986728 2.4834e-007 14 1.6598885507379624 -5.8393e-002 15 1.7182819740518918 1.4559e-007 16 1.6665494837180628 -5.1732e-002 17 1.7182819193608108 9.0902e-008 18 1.6718474349406003 -4.6434e-002 19 1.7182818881038566 5.9645e-008 20 1.6761616702328803 -4.2120e-002 21 1.7182818691993578 4.0740e-008 22 1.6797427603549153 -3.8539e-002 23 1.7182818572255549 2.8767e-008 24 1.6827628736990865 -3.5519e-002 25 1.7182818493448890 2.0886e-008 26 1.6853442040780759 -3.2938e-002 27 1.7182818439873422 1.5528e-008 28 1.6875758701861097 -3.0706e-002 29 1.7182818402426843 1.1784e-008 30 1.6895243939056623 -2.8757e-002 31 1.7182818375617719 9.1027e-009 32 1.6912404335628202 -2.7041e-002 33 1.7182818356017304 7.1427e-009 34 1.6927632455591424 -2.5519e-002 35 1.7182818341419714 5.6829e-009 36 1.6941237207042887 -2.4158e-002 37 1.7182818330367911 4.5777e-009 38 1.6953464995024061 -2.2935e-002 39 1.7182818321876780 3.7286e-009 40 1.6964514766067584 -2.1830e-002 41 1.7182818315266219 3.0676e-009 42 1.6974548907495663 -2.0827e-002 43 1.7182818310057846 2.5467e-009 44 1.6983701275283483 -1.9912e-002 45 1.7182818305909418 2.1319e-009 46 1.6992083195816754 -1.9074e-002 47 1.7182818302572309 1.7982e-009 48 1.6999788013975314 -1.8303e-002 而辛普森的一般式為 I_n = f(a) + f(b) + 4*f(x_odd) + 2*f(even) 僅如此而已 但如果從遞迴關係的話就是 I_n = f(x_(n-2)) + 4*f(x_(n-1)) + f(x_(n)), n = even ※ 編輯: j0958322080 (27.246.222.16), 10/13/2018 21:34:45
Ricestone : 那我覺得還是要仔細看一下你的偶數時到底怎麼算的 10/13 21:34
Ricestone : 因為老實說e^x這種單調上升的函數,沒什麼理由會有 10/13 21:35
Ricestone : 奇偶反過來 10/13 21:35
Ricestone : 看起來像是偶數時你跟實際上會少掉一個部份 10/13 21:39
Ricestone : 導致偶數時你低估,可是辛普森法以你的寫法來說 10/13 21:41
Ricestone : 本來就限定n要是奇數 10/13 21:41
j0958322080 : 對,這點我不知道我有沒有會錯意,但我查了一些資料 10/13 21:43
Ricestone : 要說的話有點像積分時上積分跟下積分的關係吧 10/13 21:43
j0958322080 : 一般式就如同我寫的,但是給的例子n皆為奇數 10/13 21:44
Ricestone : 所以我是覺得最穩就是一開始直接2n(或者2n-1)修整 10/13 21:48
Ricestone : 這樣就不用怕這種上下跳了 10/13 21:48
j0958322080 : 在更正一下,我6~48的n為資料點數,式中的n為間格數 10/13 21:49
j0958322080 : 所以資料點數為奇數時就有偶數個間格這沒問題 10/13 21:50
j0958322080 : 對我也是這樣想,但是有時候資料筆數是固定的 10/13 21:50
j0958322080 : 沒有辦法直接從我這邊設定奇數或偶數,如果是奇數個 10/13 21:51
j0958322080 : 間格(偶數個資料點),大概只能找其中一格做內插分兩 10/13 21:51
j0958322080 : 次去做積分,或者是最後一個部分用梯形法去做 10/13 21:52
Ricestone : 那這樣你一開始那些資料可以看成梯形跟辛普森的差吧 10/13 21:53
j0958322080 : 對,我就是看到偶數筆資料誤差太大才在最後用梯形法 10/13 22:01
Ricestone : 不然你試試看如果偶數,最後弄3/8法則看看? 10/13 22:21
Ricestone : 哦,剛好我也找到如果奇數段,可以考慮3/8法則資料 10/13 22:22
j0958322080 : 3/8法則是說間隔數要三的倍數吧,如果是質數就無法 10/13 22:38
Ricestone : 不是啊,就跟你最後用成梯形法一樣,後幾點改用3/8 10/13 22:41
j0958322080 : 好像也只能這樣,無法只用一個1/3去考量所有情況 10/13 22:43
Ricestone : 因為我查到的也幾乎只考慮偶數狀況...所以也不能說 10/13 22:45
Ricestone : 是辛普森在某種情況下有誤差,而是本來就沒考慮 10/13 22:45
Ricestone : 雖然其實是因為懶得想所以在查資料啦,不過應該就是 10/13 22:46
Ricestone : 最後一段的時候,你的偶數會少加上半塊,導致不行 10/13 22:47
j0958322080 : 應該是,感謝陪我討論這麼久 10/13 22:55
Ricestone : 不過我一開始好像說錯了,一開始就拋物線,之後誤差 10/13 23:00
Ricestone : 好像都是0啊 10/13 23:00
Vulpix : 偶數那些不是Simpson's rule。 10/13 23:13
j0958322080 : 我是直接用Simpson的一般式去做計算 10/13 23:24