[英]Using fsolve with scipy function
我在scipy.fsolve
遇到了以下问题,但我不知道该怎么办:
U = 0.00043
ThC =1.19
Dist = 7
IncT = 0.2
pcw = 1180000
k = 1.19
B = U * pcw / (2 * k)
fugato = fsolve((((Ql/(2*math.pi* k))*math.exp(B * x)*special.kv(0, B * x))-IncT),0.01)
print fugato
我收到错误TypeError: 'numpy.float64' object is not callable
在fsolve中TypeError: 'numpy.float64' object is not callable
。
我该如何解决这个问题?
fsolve
的参数必须是一个函数。
我假设您想求解x
的方程式? 如果是这样,写:
fugato = fsolve(lambda x: Ql/(2*math.pi* k)*math.exp(B * x)*special.kv(0, B * x)-IncT,
0.01)
作品。
为了解释这里发生了什么,构造lambda x: 2*x
是一个函数定义。 它类似于编写:
def f(x):
return 2*x
lambda
构造通常用于定义只需要一次的函数。 在注册回调或表示数学表达式时通常是这种情况。 例如,如果要积分f(x) = 2*x
,则可以编写:
from scipy.integrate import quad
integral = quad(lambda x: 2*x, 0., 3.)
同样,如果要求解2 * x = 1,则可以这样写:
from scipy.optimize import fsolve
fsolve(lambda x: 2*x-1, 0.)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.