无法根据规则“safe”将数组数据从dtype('complex128')强制转换为dtype('float64')

2024-05-16 02:47:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解决如下所示的优化问题。但是每次我得到一个错误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 

Tags: tofftdefnpzeroslikefuncdtype
1条回答
网友
1楼 · 发布于 2024-05-16 02:47:13

^{}从Rn↦R中找到函数的根。您的函数func似乎是Cn↦R,特别是起点u1有显式的复杂类型(尽管它的值是实数),这正是错误所说的。在

如果您的输入总是实的,只需在u1中设置dtype='float'。否则,您必须使用不同的函数进行优化,例如sympy的^{}。在

相关问题 更多 >