我使用scipy.optimize.fsolve来解决傅立叶伪谱空间中的非线性方程,但它不起作用。它提供与输入u0相同的输出。我想解决的等式是:
代码如下。有人可以帮我这个吗?
import numpy as np
import scipy.optimize
M = 16
nu = 0.4
def kssol(M):
kkx = np.fft.fftfreq(2*M)*2.*M
kx = kkx[0:M+1]
def func(vec):
linspec = -(kx**2)+(nu*(kx**4))
lin = linspec*np.fft.rfft(vec)
nlin = np.zeros_like(lin)
nlinre = vec*vec
nlin = 0.5*1j*kx*np.fft.rfft(nlinre)
sol = lin+nlin
rhs = np.zeros_like(sol, dtype='complex')
sol -= rhs
return np.fft.irfft(sol)
u0 = np.zeros((2.*M,))
u = scipy.optimize.fsolve(func, u0)
return u