微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 scipy.optimize 的函数最大值

如何解决使用 scipy.optimize 的函数最大值

x 轴为“k 值”(k 为三动量差)和横截面 y 轴的函数。并且需要使用 scipy.optimize.minimize 找到函数的最大 y 值(即函数的最大横截面值)。方程是 kappa 的函数(k 和 kappa 相关),其中 a、b、c、d 和 e 的值是常数。在 Desmos 上绘制图形 我知道我正在寻找的答案是 245。

但问题在于我编写的代码给出的答案与我正在寻找的答案大不相同。代码写在下面,方程在底部

from scipy.optimize import minimize
def two_pion_deuteron(k_value):
    
     a,b,c,d,e = 2.855e6,1.311e1,2.961e3,5.572e0,1.416e6 
        
     Cross_section = (a*(k_value)**b)/((c-np.exp(d*k_value)**2) + e)
     
     return Cross_section 

Max_cross_section = minimize(lambda x: -two_pion_deuteron(x),method = 'Nelder-Mead')

print(-Max_cross_section.fun)

输出为 9.49205479500129e+16,与 245 的真实答案相差甚远。

enter image description here

解决方法

将此行更改为:

Max_cross_section = minimize(two_pion_deuteron,method = 'Nelder-Mead')

然后您需要找到正确的初始猜测 (x0)。

Source

,

是什么让你认为这个函数有最大值?它显然在 np.exp(d*k_value)**2 == c+e 处有一个奇点:

x = np.linspace(0,3,1000)
plt.plot(x,two_pion_deuteron(x))

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。