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

Дифуры (Лабораторная 3)

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

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

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

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

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

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

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

Вариант № 6

Выполнил: студент

гр. КРЭС-05 Пьянков А. Л.

Проверила: доцент кафедры АТ Леготкина Т. С.

Пермь 2007 г.

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

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

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

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

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

, где

, где

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

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

, где

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

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

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

, где .

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

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

Листинг программы:

{$N+}

program lab3;

uses CRT;

const a=0; b=4; hzad=0.1; ezad=0.00001; nzad=20;

var

x,y,z,t1,zk,zp,zpr,y1,zis,zmo,t,yk,yp,ypr,yis,ymo,e:array[0..100] of extended;

emax,h:extended;

c:char;

i,n:integer;

out:text;

function f(x,y,z:extended):extended;

begin

f:=1+exp(x)-y;

end;

begin

assign(out,'laba.txt');

rewrite(out);

{na4alnie usloviya}

x[0]:=a; y[0]:=2.5; z[0]:=1.5;

{repeat }

h:=hzad;

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

{zabivaem x}

for i:=0 to n-1 do x[i+1]:=x[i]+h;

{to4noe}

for i:=0 to n do t[i]:=cos(x[i])+sin(x[i])+1+exp(x[i])/2;

for i:=0 to n do t1[i]:=-sin(x[i])+cos(x[i])+x[i]*exp(x[i])/2;

{prostoy metod eylera}

ypr[0]:=y[0];

zpr[0]:=z[0];

for i:=0 to n-1 do

begin

zpr[i+1]:=zpr[i]+h*f(x[i],ypr[i],zpr[i]);

ypr[i+1]:=ypr[i]+h*zpr[i];

end;

{ispr}

yis[0]:=y[0]; zis[0]:=z[0];

for i:=0 to n-1 do

begin

zis[i+1]:=zis[i]+h/2*(f(x[i],yis[i],zis[i])+f(x[i]+h,yis[i]+h*zis[i],zis[i]+h*f(x[i],yis[i],zis[i])));

yis[i+1]:=yis[i]+h/2*(zis[i]+zis[i]+h*f(x[i],yis[i],zis[i]));

end;

{mod}

ymo[0]:=y[0];

zmo[0]:=z[0];

for i:=0 to n-1 do

begin

zmo[i+1]:=zmo[i]+h*f(x[i]+h/2,ymo[i]+h/2*zmo[i],zmo[i]+h/2*f(x[i],ymo[i],zmo[i]));

ymo[i+1]:=ymo[i]+h*(zmo[i]+h/2*f(x[i],ymo[i],zmo[i]));

end;

for i:=0 to 3 do

begin

yk[i]:=yis[i];

yp[i]:=yk[i];

zk[i]:=zis[i];

zp[i]:=zk[i];

y1[i]:=yis[i];

end;

{miln}

for i:=3 to n-1 do

begin

zp[i+1]:= zk[i-3] + 4*h/3 * (2* f(x[i-2],yk[i-2],zk[i-2]) - f(x[i-1],yk[i-1],zk[i-1]) + 2* f(x[i],yk[i],zk[i]));

zk[i+1]:= zk[i-1]+h/3*(f(x[i+1],yp[i+1],zp[i+1])+4*f(x[i],yk[i],zk[i])+f(x[i-1],yk[i-1],zk[i-1]));

yp[i+1]:=yk[i-3]+4/3*h*(2*zk[i-2]-zk[i-1]+2*zk[i]);

yk[i+1]:=yk[i-1]+h/3*(zp[i+1]+4*zk[i]+zk[i-1]);

y1[i+1]:=yis[i+1]*1.1

end;

writeln(out,' x to4noe prostoy ispr mod miln');

for i:=0 to n do

writeln(out,x[i]:8:2,t[i]:8:2,ypr[i]:8:2,yis[i]:8:2,ymo[i]:8:2,y1[i]:8:2);

close(out);

end.

Результаты вычислений:

x to4noe prostoy ispr mod miln

0.00 2.50 2.50 2.50 2.50 2.50

0.10 2.65 2.65 2.65 2.65 2.65

0.20 2.79 2.80 2.79 2.79 2.79

0.30 2.93 2.93 2.93 2.93 2.93

0.40 3.06 3.07 3.06 3.06 3.36

0.50 3.18 3.20 3.18 3.18 3.50

0.60 3.30 3.32 3.30 3.30 3.63

0.70 3.42 3.44 3.42 3.42 3.76

0.80 3.53 3.55 3.53 3.53 3.88

0.90 3.63 3.65 3.63 3.63 4.00

1.00 3.74 3.76 3.74 3.74 4.11

1.10 3.85 3.86 3.85 3.85 4.23

1.20 3.95 3.96 3.95 3.95 4.35

1.30 4.07 4.07 4.06 4.06 4.47

1.40 4.18 4.17 4.18 4.18 4.60

1.50 4.31 4.29 4.31 4.31 4.74

1.60 4.45 4.41 4.44 4.44 4.89

1.70 4.60 4.54 4.60 4.59 5.06

1.80 4.77 4.69 4.77 4.77 5.25

1.90 4.97 4.86 4.96 4.96 5.46

2.00 5.19 5.05 5.19 5.18 5.70

2.10 5.44 5.27 5.44 5.43 5.98

2.20 5.73 5.53 5.73 5.72 6.30

2.30 6.07 5.82 6.06 6.06 6.67

2.40 6.45 6.16 6.45 6.44 7.09

2.50 6.89 6.55 6.89 6.88 7.58

2.60 7.39 6.99 7.39 7.38 8.13

2.70 7.96 7.51 7.96 7.95 8.76

2.80 8.62 8.10 8.61 8.60 9.48

2.90 9.36 8.77 9.36 9.34 10.29

3.00 10.19 9.54 10.20 10.18 11.21

3.10 11.14 10.41 11.14 11.13 12.26

3.20 12.21 11.39 12.21 12.20 13.43

3.30 13.41 12.51 13.42 13.40 14.76

3.40 14.76 13.76 14.77 14.75 16.24

3.50 16.27 15.17 16.28 16.26 17.91

3.60 17.96 16.75 17.97 17.95 19.77

3.70 19.85 18.53 19.86 19.83 21.84

3.80 21.95 20.51 21.96 21.94 24.16

3.90 24.29 22.72 24.31 24.28 26.74

4.00 26.89 25.18 26.91 26.88 29.60

Соседние файлы в предмете Вычислительные методы