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

отчет по 3 лабе

.doc
Скачиваний:
16
Добавлен:
09.12.2013
Размер:
71.68 Кб
Скачать

Пермский Государственный Технический Университет

Электротехнический факультет

Кафедра автоматики и телемеханики

Вычислительные методы.

Отчет по лабораторной работе №3.

Интегрирование функций.

Вариант №10

Выполнили: студент гр. АТ-01-2

Лузин М.М. Лыткин П

Проверил: Данилова С.А.

Пермь 2003 г.

Краткая теория.

1) Простой метод Эйлера:

2) Исправленный метод Эйлера:

3) Модифицированный метод Эйлера:

Для определения начального отрезка воспользуемся уточнённым методом Эйлера:

, где

, где

Метод Милна относится к методу прогнозу и коррекции и делится на две формулы : прогноза и коррекции.

Для каждой точки, начиная с четвёртой, найдём прогнозируемое значение по первой формуле Милна:

, где

Таким образом

Необходимо посчитать прогнозируемые значения , где .

Прогнозируемые значения необходимо подставить во вторую формулу Милна (формула коррекции):

, где .

Для каждой следующей точки вначале по 1 формуле Милна подсчитываем прогнозирующее значение , затем находится значение и именно это значение подставить во 2 формулу Милна

Погрешность формулы Милна:

program Max_Paxa;

uses crt;

const a=0.5; b=6; h=0.5;

var y,fi,Uisp,Upro,Umod,yisp,ypro,ymod:array[0..100]of real;

i,n :integer;

f1: text;

function f(x,y:real):real;

begin

f:=(3*y*y-x*x)/(2*y*x);

end;

begin

clrscr;

n:=round((b-a)/h);

y[0]:=0.61237;

y[1]:=sqrt(a+h+1)*(a+h);

for i:=0 to 11 do

begin

y[i]:=sqrt(a+i*h+1)*(a+i*h);

end;

ypro[0]:=0.61237;

Upro[0]:=(3*sqr(ypro[0])-sqr(a+i*h))/(2*(a+i*h)*ypro[0]);

ymod[0]:=0.61237;

Umod[0]:=(3*sqr(ymod[0])-sqr(a+3*i*h))/(2*(a+3*i*h)*ymod[0]);

yisp[0]:=0.61237;

Uisp[0]:=(3*sqr(yisp[0])-sqr(a+3*i*h))/(2*(a+3*i*h)*yisp[0]);

for i:=0 to 3 do

begin {modif metod}

Umod[i]:=f(a+(i*h)+h/2 , ymod[i]+h/2*f(a+(i*h),ymod[i]));

ymod[i+1]:=ymod[i]+h*Umod[i];

end;

for i:=0 to 3 do

begin {prostoy metod}

Upro[i]:=f(a+i*h, ypro[i]);

ypro[i+1]:=ypro[i]+h*Upro[i];

end;

for i:=0 to 2 do

begin {ispravl metod}

Uisp[i]:=0.5*(f(a+i*h,yisp[i])+f(a+i*h+h , yisp[i]+h*f(a+i*h,yisp[i])));

yisp[i+1]:=yisp[i]+h*Uisp[i];

end;

{Милн}

{Prostoy}

for i:=3 to 11 do

begin

{1 miln}ypro[i+1]:=ypro[i-3]+4*(h/3)*(2*Upro[i-2]-Upro[i-1]+2*Upro[i]);

Upro[i+1]:=f(a+(i+1)*h,ypro[i+1]);

{2 miln}ypro[i+1]:=ypro[i-1]+h/3*(Upro[i+1]+4*Upro[i]+Upro[i-1]);

end;

{Modif}

for i:=3 to 11 do

begin

{1 miln}ymod[i+1]:=ymod[i-3]+4*h/3*(2*Umod[i-2]-Umod[i-1]+2*Umod[i]);

Umod[i+1]:=f(a+i*h+h/2,ymod[i]+h/2*Umod[i]);

{2 miln}ymod[i+1]:=ymod[i-1]+h/3*(Umod[i+1]+4*Umod[i]+Umod[i-1]);

end;

{ispravl}

for i:=3 to 11 do

begin

{1 miln}yisp[i+1]:=yisp[i-3]+4*h/3*(2*Uisp[i-2]-Uisp[i-1]+2*Uisp[i]);

Uisp[i+1]:=f(a+(i+1)*h,yisp[i+1]);{(f(a+i*h,yisp[i])+f(a+(i+1)*h,yisp[i]+h*f(a+i*h,yisp[i])));

{2 miln}yisp[i+1]:=yisp[i-1]+h/3*(Uisp[i+1]+4*Uisp[i]+Uisp[i-1]);

end;

writeln(' Методы Эйлера ');

writeln;

writeln('Шаг x Простой Исправл. Модифиц. Точное');

for i:=0 to 2 do begin

write(i:2,' ',a+i*h:2:2,' ',ypro[i]:7:5); write(' ',yisp[i]:7:5);

write(' ',ymod[i]:7:5);writeln(' ',y[i]:7:5); end;

writeln;

writeln(' Метод Милна ');

writeln;

for i:=3 to 8 do

begin

write(i:2,' ',a+i*h:2:2,' ',ypro[i]:7:5,' ',yisp[i]:7:5);

write(' ',ymod[i]:7:5); writeln(' ', y[i]:7:5);

end;

for i:=9 to 11 do

begin

write(i:2,' ',a+i*h:2:2,' ',ypro[i]:7:5,' ',yisp[i]:7:5);

write(' ',ymod[i]:7:5); writeln(' ', y[i]:7:5);

end;

readln

end.