在Fourier-sp中无法求解非线性方程

2024-10-06 14:32:31 发布

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

我正在使用scipy.optimize.f解决方案在Fourier伪谱空间中求解一个非线性方程,但它不起作用。它提供与输入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

Tags: importfftdefnpzerosscipynuoptimize