对流方程——偏微分方程的数值解法
用迎风格式解对流方程
function u = peYF(a,dt,n,minx,maxx,M)
format long;
h = (maxx-minx)/(n-1);
if a>0
for j=1:(n+M)
u0(j) = IniU(minx+(j-M-1)*h);
end
else
for j=1:(n+M)
u0(j) = IniU(minx+(j-1)*h);
end
end
u1 = u0;
for k=1:M
if a>0
for i=(k+1):n+M
u1(i) = -dt*a*(u0(i)-u0(i-1))/h+u0(i);
end
else
for i=1:n+M-k
u1(i) = -dt*a*(u0(i+1)-u0(i))/h+u0(i);
end
end
u0 = u1;
end
if a>0
u = u1((M+1):M+n);
else
u = u1(1:n);
end
format long;
用拉克斯-弗里德里希斯格式解对流方程
function u = peHypbLax(a,dt,n,minx,maxx,M) format long;
h = (maxx-minx)/(n-1);
for j=1:(n+2*M)
u0(j) = IniU(minx+(j-M-1)*h);
end
u1 = u0;
for k=1:M
for i=k+1:n+2*M-k