Добавил:
bagiwow
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:выч методы не разобраны! / LAB2-И~1 / ЛАБ_№2 / ЛАБА3 / 7,стр43
.doc{
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
