Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

милн (хуйзнат)

.pas
Скачиваний:
13
Добавлен:
09.12.2013
Размер:
2.31 Кб
Скачать
Program miln;
Uses crt;
type real=double;
const
n=10;
h=0.01;
function F(x, y: real): real;
begin
F:= (-1*(2*x*y)/(y*y-3*x*x));
end;
Function ff(x: real): real;
begin
ff:=(y*y*y-y*y);
end;
var
i: integer;
k: word;
x: array[0..n] of real;
y: array[0..n, 1..5] of real;
yy: real;
w, a1, a2, b1, b2: real;
begin
clrscr;
GOTOXY(20,2);

WRITELN;
y[0,1]:=ff(2); y[0,2]:=ff(2); y[0,3]:=ff(2); y[0, 4]:=ff(2);
x[0]:=(2);
for k:=1 to n do x[k]:=x[0]+h*k;
{Метод Эйлера (простой)}
for k:=0 to 2 do
y[k+1, 1]:=y[k, 1]+h*F(x[k], y[k, 1]);
{Метод Эйлера (модифиц)}
for k:=0 to 2 do begin
y[k+1, 2]:=y[k, 2]+h*F(x[k], y[k, 2]);
y[k+1, 2]:=y[k, 2]+h/2*(f(x[k], y[k, 2])+f(x[k+1], y[k+1, 2]));
end;
{ Метод Эйлера (уточнен)}
for k:=0 to 2 do begin
y[k+1, 3]:=y[k, 2]+h*F(x[k], y[k, 2]);
{Уточняем}
repeat
yy:=y[k+1, 3];
y[k+1, 3]:=y[k, 3]+h/2*(f(x[k], y[k, 3])+f(x[k+1], y[k+1, 3]));
until y[k+1, 3]-yy<=0.000001
end;
{с наилучшей w}
for k:=0 to 2 do begin
w:=0.75;
y[k+1, 4]:=y[k, 4]+h*((1-w)*f(x[k], y[k, 4])+w*f(x[k]+1/(2*w)*h, y[k, 4]+1/(2*w)*h*f(x[k], y[k, 4])));
end;
{точное решение}
for k:=0 to n do
y[k, 5]:=ff(x[k]);
{Метод Милна (для всех столбиков)}
for i:=1 to 4 do {четыре столбика}
for k:=4 to n do begin
{Предположительное значение:}
y[k, i]:=y[k-4, i]+4*h/3*(2*f(x[k-3], y[k-3, i]) -
f(x[k-2], y[k-2, i]) +
2*f(x[k-1], y[k-1, i]));
{Уточняем:}
y[k, i]:=y[k-2, i] + h/3*( f(x[k-2], y[k-2, i]) +
4*f(x[k-1], y[k-1, i]) +
f(x[k], y[k, i]));
end;
WriteLn('N':3, '¦ ', 'Простой':12, '¦ ', 'Модифицир':12, '¦ ', 'Уточненный':12, '¦ ', 'С наилучшим':12, '¦ ','Точное':10);
WriteLn(' ':3, '¦ ', 'Эйлер':12, '¦ ', 'Эйлер':12, '¦ ', 'Эйлер':12, '¦ ', 'w':12, '¦ ', 'значение':10);
Writeln('===+=============+=============+=============+=============+===============');
for i:=0 to n do begin
WriteLn(i:3, '¦ ', y[i, 1]:12:7, '¦ ', y[i, 2]:12:7, '¦ ', y[i, 3]:12:7, '¦ ',
y[i, 4]:12:7, '¦ ', y[i, 5]:10:7);
end;
readln;
end.