时间重力下降程序

2024-09-24 02:25:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个程序,用已知的二次公式计算出从某个特定高度落下的物体落地需要多长时间。程序似乎在做我想做的事情,直到它到达第7行,那里有一个我认为涉及sqrt的数学问题。有人能帮忙吗?在

到目前为止我已经想出了。。。在

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的值


Tags: 程序高度数学sqrtfloat事情物体公式
3条回答

“math domain error”告诉您,您已经向sqrt函数传递了一个在其“domain”之外的值。sqrt函数的域是正数。在某个时刻upperSum3变为负,这使得sqrt相当不高兴,因此它向您抛出一个错误。在

如果upperSum3小于0,则可以通过添加if语句来更改代码的操作来解决此问题,例如:

if upperSum3 < 0:
    #do something other than take the sqrt
else:
    upperSum4 = (v) - sqrt(upperSum3)

只是通过做数学运算把问题弄得更深一点。。。在

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)

所以第5行中v的平方必须大于215600,这样方程才能不向sqrt()返回负数,这就是导致错误的原因。在

V必须大于465才能使upperSum3为正,并且通过运行各种数字,它实际上永远不会变为正,因此您使用的等式或设置本身肯定有问题。在

如果我自己不知道公式(我找不到),我就无法判断代码的哪一部分是错误的。在

你读错了formula (bottom of page)。在

具体来说,您在v**2后面应用减号两次:

首先在这里应用它(错误地,好像它是一个负号):

upperSum1 = -4*(-4.9)

然后在这里再次应用它(正确地,作为负号)。在

^{pr2}$

upperSum1应该是:

upperSum1 = 4*(-4.9)

相关问题 更多 >