时间步长与空间步长对稳定性影响

  • 格式: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方程的解不是平滑的曲线