【发布时间】:2014-12-05 00:19:12
【问题描述】:
我正在尝试编写一段 Python 脚本,以自动处理土木工程中出现的一些水力学问题中的一项相当耗时的任务。
公式来自 Colebrook-White,如下所示:
我写了以下代码:
from math import *
from sympy import *
e = 0.2
d = 0.2
v = 0.00000131
q = 10
s = ( pi * d ** 2 ) / 4
u = q / s
re = u * d / v
lamb = symbols( 'lamb' )
solve( 1 / sqrt( lamb ) \
+ 2 * log10( e / ( 3.7 * d ) \
+ 2.51 / ( re * sqrt( lamb ) ) \
), \
lamb \
)
但它给出了错误:
File "hg.py", line 12, in <module>
solve(1/sqrt(lamb) + 2*log10(k/(3.7*d) + 2.51/(re*sqrt(lamb))),lamb)
File "/home/luis/Documents/sympy/sympy/core/expr.py", line 211, in __float__
raise TypeError("can't convert expression to float")
TypeError: can't convert expression to float
我无法发布方程式外观的图片,因为我是新的。
由于sqrt(lambda)在等式的两边,我认为它必须通过迭代方法来解决,但我不知道该怎么做......在我的计算器上(TI-Voyage 200)我通常使用 nSolve(),它可以胜任。
提前致谢!
【问题讨论】:
-
您可以随时发布 Eqn 的链接。图片,我可以上传到你的帖子,好吗?
-
嗨,谢谢,但我同时解决了!感谢所有的帮助!
标签: python sympy solver nonlinear-functions