在设计V型滤池的过程中,有一步是计算鼓风机的风管摩擦阻力系数,由于这个方程是一个超越方程,故手按计算器还是有点麻烦,直接上代码计算可以一步到位,在此留作记录。
计算公式
其中,K、Re、d都是常数,具体含义水er应该都明白,主要是计算lambda。
代码
python版本
from scipy.optimize import fsolve
from math import sqrt,log10
import numpy as np
Re,K,d=316178,0.15e-3,0.4
sol = fsolve(lambda x:
1/sqrt(x)+2*log10(K/(3.71*d)+2.51/(Re*sqrt(x)))
, np.array([0.001]))
print(sol)
Matlab版本
Re=291975;K=0.15e-3;d=0.4;
func=@(x) (1/sqrt(x)+2*log10(K/(3.71*d)+2.51/(Re*sqrt(x))));
fsolve(func,0.0001)
解释
以Python版本为例,主要是使用fsolve这个函数,里面涉及两个参数,第一个参数我使用lambda x匿名函数来写的,即带求解的方程,第二个参数我是用np.array来写的,即从0.001开始迭代计算。
fsolve求解器是按梯度下降法进行求解的,所以求出的解不一定是全局最优解,故在计算前应该对答案有一个大致的估计。