Т.к. с увеличением времени влияние начального условия на результат уменьшается, рассмотрим один шаг явной схемы. Два варианта задания значений функции в крайних точках первого слоя. u — значение функции на нижнем слое, v — значение функции на верхнем слое. TP7.0
Код:
const
N = 10;
tau = 0.001;
function u0 (x: Extended): Extended;
begin
u0:= sqr(x) -2*x+1/2;
end;
function u1(t: Extended): Extended;
begin
u1:= 2*t;
end;
function u2(t: Extended): Extended;
begin
u2:= 1;
end;
var
h, a: Double;
u, v: array[0..N] of Double;
i : Integer;
begin
for i:= 0 to 25 do writeln;
h:= 1/N;
a:= tau/sqr(h);
writeln('N=', N:3, ' tau=', tau:7:5, ' h=', h:7:5, ' a=', a:5:2);
for i:= 1 to N-1 do u[i]:= u0(h*i); u[0]:=u0(0); u[N]:= u0(N*h);
for i:= 1 to N-1 do v[i]:= (1-2*a)*u[i] + a*(u[i-1] + u[i+1]);
writeln('1: v[1]=', v[1]:7:5, ' v[N-1]=', v[N-1]:7:5);
for i:= 1 to N-1 do u[i]:= u0(h*i); u[0]:=u1(0); u[N]:= u2(0);
for i:= 1 to N-1 do v[i]:= (1-2*a)*u[i] + a*(u[i-1] + u[i+1]);
writeln('2: v[1]=', v[1]:7:5, ' v[N-1]=', v[N-1]:7:5);
end.
Результат выполнения
Код:
N= 10 tau=0.00100 h=0.10000 a= 0.10
1: v[1]=0.31200 v[N-1]=-0.48800
2: v[1]=0.26200 v[N-1]=-0.33800
Имеется разница.
Что и как сравнивать,
TOTAL, не подскажете? Да и, вообще, что здесь экспериментально можно нащупать?