我写了一个简单的Python代码来解决一定的液压式(该Manning's equation):为什么这个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
计算。速度然后用于通过乘以区域A
来计算排放Q
。用户输入单位约定,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
。
如果有人能告诉我这里出了什么问题,那会很棒。这是一个非常简单的公式,我猜测它应该很容易。
请注意:或许'k/n * R **(2.0/3)* S ** .5'比拼出'math.pow'和'math.swrt'更清晰。 – Hyperboreus