如何通过sympy在python中计算对数方程的解



我试图通过这个公式,使用sympy 找到Moody图(f(的摩擦因子

from sympy import *
f = Symbol ('f')
Re = 3000
relative_roughness=0.1
solve(f**(-0.5)+2*log(relative_roughness/3.7+2.51/(Re*(f)**(0.5)), 10), domain=S.Reals)

但程序以错误NotImplementedError结束:多个生成器[log(1/37+836666666667/(1000000000000000000sqrt(f(((,sqrt(f(]没有实现算法来求解方程2log(1/37+836666666667/(1000000000000000000*sqrt(f((/log(10(+1/sqrt(f(

它在relative_roughness=0时有效,但我需要大于0的值。请帮帮我。如何修复?

使用sympy的nsolve函数。这里是对0.1:的初步猜测

In [29]: eq = f**(-0.5)+2*log(relative_roughness/3.7+2.51/(Re*(f)**(0.5)), 10)                                                    
In [30]: nsolve(eq, f, 0.1)                                                                                                       
Out[30]: 0.106947153535321

最新更新