我试着用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()
目前没有回答
相关问题 更多 >
编程相关推荐