在Python中寻找函数的最小值

问题描述 投票:0回答:2

我有一个函数,我正在尝试找到最小值。 这是我的代码:

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?

python scipy minimum scipy-optimize
2个回答
0
投票

注意你的目标函数

60450.64625041*np.exp(1j*(57.29*1.75056445+x))

1j
这是一个复数,求解器不知道如何将它与典型的浮点数进行比较。将其转换为实数即可使用。


0
投票
  • 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
    函数计算复数的绝对值而不是返回复数本身
© www.soinside.com 2019 - 2024. All rights reserved.