scipy 找到使函数最小的x python [duplicate]

bcs8qyzn  于 8个月前  发布在  Python
关注(0)|答案(2)|浏览(62)

此问题已在此处有答案

Can scipy.optimize minimize functions of complex variables at all and how?(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(Angular )。

qzlgjiam

qzlgjiam1#

  • 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 funct计算复数的absolute value,而不是返回复数本身
acruukt9

acruukt92#

注意你的目标函数

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

1j这里是一个复数,求解器不知道如何将它与典型的浮点数进行比较。把它转换成一个真实的数字才能工作。

相关问题