繁体   English   中英

将fsolve与scipy函数一起使用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM