我有一个功能:
delt=1 #trial
def f(z):
return ((1-2*z)*np.exp(-delt/z))/(((1-z)**(2+delt))*(z**(2-delt)))
我还有一个变量:
import scipy.integrate as integrate
var=integrate.quad(f,0,0.5)[0] # equals 0.040353419593637516
现在我试图找到值 p 这样
integrate.quad(f,0.5,p)= var
手动我可以检查它是否在 0.605 左右
我定义了以下用于优化的函数:
def integral(p):
return integrate.quad(f,0.5, p)[0]-var
但是,我得到以下结果:
import scipy.optimize as op
In[26]: op.root(integral,0.61)
Out[26]:
fjac: array([[-1.]])
fun: -0.040353420516861596
message: 'The iteration is not making good progress, as measured by the \n improvement from the last ten iterations.'
nfev: 18
qtf: array([ 0.04035342])
r: array([ 0.00072888])
status: 5
success: False
x: array([ 0.50002065])
In[27]: op.fsolve(integral,0.61)
Out[27]: array([ 0.50002065])
知道为什么 root 和 fsolve 都可能失败吗?