时间步长与空间步长对稳定性影响
- 格式:doc
- 大小:112.50 KB
- 文档页数:7
对下面的一阶对流扩散方程
∂u∂t+a∂u∂t=0x∈(−∞,∞),t>0u(x,0)=U(x)x∈(−∞,∞) (1.1)
对求解区间[0,1]
U(x)=10x+1−0.1≤x≤0−10x+10≤x≤0.10其余 Matlab程序
function u = yingfeng(a,dt,n,minx,maxx,M)
%方程中的常数:a
%时间步长:dt
%空间节点个数:n
%求解区间的左端:minx
%求解区间的右端:naxx
%时间步的个数:M
%求解区间上的数值解:u
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 ux=IniU(x)
format long;
if x<=0
if x>=-0.1
ux=10*(x+0.1);
else
ux=0;
end
else if x<=0.1
ux=-10*(x-0.1);
else
ux=0;
end
end
end
在保持其他量不变的情况下,通过改变dt的值来改变来分析时间步长dt和空间步长h的取值关系
事实上令r=Δth则有 ar=aΔth=aΔt(maxx−minx)/(n−1)=aΔt(n−1);
u=yingfeng(1,0.00001,101,0,1,100);
plot(u)
u=yingfeng(1,0.001,101,0,1,100);
plot(u)
u=yingfeng(1,0.003,101,0,1,100);
>>
plot(u)
u=yingfeng(1,0.005,101,0,1,100);
plot(u)
u=yingfeng(1,0.006,101,0,1,100);
plot(u)
u=yingfeng(1,0.007,101,0,1,100);
plot(u)
u=yingfeng(1,0.008,101,0,1,100);
plot(u)
u=yingfeng(1,0.009,101,0,1,100);
plot(u) u=yingfeng(1,0.01,101,0,1,100);
plot(u)
u=yingfeng(1,0.011,101,0,1,100);
plot(u)
u=yingfeng(1,0.012,101,0,1,100);
plot(u)
u=yingfeng(1,0.013,101,0,1,100);
plot(u)
>>
u=yingfeng(1,0.014,101,0,1,100);
>>
plot(u)
>>
u=yingfeng(1,0.017,101,0,1,100);
>>
plot(u)
>>
u=yingfeng(1,0.020,101,0,1,100);
>>
plot(u)
u=yingfeng(1,1,101,0,1,100);
plot(u)
由以上得到的图像我们可以知道当ar≤1,既Δth≤1a时波是稳定的,且随着时间的增长向右传播;ar>1时,波开始不稳定,且向左不断的扩散。
特别的当ar=1或Δt→0方程的解不是平滑的曲线