Разностная схема Кранка-Николсона
Программа решения первой краевой задачи для уравнения параболического типа по разностной схеме Кранка-Николсона методом прогонки.
program krunk; uses Crt; Type ar = array[0..20,0..20] of Real; ar1 = array[0..20] of Real; Const La=1; h=0.1; tay=0.00167; m=10; var u: ar; p,q:ar1; i,k,n:integer; l,ld:Real; function F(x:Real):real; begin F:=3*x*(1-x)+0.12; end; function Fi(x:Real):real; begin Fi:=2*(x+0.06); end; function Psi(x:Real):real; begin Psi:=0.84; end; BEGIN ClrScr; n:=Trunc(La/h+0.5); for k:=1 to m do begin u[0,k]:=Fi(k*tay); u[n,k]:=Psi(k*tay); end; for i:=1 to n-1 do u[i,0]:=f(i*h); k:=1; l:=tay/sqrt(h); ld:=1+2*l; p[1]:=l/(ld); q[1]:=((1-2*l)*u[1,k]+l*(u[0,k]+u[0,k+1]+u[2,k]))/(ld); for k:=1 to m-1 do begin for i:=2 to n-2 do begin p[1]:=l/((ld)-l*p[i-1]); q[1]:=(1-2*l)*u[1,k]+l*(u[i-1,k]+u[i+1,k+1])+l*q[i-1]; end; q[n-1]:=(1-2*l)*u[n-1,k]+l*(u[n-2,k]+u[n,k]+u[n,k+1]+l*q[n-2])/ ((ld)-l*p[n-2]); u[n-1,k+1]:=q[n-1]; for i:=n-2 downto 1 do u[i,k+1]:=q[i]+p[i]*u[i+1,k+1]; end; writeln('Rezyltati vichisleniy'); write(''); for i:=0 to n do write('',i:2,''); Writeln(); write(''); for i:=0 to n do write('',i*h:1:2,''); for k:=0 to m do begin Writeln(); write(k:2,'|'); for i:=0 to n do begin write(u[i,k]:1:3,''); end; end; Writeln(); Writeln('Kolichestvo razbieniy po osi Ox= ',n:2); Writeln('Shag razbieniya= ',h:1:5); Writeln('Shag po vremennomy slou= ',tay:1:5); Writeln('Kolichestvo shagov= ',m:2); while not keypressed do; END.