Первая краевая задача методом прогонки
Листинг программы решения первой краевой задачи уравнения параболического типа методом прогонки (по неявной схеме).
program metodProgon; uses Crt; Type ar = array[0..20,0..20] of Real; ar1 = array[0..20] of Real; Const Z=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(Z/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]:=(u[1,k-1]+l*Fi(k*tay))/(ld); for k:=2 to m do begin for i:=2 to n-1 do begin p[1]:=l/((ld)-l*p[i-1]); q[1]:=(u[1,k-1]+l*q[i-1])/((ld)*l*p[i-1]); end; u[n-1,k]:=(u[n-1,k-1]+l*Psi(k*tay))/((ld)-l*p[n-2]); for i:=n-2 downto 1 do u[i,k]:=q[i]+p[i]*u[i+1,k]; 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.