Python 3.x Sympy-Float没有属性sqrt
我正在编写一个代码片段,无法调试该问题,如有任何建议,将不胜感激 错误是属性错误:Float对象没有属性sqrtPython 3.x Sympy-Float没有属性sqrt,python-3.x,sympy,sqrt,Python 3.x,Sympy,Sqrt,我正在编写一个代码片段,无法调试该问题,如有任何建议,将不胜感激 错误是属性错误:Float对象没有属性sqrt from sympy import * import numpy as np rho_l = 1000; rho_g= 1.225; sigma = 0.072 nu = 0.001; Q = rho_g/ rho_l; u = 14.8; k = Symbol('k', real=True) w1 = -2*nu*k**2 w2 = 4* (nu**2) * (k**4); w
from sympy import *
import numpy as np
rho_l = 1000;
rho_g= 1.225;
sigma = 0.072
nu = 0.001;
Q = rho_g/ rho_l;
u = 14.8;
k = Symbol('k', real=True)
w1 = -2*nu*k**2
w2 = 4* (nu**2) * (k**4);
w3 = - Q* (u**2) * (k**2);
w4 = - sigma * (k**3)/ rho_l;
w = w1 + sqrt(w2+w3+w4);
print (w)
wprime = w.diff(k)
print (wprime)
ko = solve(wprime, k) # solve fprime = 0 with respect to x
ko = ko[0]
print (ko)
ws = lambdify (k, w, 'numpy');
print (type(ko))
print (ws(ko))
您之所以会出现此错误,是因为
numpy
显然不知道如何处理sympy.core.numbers.Float类型()。因此,numpy
sqrt在调用ws
时引发异常。要修复,请将sympy
传递到lambdify
而不是numpy
ws=lambdify(k,w,'sympy');
打印(键入(ko))#>>
打印(ws(ko))#>-82.5885350883393
或者,您可以使用Float()
将sympy.Float
转换为常规Float,并将k0
替换为Float(k0)
ws = lambdify(k, w, 'numpy');
print(type(float(ko))) # >> <class 'float'>
print(ws(float(ko))) # >> -82.58853508833931
ws=lambdify(k,w,'numpy');
打印(类型(浮动(ko)))#>>
打印(ws(float(ko)))#>>-82.58853508833931
你可能是指ws=lambdify(k,w,'numpy')
对-谢谢!我已将ws=lambdify(k,w,'sympy')
更改为ws=lambdify(k,w,'numpy')