end;
for i:=n-1 downto 0 do
u[i]:=u1[i];
writeln('----------------------------------------------------------');
write(' ',j,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
j:=j+1;
writeln('--------------------------------------------------------------');
readln;
end;
end.
Уравнение с переменными коэффициентами
“Явная” схема.
Схема бегущего счета.
Правая разностная схема
p0>0, pN>0
uses crt;
const n=15;j0=50;tt=1;l=0.5;A=0.5;a1=2;q=2;
type w=array[0..n] of real;
hi=array[0..n] of real;
var i,j:integer;
x,h,t,tau,d:hi;
u,u1,g,u2,u11,u12:w;
function ut(p,r:real):real;
begin ut:= A*exp(p+r);end; {to4noe reshenie}
function fi(p,r:real):real;
begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=p+r+2;end;
begin clrscr;
writeln ( 'sxema begushego scheta');
writeln(' kogda p0>0,pN>0');
writeln(' pravaya raznostnaya sxema');
readln;
h[0] := 0;
h[1] := a1;
for i:=2 to n do
h[i] := h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];
tau[j]:=t[j]-t[j-1];
t[j]:=0;j:=1;
for i:=0 to n do
begin
x[i]:=i*h[i];t[j]:=j*tau[j];
u[i]:= A*exp(x[i]); {u0(x)}
end;
begin
while t[j]<=tt do begin clrscr;
t[j]:=t[j]+tau[j];
u1[i]:=A*exp(l+t[j]); {mu2(t)}
for i:=n-1 downto 0 do
begin
g[i]:=(tau[j+1]*p1(x[i],t[j+1])/h[i+1]); {R[i,j+1]}
u11[i]:=(g[i]*u1[i+1])+ro(x[i],t[j+1])*u[i];
u12[i]:=tau[j+1]*fi(x[i],t[j+1]);
u1[i]:=(u11[i]+u12[i])/(ro(x[i],t[j+1])+g[i]); {y
end;
for i:=n-1 downto 0 do begin
u[i]:=u1[i]; end;
writeln('----------------------------------------------------------');
write(' ',j,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i :=0 to n do
begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
j:=j+1;
writeln('--------------------------------------------------------------'
readln;
end;
end;
end.
Приложение 2
Уравнение с переменными коэффициентами
Схема с центральной разностью
p0>0, pN>0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;q=3;g1=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:= begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
p1(p,r:real):real;
begin p1:=p+r+2;end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0>0,pn>0');
readln;
h[0]:=0;
h[1]:=a1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1+(p1(x[i],t[j])*tau[j])/h[i]+tau[j]*q;
b[0]:=(tau[j]*p1)/h[i];
a[n]:=0;
c[n]:=1;
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=tau[j]*fi(x[0],t[j])+u[0];
f[n]:= A1*exp(l+t[j]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с переменными коэффициентами
Схема с центральной разностью
p0<0, pN<0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1; q=3;g1=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A1*exp(p+r)*(p*(p+1)+r*(r+1)+7);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=-(p+r+2);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0<0,pn<0');
readln;
h[0]:=0;
h[1]:=g1;
for i:=2 to n do
h[i]:=h[i-1]*q;
for i:=0 to n do
h[i]:=x[i]-x[i-1];
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1;
b[0]:=0;
a[n]:=-(tau[j]*p1[x)/h[i];
c[n]:=1-(p1*tau[j])/h[i]+tau[j]*q;
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=A1*exp(t[j]);
f[n]:= (tau[j]*fi(x[n],t[j])+u[n]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с переменными коэффициентами
Схема с центральной разностью.
p0<0, pN>0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= v*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A1*exp(p+r)*((p+r+10)-(2*p-1)*exp(2*r);end;
function ro(p,r:real):real;
begin ro:=p+r+10;end;
function p1(p,r:real):real;
begin p1:=(2*p-1)*exp(2*r);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0<0,pn>0');
readln;
h[0]:=0;
h[1]:=a2;
for i:=2 to n do
h[i]:=h[i-1]*q1;
h[i]:=x[i]-x[i-1];;
tau[j]:=t[j]-t[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=1;
b[0]:=0;
a[n]:=0;
c[n]:=1;
for i:=1 to n-1 do begin
r[i]:=tau[j+1]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j+1]*fi(x[i],t[j]);end;
f[0]:=A1*exp(t[j]);
f[n]:=A1*exp(l+t[j]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Уравнение с переменными коэффициентами
Схема с центральной разностью.
p0>0, p<0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1; a2=1;q=3;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k:integer;
h,d,tau,t:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A1*exp(p+r)*((p+r+10)-(2*p-1)*exp(2*r);end;
function ro(p,r:real):real;
begin ro:=p+r+10;end;
function p1(p,r:real):real;
begin p1:=(2*p-1)*exp(2*r);end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema s sentralnoy raznostju');
writeln(' kogda p0>0,pn<0');
readln;
h[0]:=0;
h[1]:=a2;
for i:=2 to n do
h[i]:=h[i-1]*q;
h[i]:=x[i]-x[i-1];
tau[j]:=t[j]-tau[j-1];
t[j]:=0;k:=0;
clrscr;
writeln('------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('-------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnost ');
writeln('--------------------------------------------------------');
for i:=0 to n do
begin
x[i]:=i*h[i]; t[j]:=j*tau[j];
u[i]:= A1*exp(x[i]);
d[i]:=abs(ut(x[i],t[j])-u[i]);
write('',i,'',u[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,'',d[i]:6:8,'');
end;
writeln('-------------------------------------------------------');
readln;
k:=1;
while t[j]<=tt do begin
clrscr;
t[j]:=t[j]+tau[j];
c[0]:=p1+ro*tau[j]/h[i];
b[0]:=tau[j]*p1/h[i];
a[n]:=tau[j]*p1/h[i];
c[n]:=-ro+p1*tau[j]/h[i];
for i:=1 to n-1 do begin
r[i]:=tau[j]*p1/(2*h[i]);
a[i]:=-r[i];
c[i]:=ro;
b[i]:=-a[i];
f[i]:=ro*u[i]+tau[j]*fi(x[i],t[j]);end;
f[0]:=tau[j+1]*fi(x[0],t[j])+ro*u[0];
f[n]:=-(tau[j+1]*fi(x[n],t[j])+ro*u[n]);
alfa[0]:=b[0]/c[0];
betta[0]:=f[0]/c[0];
for i:=1 to n-1 do begin
z[i]:=c[i]-alfa[i-1]*a[i];
alfa[i]:=b[i]/z[i];
betta[i]:=(f[i]+a[i]*betta[i-1])/z[i]; end;
u1[n]:=(f[n]+a[n]*betta[n-1])/(c[n]-alfa[n-1]*a[n]);
for i:=n-1 downto 0 do
u1[i]:=alfa[i]*u1[i+1]+betta[i];
writeln('----------------------------------------------------------');
write(' ',k,'sloy');
writeln(' ');
writeln('--------------------------------------------------------');
writeln('N priblijennoe tochnoe pogreshnosti ');
writeln('--------------------------------------------------------');
for i:=0 to n do begin
d[i]:=abs(ut(x[i],t[j])-u1[i]);
write('',I,' ',u1[i]:6:8,' ');
writeln(ut(x[i],t[j]):6:8,' ',d[i]:6:8,' '); end;
k:=k+1;
writeln('--------------------------------------------------------------');
readln;
for i:=0 to n do
u[i]:=u1[i];
end;
end.
Приложение 3
Уравнение с переменными коэффициентами
Трехточечная схема с весом
Метод прогонки
p0>0, pN>0
uses crt;
const n=15;j0=50;tt=1;l=1;A1=1;q=3;a2=1;
type m=array[0..n] of real;
hi=array[0..n] of real;
var i,j,k,G:integer;
h,d,tau,t,f1,f2,f3,f4,f5,f6:hi;
u,u1,r,x,z,a,b,c,f,alfa,betta:m;
function ut(p,r:real):real;
begin ut:= A1*exp(p+r);end;
function fi(p,r:real):real;
begin fi:=A*exp(p+r)*(p*(p-1)+r*(r-1)+3);end;
function ro(p,r:real):real;
begin ro:=sqr(p)+sqr(r)+5;end;
function p1(p,r:real):real;
begin p1:=p+r+2;end;
begin
clrscr;
writeln (' chislennoe reshenie uravneniya perenosa');
writeln ( 'sxema begushego scheta');
writeln(' metod progonki');
writeln(' ------------------------------' );
writeln('-------------kogda p0>0,pN>0------------');
writeln(' vvedite G=' );