Re: [問題] Mathematica bug?
※ 引述《biglion ( )》之銘言:
: 最近在解 Project Euler 寫了一段code
: 出現了一些error message
: 個人覺得這可能是Mathematica的bug
: fexp[{n_Integer}] = 1;
: fexp[exp_List] := fexp[exp] = Multinomial @@ exp;
: f[i_] := fexp[Sort[FactorInteger[i]][[All, 2]]];
: code蠻單純的,就不解釋了
: 執行
: Sum[f[i], {i, 1000000}] // AbsoluteTiming
: 幾秒鐘後就計算完畢
: 但如果執行
: Sum[f[i], {i, 1000001}] // AbsoluteTiming
: 開始出現錯誤訊息
: FactorInteger::exact: Argument i in FactorInteger[i] is not an exact number.
: Part::partd: "Part specification FactorInteger[i][[All,2]] is longer than
: depth of object."
: 但事實上 單獨執行f[1000001]是正常的
: 神奇的是 如果使用平行運算又沒問題
: ParallelSum[f[i], {i, 1000001}] // AbsoluteTiming
: 而且答案在Project Euler上是正確的
: 所以code應該是沒錯
: 使用Mathematica 10.2 跟 10.3 都是如此
: 想請教各位高手的是:
: 1) 這究竟是否是Bug,或其實是coding上有問題
: 2) 如果真是Bug,要怎麼避開這個Bug
: 3) 當我丟平行運算的時候,各thread並無法共用記憶體,導致DP無法真正發揮效用
: 應該要如何設定才能夠讓各thread可以共用呢?
Clear[fexp, f, iter, fvalue];
iter = 0; fvalue = 0;
Dynamic[{iter, fvalue}]
fexp[exp_List] := Multinomial @@ exp;
f[i_] := fexp[FactorInteger[i][[All, 2]]];
AbsoluteTiming@Sum[iter = i; fvalue = f[i]; f[i], {i, 1000001}]
AbsoluteTiming@ParallelSum[f[i], {i, 1000001}]
--
我打研究室走過 那獨坐電腦前的容顏如苦瓜的糾結
靈感不來 長壽的煙霧不散
研究室如小小的寂寞的城 恰如商管的電梯向晚
http://chungyuandye.twbbs.org
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.239.252.81
※ 文章網址: https://www.ptt.cc/bbs/Mathematica/M.1470500137.A.496.html
→
08/07 09:23, , 1F
08/07 09:23, 1F
→
08/07 09:29, , 2F
08/07 09:29, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Mathematica 近期熱門文章
PTT數位生活區 即時熱門文章