|
楼主 |
发表于 2020-12-4 20:45
|
显示全部楼层
当t = 1 + 2 ^ (1 / 2)时的程序结果:
171.4092
173.8235 167.995
176.2377 164.5808
178.6519 161.1666
181.0661 157.7524
183.4803 154.3382
185.8945 150.924
188.3087 147.5097
190.723 144.0955
193.1372 140.6813
195.5514 137.2671
197.9656 133.8529
200.3798 130.4387
202.794 127.0244
205.2083 123.6102
207.6225 120.196
210.0367 116.7818
212.4509 113.3676
214.8651 109.9534
217.2793 106.5392
219.6935 103.1249
222.1078 99.71072
224.522 96.29651
226.9362 92.88229
229.3504 89.46808
231.7646 86.05386
234.1788 82.63965
236.593 79.22543
239.0073 75.81122
241.4215 72.397
243.8357 68.98279
246.2499 65.56857
倒数第3项可能才是对的,仅是接近实际,程序有问题,不知道错哪儿了。
下面是代码:
Private Sub Command1_Click()
'i=队伍排头兵位置,j=传令兵位置,z传令兵行程累计。
Dim i As Single, j As Single, t As Single, z As Single
'假设队伍的行进速度是1m/s
'预设传令兵的速度是t/s
t = 1 + 2 ^ (1 / 2)
a1 = "1/" & t
'首先算出传令兵到达队头用多少米
For i = 100 To 200 '队头的行程是从100米处到200米
j = j + t
If j >= i Then
a2 = j
Text1 = Text1 & j & vbCrLf
Print j
Exit For
End If
Next i
z = j
'再算出折返后到达终点总共走了多少米
For i = i To 200
j = j - t - 1 '折返时传令兵到达队尾的速度应该是 传令兵的速度+队伍的行进速度
z = z + t
Print z, j
Text1 = Text1 & z & " " & j & vbCrLf
Next i
a3 = z '传令兵总里程
a4 = j '传令兵终点位置应该在100米处(可以调整传令兵速率达到接近理想值)
End Sub
|
|