【问题标题】:Program to simulate Zeno's paradox in Java用Java模拟芝诺悖论的程序
【发布时间】:2010-11-08 21:11:17
【问题描述】:

所以我在读一本关于某个悖论的书:假设你在一个对面有门的房间里。但是,为了离开,您每次都必须走一半的距离。所以第一步你走一半的距离,第二步你再走一半,依此类推(1/2 + 1/4 + 1/8)等等。声称如果你继续前进,你永远不会到达门口像这样。我想这很容易用微积分来证明,但是在 Java 或任何其他程序中用一个从左侧开始的球来模拟这一点会很有趣,每次通过一半的距离移动到右侧,同时显示到目前为止采取的“步骤”数量及其进度。我很想自己做,但我仍然是 Java 的初学者,不知道 GUI 编程。谁能模拟一下?

(对不起,如果这不是一个“真正的”问题。我真的很好奇需要多少步才能让球看起来几乎就在那里。)

【问题讨论】:

  • 这在微积分中被称为极限。它真的与编程无关。
  • 是的,我已经说过这在微积分中很容易计算。我只是想看看它在视觉上的样子。编程=数学
  • 如果您要否决一个明确提出的善意问题,您应该提出一些建设性的批评,说明您认为该问题不合适的原因。
  • @Mike Miller,请注意关于询问如何在 Java 中构造它的部分。这显然是一个编程问题。
  • @fprime:如前所述,当您使用正确的术语时,找到模拟非常容易。例如,我在 Google 中输入“java simulation zenos paradox”后大约 15 秒内发现:mste.illinois.edu/pavel/java/zeno

标签: java algorithm user-interface paradox


【解决方案1】:

看这个情节,它形象化了悖论:

http://www.wolframalpha.com/input/?i=1-1/(2^n)+for+0<n<10

【讨论】:

    【解决方案2】:

    在你撞到另一扇门之前,你就会遇到人数限制。抽象为:

    var Distance=100;
    var Traveled=0;
    var Remaining=Distance/2
    
    while(Traveled < Distance){
      echo Remaining
      Traveled=Traveled+Remaining
      Remaining=Remaining/2
    
    }
    

    使用 PHP 在我的一个机器上运行它会导致..
    50
    25
    12.5
    6.25
    3.125
    1.5625
    0.78125
    0.390625
    0.1953125
    0.09765625
    0.048828125
    0.0244140625
    0.01220703125
    0.006103515625
    0.0030517578125
    0.00152587890625
    0.000762939453125
    0.0003814697265625
    0.00019073486328125
    9.5367431640625E-5
    4.7683715820312E-5
    2.3841857910156E-5
    1.1920928955078E-5
    5.9604644775391E-6
    2.9802322387695E-6
    1.4901161193848E-6
    7.4505805969238E-7
    3.7252902984619E-7
    1.862645149231E-7
    9.3132257461548E-8
    4.6566128730774E-8
    2.3283064365387E-8
    1.1641532182693E-8
    5.8207660913467E-9
    2.9103830456734E-9
    1.4551915228367E-9
    7.2759576141834E-10
    3.6379788070917E-10
    1.8189894035459E-10
    9.0949470177293E-11
    4.5474735088646E-11
    2.2737367544323E-11
    1.1368683772162E-11
    5.6843418860808E-12
    2.8421709430404E-12
    1.4210854715202E-12
    7.105427357601E-13
    3.5527136788005E-13
    1.7763568394003E-13
    8.8817841970013E-14
    4.4408920985006E-14
    2.2204460492503E-14
    1.1102230246252E-14
    5.5511151231258E-15

    【讨论】:

      【解决方案3】:

      java中的一些数值分析。看看this

      【讨论】:

        【解决方案4】:

        这是Zeno's Paradoxes 之一,这取决于您对“几乎”的定义是什么。从足够远的有利位置看,无论实际距离是多少,它看起来几乎就在那里。

        至于执行此操作的程序,您的问题过于广泛 - 它可以通过多种方式实现。关键元素是将球到墙壁的距离更新为前一个“帧”或迭代中的一半。

        【讨论】:

          【解决方案5】:

          如果你想用 C++ 来做,代码如下:

          float Distance;
          
          cout << " Enter distance value :" << endl;
          cin >> Distance;
          
          while (Distance > 0){
              cout << Distance << endl;
          (Distance = Distance /2);
          }
          
          
          return 0;
          

          }

          【讨论】:

            猜你喜欢
            • 2015-10-28
            • 1970-01-01
            • 1970-01-01
            • 2020-02-28
            • 1970-01-01
            • 2021-11-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多