好消息,你是不是也时常遇到各式数学小问题,
设想计算一阵子卡在手边欠缺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
神秘的常态分布!