【Python\Matlab】计算风管摩擦阻力系数

在设计V型滤池的过程中,有一步是计算鼓风机的风管摩擦阻力系数,由于这个方程是一个超越方程,故手按计算器还是有点麻烦,直接上代码计算可以一步到位,在此留作记录。

计算公式

\frac{1}{\sqrt{\lambda }}=-2lg(\frac{K}{3.71d}+\frac{2.51}{Re\sqrt{\lambda}})

其中,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求解器是按梯度下降法进行求解的,所以求出的解不一定是全局最优解,故在计算前应该对答案有一个大致的估计。

posted @   _Lisx  阅读(81)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示