我需要输入python中Colebrook方程近似值中的摩擦因子

我需要输入python中Colebrook方程近似值中的摩擦因子,python,fluid-dynamics,Python,Fluid Dynamics,我试图对科尔布鲁克方程的近似值进行编码,以获得摩擦系数。我已经在Matlab中实现了这一点,但当涉及到python时,我的代码不起作用 导入数学 Re=2300 eD=0.0009 1/math.sqrt(摩擦力)=-2*math.log10(((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9‘‘);) 印刷(摩擦) 我也试过这个 导入数学 def摩擦(Re,eD): eD=0.0009 Re=2300 f=-2*mat

我试图对科尔布鲁克方程的近似值进行编码,以获得摩擦系数。我已经在Matlab中实现了这一点,但当涉及到python时,我的代码不起作用

导入数学
Re=2300
eD=0.0009
1/math.sqrt(摩擦力)=-2*math.log10(((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9‘‘);)
印刷(摩擦)
我也试过这个

导入数学
def摩擦(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()()))
返回1/math.sqrt(f)

但这也不起作用

我不知道科尔布鲁克方程,但假设这一行的公式:

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))))))
是正确的,我们可以重新安排

import math
Re = 2300
eD = 0.0009 
friction = (1/(-2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))))**2
print(friction)
给我们

friction = 0.05073525684035217

如果您只是想要这个值(而不是试图证明您可以自己求解),那么python模块已经存在,请参见:

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
eD
,但随后您立即在函数中重新定义了它们。如果您选择不传入这些变量,有一种方法可以为它们设置默认值,但我不认为这就是您在这里要做的。此外,(为了简洁起见,您可能已经省略了这一部分)您实际上从未调用过函数,这意味着您的脚本实际上从未做过任何事情

你需要这样的东西(我不会在这里检查你的等式,因为我不知道你要的是哪一个):

希望这有帮助

import math
Re = 2300
eD = 0.0009 
friction = (1/(-2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))))**2
print(friction)

Output: 0.05073525684035217

import colebrook
Re = 2300
eD = 0.0009 
factor = colebrook.sjFriction( Re, eD)
print(factor)

Output: 0.0495
如需进一步帮助,请访问

import math
Re = 2300
eD = 0.0009 
friction = (1/(-2*math.log10((((eD/3.7)+(2.51/Re))*(1.14-2*math.log10(((eD/2)+(21.25/Re**0.9))))))))**2
print(friction)

Output: 0.05073525684035217

import colebrook
Re = 2300
eD = 0.0009 
factor = colebrook.sjFriction( Re, eD)
print(factor)

Output: 0.0495