优化Mathematica中的"操作"

500*_*500 3 wolfram-mathematica

我正在寻找一个很好的演示我在Mathematica中的Integration中提到的问题,但它非常缓慢而且Manipulate根本不光滑.

考虑到以下情况,我是否有办法改善这种情况.这是一个更持续的动态.此外,我无法打开机器人

控制 - >机械手[Appearance->打开]

arrows = ParallelTable[{
RandomVariate[NormalDistribution[0, Sqrt[1]]],
RandomVariate[NormalDistribution[0, Sqrt[1]]]}, {20000}];

Manipulate[
           Graphics[{
                     White, Rectangle[{-5, -5}, {5, 5}],
                     Red, Disk[{0, 0}, 1],
                     Black, Point /@ (arrows[[;; i]]), 
                     Text[Style[
                               Total[
                                     If[# < 1, 1, 0] & /@  
                       (EuclideanDistance[{0, 0}, #] & /@ 
                       arrows[[;; i]])]/Length@arrows[[;; i]] // N, 
                          Bold, 18, "Helvetica"], {-4.5, 4.5}]}, 
           ImageSize -> 800],
{i, Range[2, 20000, 1]},
ControlType -> Manipulator,
SaveDefinitions -> True]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

abc*_*bcd 7

对于缓慢的主要原因是因为你计算EuclideanDistance所有的点,直到步i一步i.如果你采取这一步骤,你会看到一个区别Manipulate.

prob = MapIndexed[#1/#2 &, Accumulate[
    EuclideanDistance[{0, 0}, #] < 1 & /@ arrows // Boole]] ~ N ~ 4;
Run Code Online (Sandbox Code Playgroud)

Heike的解决方案比你的解决方案或Nasser的更顺畅,所以我将以此为例.您可以使用其中预先计算的值prob:

Manipulate[
 Graphics[{White, Rectangle[{-5, -5}, {5, 5}], Red, Disk[{0, 0}, 1], 
   Black, Point[arrows[[;; i]]], 
   Text[Style[First@prob[[i]], Bold, 18, "Helvetica"], {-4.5, 4.5}]}, 
  ImageSize -> 200], {i, Range[2, 20000, 1]}, 
 ControlType -> Manipulator, SaveDefinitions -> True]
Run Code Online (Sandbox Code Playgroud)

我将精度统一设置为4位数,否则,当有效位数变化时,您会看到图形跳转.


Hei*_*ike 5

也许这样的事情

Manipulate[
 Graphics[{White, Rectangle[{-5, -5}, {5, 5}],
   Red, Disk[{0, 0}, 1],
   Black, Point[arrows[[;; i]]], 
   Text[Style[Count[arrows[[;; i]], a_ /; (Norm[a] < 1)]/i // N, Bold,
      18, "Helvetica"], {-4.5, 4.5}]}, ImageSize -> 800], {i, 
  Range[2, 20000, 1]}, ControlType -> Manipulator, 
 SaveDefinitions -> True]
Run Code Online (Sandbox Code Playgroud)