使用有限差分的 Sine-Gordon 呼吸解

计算科学 pde 有限差分 边界条件 非线性方程
2021-11-29 22:57:33

我正在尝试模拟 对于 Sine-Gordon 方程 在实线上由使用时间和空间的中心差异。由于反射和零狄利克雷条件的使用,我在一段时间后得到了这样的结果:

u(x,t)=4tan1(3cos(t2)sech(3x2))
uttuxx+sinu=0

在此处输入图像描述

如何避免这种情况并使模拟看起来像是在整个上?R

MATLAB中的代码供参考

l=40;delta=0.08;T=80;h=0.1;
t=linspace(0,T,T/delta);
x=linspace(-l,l,l/h);
u=zeros(length(x),length(t));
u0=4*atan(sqrt(3)*sech(sqrt(3)*x/2));
ut0=0*x;
for n=2:length(x)-1
        u(n,1)=u0(n);
        u(n,2)=(delta/h)^2/2*(u0(n+1)+u0(n-1))-(delta)^2/2*sin(u0(n))+(1-(delta/h)^2)*u0(n)+delta*ut0(n);
end
for m=2:length(t)-1
    for n=2:length(x)-1
        u(n,m+1)=(delta/h)^2*(u(n+1,m)+u(n-1,m))-delta^2*sin(u(n,m))+2*(1-(delta/h)^2)*u(n,m)-u(n,m-1);       
    end
    plot(x,u(:,m+1));
    ylim([-4 4]);
    xlabel('x');
    ylabel('u(x,t)');
    pause(0.001);
end
0个回答
没有发现任何回复~