我有一个函数,我正在尝试找到最小值。 这是我的代码:
import nyumpy as np
from scipy.optimize import basinhopping, Bounds
from scipy import optimize
x=np.arange(-180.0,180.0)
bounds = Bounds(-180., 180.)
def P1_adj(x):
return 60450.64625041*np.exp(1j*(57.29*1.75056445+x))
print(optimize.minimize(P1_adj, x0=0))
当我运行它时,我收到此错误 “类型错误:'<' not supported between instances of 'complex' and 'float' " Would you please help me to understand what I am doing wrong?
注意你的目标函数
60450.64625041*np.exp(1j*(57.29*1.75056445+x))
1j
这是一个复数,求解器不知道如何将它与典型的浮点数进行比较。将其转换为实数即可使用。
optimize.minimize
不支持复数,函数P1_adj返回复数,这导致了错误。import numpy as np
from scipy.optimize import minimize
from scipy import optimize
def P1_adj(x):
return np.abs(60450.64625041 * np.exp(1j * (57.29 * 1.75056445 + x)))
result = minimize(P1_adj, x0=0)
print(result)
P1_adj
函数计算复数的绝对值而不是返回复数本身