我编写了一个简单的Python代码来解决某些水力公式(曼宁方程):
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
和S
。然后用速度Q
乘以Area来计算流量A
。用户输入单元惯例,A
,P
,S
和n
。k
是根据单位惯例决定的。
当我使用运行该函数时mannings('US',1.0618,2.7916,0.02,0.015)
,我得到了(0.38035535176959456, 14.047854719572745, 14.916012141242343)
。该R
值与R
电子表格中计算出的值匹配,但与V
和Q
相去甚远。实际V
应该是7.374638178
并且Q
应该是7.830634155
。
如果有人能告诉我这是怎么回事,那将是很好的。这是一个非常简单的公式,我猜想它应该很容易工作。
您的问题是那2/3
是一个整数除法,因此计算结果为0
。您要2.0/3
强制进行浮点除法。否则from __future__ import division
,请在文件顶部添加以使用Python 2.x中的Python 3样式划分。
假设您不使用该__future__
解决方案,您还需要将R = A / P
as编写为as,R = float(A) / P
因为否则,如果A
和P
都是整数,那么R
也将是整数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句