我正在尝试解决优化问题,如下所示。但每次我收到错误Cannot cast array data from dtype('complex128') to dtype('float64') according to the rule 'safe'
。
任何人都可以帮我看看代码中的错误吗?
def func(vec):
linspec = -(kx**2)+((1.-nu)*(kx**4))
lin = linspec*np.fft.fft(vec)
nlin = np.zeros_like(lin)
nlinre = vec*vec
nlinspec = np.fft.fft(nlinre)
nlin = (0.5*1j*kx*nlinspec)
sol = lin+nlin
rhs = np.zeros_like(sol, dtype='complex')
sol -= rhs
sol = np.fft.ifft(sol).real
return sol
def kssol(u0):
u1 = np.ones((2*Mx,), dtype='complex')
#u1 = 100.*u0
u = scipy.optimize.fsolve(func, u1)
return u
答案 0 :(得分:0)
scipy.optimize.fsolve
从R n ↦R找到函数的根。你的函数lsof -i:3306
似乎是C n ↦R,特别是起点brew install mysql
具有明确的复杂类型(虽然它的值是真实的),而这正是错误所讨论的内容。
如果您的输入始终是真实的,只需在func
中设置u1
即可。否则,您必须使用不同的功能进行优化,例如来自同情的mpmath.findroot
。