我编写了一个简单的Python代码来求解某个水力公式(The Manning's equation):
import math
def mannings(units,A,P,S,n):
if units=='SI':
k=1.0
elif units=='US':
k=1.49
R=A/P
V=(k/n)*(math.pow(R,(2/3)))*(math.sqrt(S))
Q=A*V
return R,V,Q
在上面的代码中,速度V
是根据k
、n
、R
和{A
,计算出流量{A
,P
,S
和{k
是根据单位惯例决定的。在
当我使用mannings('US',1.0618,2.7916,0.02,0.015)
运行函数时,我得到(0.38035535176959456, 14.047854719572745, 14.916012141242343)
。R
值与电子表格中计算的R
匹配,但V
和{V
应该是7.374638178
并且Q
应该是7.830634155
。在
如果有人能告诉我这里出了什么问题那就太好了。这是一个非常简单的公式,我想它应该很容易就能实现。在
您的问题是
2/3
是整数除法,因此计算结果为0
。您希望2.0/3
强制浮点除法。或者在文件的顶部包含from __future__ import division
,以便在python2.x中使用python3样式的除法假设您不使用}都是整数,
__future__
解决方案,那么您还需要将R = A / P
写成例如R = float(A) / P
,因为否则,如果A
和{R
也将是一个整数。在相关问题 更多 >
编程相关推荐