function un=LW_utux0_3(dx,t)
%% Burgers equation:
% ut + (1/2*u^2)x = 0;
% 初始条件为:
% u(x,0) = exp[-10(4x-1)^2]
% 边界条件为:
% u(0,t)=0,u(1,t)=0
% 本题要求:
% 使用Lax-Windroff格式,选择 dx=0.01, 计算并画出当
% t=0.15,和t=0.3时的数值解
%输入:
% dx--数值格式的x轴上的分割
% r--r=dt/dx,本题预设r=0.5
% t--要求解的时间
%输出:
% un--在时间t时的1×N数值解矩阵
%输出图像:
% 数值解的图像
r = 0.5;
dt = r*dx;
Jmax = round(1/dx) + 1;
x = (0:dx:1);
un = zeros(1,Jmax);%初始化un
for j = 2:1:Jmax-1
un(1,j) = exp((-10)*(4*(0+dx*(j-1))-1)^2);
end
%用Lax-Windroff格式计算t时刻的数值解
N = round(t/dt);%N 就是迭代次数
n = 0;%当前迭代次数
while n<N
un_temp = un;
for j = 2:Jmax-1
un(1,j) = un_temp(1,j)-r/2*(...
(1/2*(un_temp(1,j+1))^2-1/2*(un_temp(1,j-1))^2))+r^2/2*(...
1/2*(un_temp(1,j+1)+un_temp(1,j))*(1/2*(un_temp(1,j+1))^2-1/2*(un_temp(1,j))^2)-...
1/2*(un_temp(1,j)+un_temp(1,j-1))*(1/2*(un_temp(1,j))^2-1/2*(un_temp(1,j-1))^2));%Lax-Windroff格式
end
n = n+1;
end
plot(x,un,'b.-');
title(['dx=',num2str(dx),';t=',num2str(t)]);
xlabel('x');
ylabel('u');
legend('数值解');
end