【发布时间】:2012-08-25 08:56:29
【问题描述】:
我正在尝试优化(最小化)二维函数E(n,k),定义如下:
error=lambda x,y,w: (math.log(abs(Tformulated(x,y,w))) - math.log(abs(Tw[w])))**2 + (math.atan2(Tformulated(x,y,w).imag,Tformulated(x,y,w).real) - math.atan2(Tw[w].imag,Tw[w].real))**2
其中Tformulated的获取方式如下:
def Tformulated(n,k,w):
z=1j
L=1
C=0.1
RC=(w*L)/C
n1=complex(1,0)
n3=complex(1,0)
n2=complex(n,k)
FP=1/(1-(((n2-n1)/(n2+n1))*((n2-n3)/(n2+n3))*math.exp(-2*z*n2*RC)))
Tform=((2*n2*(n1+n3))/((n2+n1)*(n2+n3)))*(math.exp(-z*(n2-n1)*RC))*FP
return Tform
和Tw 是一个先前计算的具有复值元素的列表。
我真正想做的是对于w 的每个值(用于“错误x,y,w ....”)我想最小化x 和@987654328 的值的函数“错误” @。 w 范围从 1 到 2048。所以,它基本上是一个 2D 最小化问题。我已经尝试过编程(尽管我一直不知道使用什么方法以及如何使用它);我的代码如下:
temp=[]
i=range(5)
retval = fmin_powell(error , x ,y, args=(i) , maxiter=100 ,maxfun=100)
temp.append(retval)
我不确定fmin_powell 是否正确。
【问题讨论】:
-
您似乎正在尝试最小化 3D 功能
error?
标签: python optimization scipy minimization