[心得] 線上開發MMA夢想成真

看板Mathematica作者 (Hysterisis)時間10年前 (2014/08/24 04:00), 10年前編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/1
好消息,你是不是也時常遇到各式數學小問題, 設想計算一陣子卡在手邊欠缺MMA奧援 TADA! https://programming.wolframcloud.com/ 這下MMA的功能全在線上了,這下子除了Wolfram Alpha又多了別的選擇。 **只能說 Wolfram Alpha 自始至終還是蠻難用的,雖然前陣子突然可以吃大部分MMA代碼 卻在雲端編程平台這個新功能出現之後自動銷聲匿跡。不過xkcd似乎習慣用它解微分方 程 =) - - - - 本文到此結束以下是多餘部分的分隔線 - - - - 舉個實例,可以在短時間想一想然後丟Woldram Progamming Cloud (下稱MMA雲) 解出的小專案 例如說 我下載了這個手機醒腦小遊戲 https://play.google.com/store/apps/details?id=jp.tekunodo.ttn 它只是個 音樂節奏遊戲的簡單版--5X5方格中放置1~25的數字,挑戰是最快依序1點到25 假設我是堅持一指神功,而數字是隨機放置,這樣我的手指需要移動的路徑長就是 一個隨機變數。於是,我想知道的是「這25!條路徑的 Mean 與 Variance」 ** 最短路徑明顯是20單位長,那麼最長路徑是什麼呢,這又是另一個待解之謎 │ 1 2 3 4 5 │ 10 9 8 7 6 ← 11 12 13 14 15 20 19 18 17 16 21 22 23 24 25 (*產生座標*) grid55= Flatten[#,1]&@ Outer[List,Range[5],Range[5]] (*所有C(25,2)=300條線段*) segments= Subsets[grid55,{2}] (*300條線段總長*) sumD= Total[EuclideanDistance@@@segments] 輸出:= 240 + 100 Sqrt[2] + 72 Sqrt[5] + 32 Sqrt[10] + 24 Sqrt[13] + 16 Sqrt[17] =796.114... (*先來偷瞄一眼答案大概是多少,採用隨機抽樣*) {Mean@#,Variance@#}&@ Table[ Total[EuclideanDistance@@@Partition[RandomSample[grid55],2,1]]*1.0 ,{10000}] 輸出:= {63.6934,23.3471} (*甚至可以畫出直方圖*) Histogram[ Table[ Total[EuclideanDistance@@@Partition[RandomSample[grid55],2,1]]*1. ,{100000}] ,100] 設想我把所有25!種線段組合寫出來--當然不是真的寫,這樣得出的數據根本無法處理, 也一定會顯示記憶體不足,所以要腦內假想 :) 問題是裡面(1,1)到(1,2)的線段會出現幾次呢? 答案是 24 * 25! / 300 = 2/25 * 25! 條, 所有合法線段出現次數必然相同,均攤。因為所有組合嘛,不受1~25的任意置換影響 所以所有1-25總距離的平均 E(X) = 2/25 * sumD = 63.6891245... ### 變異數怎麼算? 利用 Var(X) = E(X^2) - E(X)^2 ~~~~~~ 要算這個 因為 X 的形式是像 s1 + s2 + ... + s24 , s_i是數字i到i+1的線段 X^2 就是 (s1^2+...+s24^2) + 2(s1s2 + s1s3 + ... + s23s24) [ 共C(24,2)=276項 ] 將所有 X^2 總共 25! 種寫出來,加總,則不同的 形如 s_i^2 , i in Range[300] 的項要出現幾次? 還是 24*25!/ 300 = 2/25 * 25! 次 那形如 2 s_i s_j 的項呢? 是 276*25! / C(300,2) = 2/325 * 25! 次 求一下 sumD2= Total[(EuclideanDistance@@@segments)^2] = 2500 sumDiDj= Total[Times @@@ Subsets[EuclideanDistance @@@ segments,{2}]] 或者 ((sumD)^2 - sumD2)/2 = 315648.795... 因此 Var(X) = sumD2* 2/25 + 2* sumDiDj* 2/325 - (2/25 * sumD)^2 = 28.6036699... ←我不確定對否。為啥和抽樣的結果差這麼多,N=100000, (N-1)/N ->1 附上一部分程式碼的雲端版,無須登入即可看 https://www.wolframcloud.com/objects/c69f8c9c-3c0f-4aa1-a077-a8e1ad54ea78 神秘的常態分佈! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.125.206 ※ 文章網址: http://www.ptt.cc/bbs/Mathematica/M.1408824011.A.055.html ※ 編輯: jurian0101 (140.112.125.206), 08/24/2014 04:14:38

08/24 23:13, , 1F
cool!
08/24 23:13, 1F

08/29 13:16, , 2F
要有Wolfram ID 才能用
08/29 13:16, 2F

08/31 09:58, , 3F
感覺好卡=_=
08/31 09:58, 3F
文章代碼(AID): #1J-FBB1L (Mathematica)
文章代碼(AID): #1J-FBB1L (Mathematica)