我需要输入python中Colebrook方程近似值中的摩擦因子
我试图对科尔布鲁克方程的近似值进行编码,以获得摩擦系数。我已经在Matlab中实现了这一点,但当涉及到python时,我的代码不起作用我需要输入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
导入数学
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