Colebrook 方程有多个近似值。看这里你指的是哪一个?它有助于更具体地了解您正在尝试做什么。
除此之外,这里还有一个简单的问题。
1/math.sqrt(friction)=-2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))
在 Python(以及我曾经使用过的大多数语言)中,您不能以这种方式编写方程式。计算机不会为你解代数。如果你解决得到f=SomeEquation()
,只有这样计算机才能真正为你做数学。
在您的第二个示例中也存在问题。
import math
def friction(Re, eD):
eD= 0.0009
Re= 2300
f = -2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))
return 1/math.sqrt(f)
Re
您已经定义了一个接受and的函数eD
,但随后您立即在函数中重新定义了它们。如果您选择不传递这些变量,有一种方法可以为这些变量设置默认值,但我认为这不是您要在这里做的。此外,(为了简洁起见,您很可能只是忽略了这部分)您从未真正调用过您的函数,这意味着您的脚本实际上从未执行任何操作。
你需要类似的东西(我没有在这里检查你的等式,因为我不知道你要去哪一个):
import math
# Function definition
def friction(Re, eD):
f = -2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))
return 1/math.sqrt(f)
# Call your function with your desired values (arguments) and store the result in f
f = friction(2300, 0.0009)
希望有帮助。