我正在尝试解决如下所示的优化问题。但是每次我得到一个错误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
^{} 从Rn↦R中找到函数的根。您的函数
func
似乎是Cn↦R,特别是起点u1
有显式的复杂类型(尽管它的值是实数),这正是错误所说的。在如果您的输入总是实的,只需在} 。在
u1
中设置dtype='float'
。否则,您必须使用不同的函数进行优化,例如sympy的^{相关问题 更多 >
编程相关推荐