2

私は次の質問を提起されました(少し長文です):

物理学では、長さ L と初期角度 A の振り子の場合、時間 T での水平方向の変位 X(T) は次の式で与えられます。

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

2 行の入力を取るプログラムを作成します。X(0)最初の行は L で、2 行目は A です。出力は、 、X(1)X(2)、...、の値を与える 10 行になるはずですX(9)。たとえば、入力の最初の行が で、入力53.1の 2 行目が の0.8場合、出力の 1 行目は 0.0 で、出力の 2 行目は です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
4

3 に答える 3

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)
于 2013-03-27T17:18:27.490 に答える
1

あなたはまったく正しいです、括弧の位置が間違っています。以下はそれを修正します:

print(L*cos(A*cos(T*sqrt(9.8/L)))-L*cos(A))
                                ^ added    ^ removed
于 2013-03-27T17:18:27.003 に答える
1

物理式は、最初の cos が早く終了するように見えます。したがって、最後の 1 つのブラケットをさらに前に配置する必要があります。

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))
于 2013-03-27T17:19:22.570 に答える