2013-03-27 38 views
2

我已提出以下问题(这是一个絮叨):的Python - 摆锤式

在物理学上,用于与长度L和初始角A钟摆,其水平位移X(T)在时间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

我写了下面的代码在回答这个问题:

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 
+0

你会得到什么答案,你期待什么答案? – 2013-03-27 17:16:51

+0

请记住,您也可以随时编辑问题。所以这些输出可能已经添加到您的原始文章的正文中。 – 2013-03-27 17:22:59

回答

1

你说得不错,你有放错地方的括号内。下面将解决这个问题:第一余弦后

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

非常感谢,并感谢提交的其他人。 – user2080719 2013-03-27 17:29:40

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

物理公式看起来像第一个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))