1

特定の高さから落としたときに何かが地面に落ちるまでにかかる時間を計算するプログラムを作成しようとしており、既知の二次公式を使用しています。プログラムは、sqrt に関連すると思われる数学の問題がある 7 行目に到達するまで、私がやりたいことを実行しているように見えます。誰でも助けることができますか?

これまでのところ、私は思いついた...

v = float(input())
lowerSum = 2*(-4.9)
upperSum1 = -4*(-4.9)
upperSum2 = (upperSum1)*(11000)
upperSum3 = (v)**2 - (upperSum2)
from math import sqrt
upperSum4 = (v) - sqrt(upperSum3)
t = (upperSum4) / (lowerSum)
print (t)

プログラムを実行すると、数学ドメイン エラーがあると表示されます。私はプログラミングが初めてで、これが何を意味するのかわかりません。

t の値を出力しようとしています。

4

4 に答える 4

1

数式を読み間違えています (ページの下部) 。

具体的には、v**2 の後にマイナス記号を 2 回適用しています。

まず、ここに適用します (間違って、マイナス記号であるかのように):

upperSum1 = -4*(-4.9)

次に、ここでもう一度適用します (正しくは、マイナス記号として)。

upperSum3 = (v)**2 - (upperSum2)

upperSum1次のようにする必要があります。

upperSum1 = 4*(-4.9)
于 2013-08-17T01:44:45.203 に答える
0

計算を行うことで、問題をもう少し深く掘り下げるだけです...

v = float(input())
lowerSum = -9.8
upperSum1 = 19.6
upperSum2 = 215600
upperSum3 = (v)**2 - (215600)
from math import sqrt
upperSum4 = (v) - sqrt(upperSum3)
t = (upperSum4) / (lowerSum)
print (t)

したがって、方程式が sqrt() に負の数を返さないようにするには、5 行目の v の 2 乗を 215600 より大きくする必要があります。これがエラーの原因です。

upperSum3 が正になるには、V が 465 よりも大きくなければならず、さまざまな数値を実行しても、実際には正になることはありません。したがって、使用している方程式またはセットアップ自体に間違いなく問題があります。

自分で数式を知らなければ (見つけることができません)、コードのどの部分が実際に間違っているかを知る方法はありません。

于 2013-08-09T18:24:35.083 に答える