找回密码
 欢迎注册
楼主: markfang2050

[原创] 在椭圆x^2/4+y^2/9=1中均匀分布的点中随机取一点,求此点到椭圆中心的平均距离

[复制链接]
发表于 2020-5-6 19:07:49 | 显示全部楼层
hujunhua 发表于 2020-5-6 10:38
把四个程序都运行一遍,再运行第2次时比较结果才是平行的。
否则,由于先运行的程序拥有较大的内存, ...

可以程序结尾加上
  1. Quit[];
复制代码

关闭计算内核,清空内存。

如此每个程序都是第一次运行。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-5-7 10:01:23 | 显示全部楼层
本帖最后由 dlpg070 于 2020-5-7 19:10 编辑
dlpg070 发表于 2020-5-6 16:18
我在计算中注意到清理内存,结果与计算顺序关系不大
为公平起见,现在给出另一种计算顺序结果,速度排序 ...


探讨hujunhua1改进方案, 发现square 2维数组是关键,仿chyanog改进后比chyanoh还快一点
结果列于后

按计算先后排序
hujunhua2   :2020-05-07T09:45:48 {17.8913,1.68308}
hujunhua1   :2020-05-07T09:46:06 {2.04036,1.68336}
markfang2050:2020-05-07T09:46:09 {0.695999,1.683}
chyanog     :2020-05-07T09:46:10 {0.625085,1.68329}

hujunhua1p  :2020-05-07T09:46:08 {0.592182,1.68331}
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-5-7 13:24:58 | 显示全部楼层
  1. Block[{a = 3, b = 2, n = 10^7, xx, yy, B}, AbsoluteTiming[
  2.   xx = RandomReal[{-a, a}, n]^2;
  3.   yy = RandomReal[{-b, b}, n]^2;
  4.   B = Unitize[1, xx/a^2 + yy/b^2];
  5.   Total[B Sqrt[xx + yy]]/Total[B]]]
复制代码

这样就没有缓存了。
我也尝试着改进chyanog 的代码,Unitize 是亮点,  未能超越...


毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-5-7 13:36:03 | 显示全部楼层
markfang2050 发表于 2020-5-3 09:43
普及下什么是高维空间的均匀。假设一个长方形边长a和b不相等,但是用同一个随机函数生成长方形内的坐标( x ...

二维情形,按你之前的说法,默认以面积为标准来定义均匀性,那么区域上的联合概率密度就是根据面积定义的,即只要求微元面积内的点的数目与总数之比依概率收敛于微元面积与总面积之比,而不管这些点分布的方向如何。wayne的方法就是按照这个定义来求的结果。所以,他的方法并没有问题。要知道,“线密度”分布如何,并不影响以“面积”为标准定义的均匀分布。

至此,你应该明白我之前为何反复强调要严格给出均分分布数学公式定义的缘故了吧?自己内心默认的概念,别人不是你肚子里的蛔虫,别老是让人猜。爱玩文字游戏的话,脑筋急转弯一大堆,够你去玩的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-5-7 14:58:33 | 显示全部楼层
我把内存平衡的三种方法与新冠抗疫好有一比:
19#:四个程序都先运行一遍,第二遍再比较。这叫 “群体免疫”。
21#:程序最后加Quit[],这是特效药,"人民的希望".
23#:事先放在一个Block中,这是疫苗啊。

点评

可惜,疫苗尚未成功  发表于 2020-5-7 16:42
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-5-8 08:59:08 | 显示全部楼层
本帖最后由 dlpg070 于 2020-5-8 10:29 编辑
hujunhua 发表于 2020-5-7 14:58
我把内存平衡的三种方法与新冠抗疫好有一比:
19#:四个程序都先运行一遍,第二遍再比较。这叫 “群体免疫 ...



一段速度快的代码 致敬chyanog ,hujunhua
  1. (* 一段速度快的代码 致敬chyanog ,hujunhua *)
  2. Clear["Global`*"];(* 1. 计算前清存储空间,不是初始化到 zero *)
  3. fch[a_,b_,n_]:=fch[a,b,n]= AbsoluteTiming[(*{a,b}={3,2};*)
  4. (*n=10^8;*)
  5. xx=RandomReal[{-a,a},n]^2;
  6. yy=RandomReal[{-b,b},n]^2;
  7. B=Unitize[1,xx/a^2+yy/b^2];
  8. Total[B Sqrt[xx+yy]]/Total[B]]


  9. fhu1p[a_,b_,n_]:=fhu1p[a,b,n]=Module[{xx,yy,B,out1p},
  10. AbsoluteTiming[(*n=10^7;随机数个数*)
  11. xx=RandomReal[{-1,1},n]^2;
  12. yy=RandomReal[{-1,1},n]^2;
  13. B=Unitize[1,xx+yy];
  14.   out1p=Total[B Sqrt[xx*a^2+yy*b^2]]/Total[B]]
  15. ](* 2. Module 使用局部变量,及时释放,无大内存驻留*)
  16. Print["计算时间:",DateString["ISODateTime"]]
  17. tab=Table[{k,"hu1p:",
  18. out1p=fhu1p[3,2,10^7],

  19. "ch  :",
  20. outch=fch[3,2,10^7]
  21. },{k,1,4}];(* 3. 多次重复运算 ,结果稳定 *)
  22. Grid[tab]
  23. Print["---end---"]
  24. (*Quit[] 4. 任务已经结束,于我何用,保护现场,备后续单元使用 *)

  25. 计算时间:2020-05-08T08:46:57
  26. 1        hu1p:        {0.584809,1.68326}        ch  :        {0.616615,1.68321}
  27. 2        hu1p:        {0.584809,1.68326}        ch  :        {0.616615,1.68321}
  28. 3        hu1p:        {0.584809,1.68326}        ch  :        {0.616615,1.68321}
  29. 4        hu1p:        {0.584809,1.68326}        ch  :        {0.616615,1.68321}

  30. ---end---
复制代码


毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-5-8 20:23:03 | 显示全部楼层
markfang2050 发表于 2020-5-3 09:43
普及下什么是高维空间的均匀。假设一个长方形边长a和b不相等,但是用同一个随机函数生成长方形内的坐标( x ...

如果概率正比于面积,那么均匀性就具有仿射不变性,所以根本不存在方向性问题。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-20 13:02 , Processed in 0.045378 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表