uses crt;
const mf=500;
eps=1e-5;
R=8.31;
type
vector=array[1..mf] of real;
var
i,j,N:integer;
T,Ts,Tn,alfa,beta:vector;
ai,bi,ci,fi,max:real;
lamda, ro,c,h,tau:real;
kapa, Te, q,k0,E:real;
T0,L,t_end,time:real;
f,g:text;
begin
clrscr;
Writeln('Bведите N');
Readln(N);
Writeln('Bведите t_end');
Readln(t_end);
Writeln('Bведите L');
Readln(L);
Writeln('Bведите lamda');
Readln(lamda);
Writeln('ro');
Readln(ro);
Writeln('Bведите c');
Readln(c);
Writeln('Bведите kapa');
Readln(kapa);
Writeln('Bведите Te');
Readln(Te);
Writeln('Bведите q');
Readln(q);
Writeln('Bведите k0');
Readln(k0);
Writeln('Bведите E');
Readln(E);
Writeln('Bведите T0');
Readln(T0);
h:=L/(N-1);
tau:=t_end/100.0;
for i:=1 to N do
T[i]:=T0;
time:=0;
While time<t_end do
begin
time:=time+tau;
alfa[1]:=2.0*tau*lamda/(2.0*tau*(lamda+kapa*h)+ro*c*sqr(h));
beta[1]:=(ro*c*sqr(h)*T[1]+2.0*tau*kapa*h*Te)/(2.0*tau*(lamda+kapa*h)+ro*c*sqr(h));
for i:=1 to N do
Tn[i]:=T[i];
repeat
for i:=1 to N do
Ts[i]:=T[i];
for i:=2 to N-1 do
begin
ai:=lamda/sqr(h);
bi:=2.0*lamda/sqr(h)+ro*c/tau;
ci:=lamda/sqr(h);
fi:=ro*c*Tn[i]/tau-q*k0*ro*exp(-E/(R*T[i]));
alfa[i]:=ai/(bi-ci*alfa[i-1]);
beta[i]:=(ci*beta[i-1]-fi)/(bi-ci*alfa[i-1]);
end;
T[N]:=(ro*c*sqr(h)*Tn[N]+2.0*tau*(lamda*beta[N-1]+kapa*h*Te))
/(ro*c*sqr(h)+2.0*tau*(lamda*(1-alfa[N-1])+kapa*h));
for i:=N-1 downto 1 do
T[i]:=alfa[i]*T[i+1]+beta[i];
max:=abs(T[1]-Ts[1]);
for i:= 1 to N do
if max<abs(T[i]-Ts[i]) then max:=abs(T[i]-Ts[i]);
until max<=eps
end;
Assign(f,'res.txt');
Rewrite(f);
Writeln(f, 'Толщина пластины L=' ,L:6:4);
Writeln(f, 'Число узлов по координате N=',N);
Writeln(f, 'Коэффициент теплопроводности материала пластина Lamda=',Lamda:6:4);
Writeln(f, 'ro=',ro:6:4);
Writeln(f, 'c=',c:6:4);
Writeln(f, 'T0=',T0:6:4);
Writeln(f, 'kapa=',kapa:6:4);
Writeln(f, 'Te=',Te:6:4);
Writeln(f, 'q=',q:6:4);
Writeln(f, 'k0=',k0:6:4);
Writeln(f, 'E=',E:6:4);
Writeln(f, 'h=',h:6:4);
Writeln(f, 'tau=',tau:6:4);
Writeln(f, 't=',t_end:6:4);
close(f);
Assign(g, 'tempr.txt');
Rewrite(g);
for i:= 1 to N do
writeln(g, ' ' , h*(i-1):10:8,' ',(T[i]-273):8:5);
close(g);
end.