对于E=0.46732451
并且t=1.07589765
我正在尝试求解积分的上限 t= \int_{0}^{z} 1/sqrt(2*(0.46732451-z**2)),我绘制了这个函数,它看起来像这样.
它周围t=1
有一种渐近线。
我有以下代码
import numpy as np
from scipy import integrate
from scipy.optimize import fsolve
def fg(z_up,t,E):
def h(z,E):
return 1/(np.sqrt(2*(E-z**2)))
b, err = integrate.quad(h, 0, z_up,args=(E))
return b-t
x0 = 0.1
print fsolve(fg, x0, args=(1.07589765, 0.46732451))[0]
但是这段代码只是输出猜测值,不管我放什么,所以我猜这与曲线在那里渐近的事实有关。我应该注意,此代码适用于t
远离渐近区域的其他值。
谁能帮我解决这个问题?
谢谢
编辑玩了一段时间后,我解决了这个问题,但它是一种拼凑而成,它只适用于不是一般的类似问题(或者是吗?)
z
我进行了以下更改:可以达到的最大值是sqrt(0.46732451)
,所以我在to之间设置x0=0.5*np.sqrt(0.46732451)
和设置,然后 out 弹出正确答案。我对此没有任何解释,也许这方面的专家可以提供帮助? factor
0.1
1