Python - 钟摆公式

时间:2013-03-27 17:14:48

标签: python python-3.x

我提出了以下问题(它有点啰嗦):

  

在物理学中,对于长度为L且初始角度为A的摆锤,其在时间T的水平位移X(T)由公式

给出
X(T) = L × cos(A × cos(T × √9.8/L)) - L × cos(A)
     

编写一个带两行输入的程序;第一行是L,第二行是A.输出应该是十行,给出X(0)X(1)X(2),...,X(9)的值。例如,如果第一行输入为53.1且第二行输入为0.8,则第一行输出为0.0,第二行输出为53.1*cos(0.8*cos(1*√9.8/53.1)) - 53.1*cos(0.8) ~ 2.6689。< / p>

我已经写了以下代码来回答这个问题:

from math import sqrt
from math import cos
L = float(input())
A = float(input())

def X(T):
   print(L*cos(A*cos(T*sqrt(9.8/L))-L*cos(A)))

for n in range(0, 9):
   X(n)

...但我的答案一直都是错误的。我可能在某个地方遗漏了一些括号,但我无法看到哪里。

我得到的输出:

3.545012155898153
7.383727226708044
17.92714440725987
31.889478979714276
44.23118522394127
51.212404291669216
53.079364553814806
52.890770379027806
52.999922313121566

我应该得到的输出:

0.0
2.6689070487226805
9.021742145820763
14.794542557581206
15.73774678328343
11.124903835610114
4.423693604072537
0.27377375601245213
1.295906539090336
6.863309996333497

3 个答案:

答案 0 :(得分:2)

在第一个余弦

之后你缺少括号
L * cos(
  A * cos(
    T* sqrt(9.8/L)
  )
) - L * cos(A)

应该是

 L*cos(A*cos(T*sqrt(9.8/L)))-L*cos(A)

答案 1 :(得分:1)

你是对的,你的括号错了。以下将解决它:

print(L*cos(A*cos(T*sqrt(9.8/L)))-L*cos(A))
                                ^ added    ^ removed

答案 2 :(得分:1)

物理公式看起来像第一个cos应该更早结束。因此,最后一个支架应该更进一步:

print(L * cos(A * cos(T * sqrt(9.8/L))) - L * cos(A))

更清楚一点:

firstCos = cos(A * cos(T * sqrt(9.8/L)))
print(L * firstCos - L * cos(A))