1

それで、私はあるパラドックスの本を読んでいました:あなたが反対側のドアのある部屋にいるとしましょう。ただし、出発するには、毎回半分の距離を移動する必要があります。つまり、最初のストライドで半分の距離を移動し、2 番目のストライドでさらに半分の距離を移動します (1/2 + 1/4 + 1/8) などです。主張は、続行してもドアに到達しない場合です。このような。これは微積分を使って簡単に証明できると思いますが、これを Java やその他のプログラムで、左側から始まり、毎回半分の距離を移動することで右側に移動するボールを使ってシミュレートすると面白いでしょう。これまでに行った「ステップ」の数とその進行状況を表示しながら。私は自分でやりたいと思っていますが、私はまだ Java の初心者であり、GUI プログラミングを知りません。誰でもこれをシミュレートできますか?

(これが「本当の」質問ではない場合は申し訳ありません。ボールがほとんどそこにあるように見えるまでに何歩かかるか、本当に知りたいです。)

4

5 に答える 5

4

パラドックスを視覚化する次のプロットを参照してください。

http://www.wolframalpha.com/input/?i=1-1/(2^n)+for+0<n<10
于 2010-11-08T21:24:25.397 に答える
3

他のドアにぶつかるずっと前に、数の制限に遭遇します。抽象化すると、次のようになります。

var Distance=100;
var Traveled=0;
var Remaining=Distance/2

while(Traveled < Distance){
  echo Remaining
  Traveled=Traveled+Remaining
  Remaining=Remaining/2

}

running this on one of my boxes using PHP resulted in..
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

于 2010-11-08T21:26:43.737 に答える
1

Javaでの数値分析のビット。これを見てください

于 2010-11-08T21:16:39.910 に答える
0

これは、ゼノのパラドックスの1 つ です。「ほぼ」の定義によって異なります。遠くから見ると、実際の距離に関係なく、ほとんどそこにあるように見えます。

これを行うプログラムに関しては、あなたの質問は広すぎます.さまざまな方法で実装できます. 重要な要素は、ボールから壁までの距離を更新して、前の「フレーム」またはイテレーションの半分にすることです。

于 2010-11-08T21:16:32.970 に答える
0

C++ で実行する場合は、次のコードを使用します。

float Distance;

cout << " Enter distance value :" << endl;
cin >> Distance;

while (Distance > 0){
    cout << Distance << endl;
(Distance = Distance /2);
}


return 0;

}

于 2013-07-29T18:27:52.567 に答える