我想写一段python脚本来自动化一些相当耗时的任务,在一些液压问题中,发生在土木工程。求解Sympy Python的非线性方程 - 需要解决TypeError(“不能将表达式转换为float”)
的公式是从科尔布鲁克 - 怀特,而如下:
我写了下面的代码:
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-航程200)我通常使用nSolve()
,它完成这项工作。
在此先感谢!
你总是可以张贴的链接公式。图片,我可以上传到您的文章,好吗? – user3666197 2014-10-13 16:53:53
嗨,谢谢,但我已经解决了它!感谢所有的帮助! – 2014-10-15 16:42:31