1樓:青衣瓦屋
我猜這是projecteular上面的第64題吧?我的**是:
select[continuedfraction /@ sqrt /@ range@10000,
length@# > 1 && oddq@length@last@# &] // length // timing
用時25秒。
既然用mathematica,儘量多用現成的內建函式吧,它所採用的演算法比我們自己寫的優化的好多了。當然如果你是想要自己寫的話那就要多去找找關於此類演算法優化的書和高手了。
另,mathematica裡面儘量少用for和if這類結構化語句,耗時極大。
2樓:草紅樣
mathematica不是這樣用的,
tr@mod[length /@ continuedfraction[sqrt@ range@1*^4][[all, -1]], 2] // absolutetiming
還可以更快,下面這段程式耗時<0.1s
compile[{},
module[,
do[r = limit = floor@sqrt@n;
if[limit^2 == n, continue];
= ;while[k != 1 || period == 0,k = quotient[n - r^2, k];
r = quotient[limit + r, k]*k - r;
period++
];if[oddq[period], cnt++];
, ];
cnt]]
Mathematica和matlab有什麼區別,那個更簡單阿
mathematica更簡單些,兩者區別如下 一 主體不同 1 mathematica 是一款科學計算軟體,很好地結合了數值和符號計算引擎 圖形系統 程式語言 文字系統 和與其他應用程式的高階連線。2 matlab 是美國mathworks公司出品的商業數學軟體,用於演算法開發 資料視覺化 資料分析...
Mathematica的語言跟Matlab語言是一樣的嗎
差不多。但使用有差別。matlab 是一種用於演算法開發 資料視覺化 資料分析以及數值計算的高階技術計算語言和互動式環境。使用 matlab,您可以較使用傳統的程式語言 如 c c 和 fortran 更快地解決技術計算問題.mathematica語言 mathematica是一個功能強大的數學軟體...
mathematica輸出形式的問題
4 sqrt 4 2 sqrt 3 3 sqrt 3 n 3.7320508075688776 這個問題用maximize也求不出來,但並不是無法表示,只是需要手動參與計算過程而已,這個問題裡面mathematica顯得還不夠聰明.表示式取最大值的充分條件是其對a和x的偏導等於零,於是可以編寫如下語...