Дифуры (Лабораторная 3)
.docПермский Государственный Технический Университет
Электротехнический факультет
Кафедра автоматики и телемеханики
Вычислительные методы.
Отчет по лабораторной работе №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