首页 > 解决方案 > 如何通过 sympy 在 python 中计算对数方程的解

问题描述

我尝试使用 sympy 通过这个公式找到穆迪图 (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: multiple generators [log(1/37 + 836666666666667/(1000000000000000000 sqrt(f))), sqrt(f)] 结束方程 2 log(1/37 + 836666666666667/( 1000000000000000000*sqrt(f)))/log(10) + 1/sqrt(f)

它在 relative_roughness=0 时有效,但我需要超过 0。请帮忙。如何解决?

标签: pythonsympyphysics

解决方案


使用 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

推荐阅读