Test code for 1D

时间:2019-10-02 19:46:11   收藏:0   阅读:104
function T76
N=100;
x=linspace(0,2*pi,N)';
h=x(2)-x(1);
D_BC=[cos(x(1)-2*h),cos(x(1)-h),cos(x(end)+h),cos(x(end)+2*h)];
N_BC=[sin(x(1)),sin(x(end))];
U1=sin(x);
U2=x.^2;
%u=[U1(1:5);U2(6:end-11);U1(end-10:end)];
u=cos(x)*0.1;
t=0;
dt=h^2;
t_end=20;
%============= Runge-Kutta =================
while t<t_end
    u1=u+dt*L(u);
    u2=3/4*u+1/4*u1+1/4*dt*L(u1);
    u=1/3*u+2/3*u2+2/3*dt*L(u2);
    t=t+dt;
     plot(x,u,x,sin(x),'r')
    title(['t=',num2str(t)])
    drawnow
end

   function y=L(u)
        %-----1.内部使用中心差分-------
         du=D1_5points(x,u,N_BC,'no');
        %-----2. 外部使用WENO5---------
         d2u_p=WENO5_1D(x,du,D_BC, 1,'D','smooth');
         d2u_m=WENO5_1D(x,du,D_BC,-1,'D','smooth');
         d2u=(d2u_p+d2u_m)/2;
         y=d2u+sin(x);
    end
end

原文:https://www.cnblogs.com/yuewen-chen/p/11618040.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!