Скачиваний:
31
Добавлен:
09.12.2013
Размер:
3.79 Кб
Скачать
{
y'=-y*(y+1/(x+1))
y(0)=1
y=1/((1+x)*(1+ln(abs(1+x))))
x[0;5]
}
program Lab3;{}
Uses crt;
Const a=1;
b=5;
h=0.25;
Y0=0;
n=round((b-a)/h);
target=n;
Var y:array[0..n] of real;
i:integer;
{n-ѓ«®Ў «м­. ЇҐаҐ¬.}
procedure Toch_func(var y:array of real;a,h:real);
var i:integer;
x:real;
begin
for i:=0 to n do
begin
x:=a+i*h;
Y[i]:=-x*arctan(Ln(x));
end;
end;
{”-п f(x,y)}
function F(x,y:real):real;
begin F:=y/x-1/cos(y/x);end;
{Џа®бв®© ¬Ґв®¤ ќ©«Ґа }
procedure Eiler_prost(var y:array of real;a,h:real;n_:integer);
var xi:real; {y-¬ ббЁў ў Є®в®а®¬ § ¤ ­® y[0]}
i:integer; {n_-Є®«-ў® ­г¦­ле в®зҐЄ(ўЄ«оз. y[0]}
begin
for i:=0 to n_-2 do
begin
xi:=a+i*h;
y[i+1]:=y[i]+h*F(xi,y[i]);
end;
end;
{€бЇа ў«Ґ­­л© ¬Ґв®¤ ќ©«Ґа }
procedure Eiler_ispr(var y:array of real;a,h:real;n_:integer);
var xi,yi12:real; {y-¬ ббЁў ў Є®в®а®¬ § ¤ ­® y[0]}
i:integer; {n_-Є®«-ў® ­г¦­ле в®зҐЄ(ўЄ«оз. y[0]}
begin
for i:=0 to n_-2 do
begin
xi:=a+i*h;
y[i+1]:=y[i]+h*(F(xi,y[i])+F(xi+h,y[i]+h*F(xi,y[i])))/2;
end;
end;
{Њ®¤ЁдЁжЁа®ў ­­л© ¬Ґв®¤ ќ©«Ґа }
procedure Eiler_mod(var y:array of real;a,h:real;n_:integer);
var xi,yi12:real; {y-¬ ббЁў ў Є®в®а®¬ § ¤ ­® y[0]}
i:integer; {n_-Є®«-ў® ­г¦­ле в®зҐЄ(ўЄ«оз. y[0]}
begin
for i:=0 to n_-2 do
begin
xi:=a+i*h;
yi12:=y[i]+h*F(xi,y[i])/2;
y[i+1]:=y[i]+h*F(xi+h/2,yi12);
end;
end;
{ЊҐв®¤ ђг­ЈҐ-Љгвв }
procedure Runge_Kut(var y:array of real;a,h:real;n_:integer);
var i:integer; {y-¬ ббЁў ў Є®в®а®¬ § ¤ ­® y[0]}
xi,k1,k2,k3,k4:real;{n_-Є®«-ў® ­г¦­ле в®зҐЄ(ўЄ«оз. y[0]}
begin
for i:=0 to n_-2 do
begin
xi:=a+i*h;
k1:=F(xi,y[i]);
k2:=F(xi+h/2,y[i]+k1*h/2);
k3:=F(xi+h/2,y[i]+k2*h/2);
k4:=F(xi+h,y[i]+k1*h);
y[i+1]:=y[i]+h*(k1+2*k2+2*k3+k4)/6;
end;
end;
{ЊҐв®¤ ЊЁ«­ }
procedure Miln(var y:array of real;a,h:real;n:integer);
var xi_2,xi_1,xi:real;{y-¬ ббЁў ў Є®в®а®¬ § ¤ ­s y[0],y[1],y[2]}
i:integer; {n-Є®«-ў® в®зҐЄ ў ®вўҐвҐ ¬Ё­гб 1(ўЄ«оз. y[0],y[1],y[2].y[3]}
begin {a-­ з «м­ в®зЄ  x; h-и Ј Ї® x}
for i:=3 to n-1 do
begin
xi_2:=a+(i-2)*h;
xi_1:=xi_2+h;
xi:=xi_1+h;
{1-п д-« }
y[i+1]:=y[i-3]+4*h*(2*F(xi_2,y[i-2])-F(xi_1,y[i-1])+2*F(xi,y[i]))/3;
{Џ®¤бв ­®ўЄ  y[i+1] ў® 2-о д-«г}
y[i+1]:=y[i-1]+h*(F(xi+h,y[i+1])+4*F(xi,y[i])+F(xi_1,y[i-1]))/3;
end;
end;
{‚лў®¤ ¬ ббЁў  Y ў § ¤ ­­л© бв®«ЎҐж
y,n-ѓ«®Ў «м­лҐ ЇҐаҐ¬Ґ­­лҐ}
procedure OutY(x_txt:integer);
var i:integer;
begin
for i:=0 to n do
begin
if i<4 then textcolor(3) else textcolor(7);
if (i<23)then begin
gotoxy(x_txt,i+2);
write('і',y[i]:10:3);
end;
if i=target then begin
textcolor(2);
gotoxy(x_txt,25);
write('і',y[i]:10:3);
end;
end;
end;
Begin
y[0]:=Y0;
clrscr;
writeln('іќ©«Ґа Їа®бв.іќ©«Ґа ЁбЇа ў.іќ©«Ґа ¬®¤Ёд.і ђг­ЈҐ-Љгввіy=1/[(1+x)(1+ln|1+x|)]');
{ќ©«Ґа1}
Eiler_prost(y,a,h,4);Miln(y,a,h,n);OutY(1);
{ќ©«Ґа2}
Eiler_ispr(y,a,h,4);Miln(y,a,h,n);OutY(14);
{ќ©«Ґа3}
Eiler_mod(y,a,h,4);Miln(y,a,h,n);OutY(28);
{ђг­ЈҐ-Љгв}
Runge_Kut(y,a,h,4);Miln(y,a,h,n);OutY(41);
{’®з. д-п}
Toch_func(y,a,h);OutY(53);
textcolor(8);
for i:=0 to n do
begin
if i<23 then begin
gotoxy(66,i+2);
write('і',i:2,'і',a+i*h:0:1);
end;
if i=target then begin
textcolor(2);
gotoxy(66,25);
write('і',i:2,'і',a+i*h:0:1);
end;
end;
readkey;
End.
Соседние файлы в папке ЛАБА3
  • #
    09.12.20133.79 Кб257,стр43
  • #
    09.12.20133.79 Кб287,стр43.doc
  • #
    09.12.20133.79 Кб31LAB_3NEW.PAS