[問題] Mathematica計算效率 函數式語言

看板Mathematica作者 (別再睡了起床了愛麗)時間7年前 (2016/11/30 15:00), 7年前編輯推噓2(207)
留言9則, 2人參與, 最新討論串1/1
最早是因為我需要用的一個小軟體是用Mathematica寫的所以使用Mathematica作計算, 但是之前的工作基本上大部分都可以用現成的範例檔做簡單的修改完成,我也就一直沒 有花時間去了解Mathematica本身,最近遇到一些問題所以去找資料來看,找到一本 Mathematica cookbook ( http://shop.oreilly.com/product/9780596521004.do )才知 道原來Mathematica是用一種叫函數式的語法寫的,我幾乎完全沒有程式理論的基礎,第 一次知道原來程式語言還有不同類型,雖然這本書裡有範例說明在Mathematica裡使用函 數式的風格來寫可以提升效率減少計算時間,不過在網路上找資料有提到函數式語法本身 運算就會比一般的算法還要慢,想請問如果是想做大量數值運算我應該繼續使用 Mathematica還是說用其他的語言會比較好? 有板友研究過這個問題嗎? 感恩~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.253.198 ※ 文章網址: https://www.ptt.cc/bbs/Mathematica/M.1480489204.A.BDF.html

11/30 18:39, , 1F
函數式語法本身跟計算快慢並沒有直接關連, 要看實作
11/30 18:39, 1F
其實我也沒有很清楚,不是學程式出身的,會問這個只是看到一些文章,比方說友板的 https://www.ptt.cc/bbs/PLT/M.1172348644.A.D49.html 還有這個 http://openhome.cc/Gossip/Programmer/FunctionalProgramming.html 都提到函數式的語法因為不會改變變數所以運算的過程中會大量使用遞迴,導致速度變慢 ,雖然有其他方法加速,但是我不知道能做到甚麼程度 還是說其實我搞錯狀況,Mathematica根本沒有這些問題XD

11/30 18:40, , 2F
MMA 我不太清楚實作如何, 但應該沒有很糟才是
11/30 18:40, 2F
請問一下你指的實作是指?

11/30 18:42, , 3F
使用函數式風格寫程式加速的一個簡單實例可看本板#1KbStm3l
11/30 18:42, 3F

11/30 18:44, , 4F
那裡也有提到如果真的數值計算太多的話還有 Compile 這大絕
11/30 18:44, 4F

11/30 18:46, , 5F
它會把函數式的 MMA 程式編譯成類似程序式的機械碼程式
11/30 18:46, 5F
感謝你提供這資訊,獲益良多! 最近也在改用函數式風格,程式簡潔清爽看得很舒服~ ※ 編輯: Absolitude (140.114.235.65), 11/30/2016 19:55:04

12/01 03:18, , 6F
那種不可變的值是純函數語言如 Haskell 等才會這樣
12/01 03:18, 6F

12/01 03:19, , 7F
MMA 有變數, 也有一些類似程序式的迴圈結構 (For, Do 等)
12/01 03:19, 7F

12/01 03:20, , 8F
所以 MMA 其實不怎麼純函數, 但相對也沒那些負擔
12/01 03:20, 8F

12/01 05:13, , 9F
原來如此! 那就沒問題了! 謝謝!
12/01 05:13, 9F
文章代碼(AID): #1OFdZqlV (Mathematica)
文章代碼(AID): #1OFdZqlV (Mathematica)