我正在尝试 使用傅里叶余弦变换非线性项给出了我宁愿避免的卷积,这就是我想尝试伪谱方法的原因。
在 MATLAB 我有以下脚本(尽可能简化)
function TestCosineSeries()
Nx = 32;
x = linspace(-1,1,Nx)';
f = tanh(1000*x);
dt = 1e-3;
Nt = 100;
for k = 1 : Nt
t = k*dt
[t,y] = ode45(@(t,y)RHS(t,y,L),[0 dt],f);
f = y(end,:);
end
end
function duout = RHS(t,u,L)
N = length(u);
uhat = fft(u);
kappa = fftshift((-N/2:N/2-1)');
DDuhat = -pi^2*kappa.^2.*uhat;
DDu = ifft(DDuhat);
duout = DDu + (1-u.^2).*u;
end
我想我在使用余弦系列时做错了(也许我不能使用 FFT)。任何帮助,将不胜感激!