找到使函数最小的 x 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))

当我运行它时,我收到此错误

TypeError: '<' not supported between instances of 'complex' and 'float'

您能帮我理解我做错了什么吗? 我需要找到使该函数最小的 x(角度)。

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

注意你的目标函数

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

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


0
投票
  • optimize.minimize
    不支持复数,funct
    P1_adj
    返回
    complex number
    ,这导致了错误。
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
    函数计算复数的
    absolute value
    而不是返回复数本身
© www.soinside.com 2019 - 2024. All rights reserved.