我在使用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
我在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.)
关于python - 将fsolve与scipy函数一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27150687/