无法求解傅立叶空间中的非线性方程

时间:2018-02-18 23:14:40

标签: python numpy optimization scipy fft

我使用scipy.optimize.fsolve来解决傅立叶伪谱空间中的非线性方程,但它不起作用。它提供与输入u0相同的输出。我想解决的等式是:

equation

代码如下。有人可以帮我这个吗?

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

0 个答案:

没有答案