Scipy最小的算法是什么

2024-04-27 05:08:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用scipy.optimize.minimize.最小化一个非常简单的函数测试。目前,它是一个简单的cosinus函数,用一个正标量或负标量来考虑。当然,结果应该是0(如果标量为负)或Pi(如果标量为正)。 根据我选择的算法,结果是否正确(如预期的O或Pi)。在

我不明白我的错误。在

谢谢你的帮助。在

她是我的准则。在

#!/usr/bin/env python
# -*- coding: utf8 -*-

from __future__ import division
from numpy import linspace, append, zeros, sin, cos, arctan2
from scipy.optimize import minimize
import matplotlib.pyplot as plt

##### PARAMETERS #####

EZ = 8.9e-3
EK = 3.3e-5

Bmax = 5.0
Nb = 1001
ph=0.0

old=ph

##### MINIMIZATION ALGORITHM #####

algo='Nelder-Mead'
#algo='Powell'
#algo='CG'
#algo='BFGS'
#algo='Newton-CG'
#algo='L-BFGS-B'
#algo='TNC'
#algo='COBYLA'
#algo='SLSQP'
#algo='dogleg'
#algo='trust-ncg'

# Energy
def F(x,b):
    ez = -EZ*b*cos(x-ph)
    return ez

def Fx(x,b):
    return EZ*b*sin(x-ph)


def Minimisation(x,b):
    result=minimize(F, x, jac=Fx , args=(b,), method=algo)
    return result.x

##### SIMULATIONS #####

list_B=linspace(Bmax,-Bmax,Nb)

p1=zeros(2*Nb)
M1=zeros(2*Nb)

B=append(list_B,-list_B)  

id=0

for bb in B :
    new=Minimisation(old, bb)
    old = new
    p1[id]=new
    id=id+1

M1 = cos(p1-ph)

##### PLOT RESULTS #####

plt.plot(B,M1,'b')
plt.grid('on')

plt.show()

Tags: fromimportiddefzerospltcosph