Скачиваний:
42
Добавлен:
10.05.2014
Размер:
45.21 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение Высшего профессионального образования

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ

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

«ЧИСЛЕННОЕ РЕШЕНИЕ ЗАДАЧИ КОШИ ДЛЯ ЛИНЕЙНОГО ОБЫКНОВЕННОГО ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ ВТОРОГО ПОРЯДКА»

Программа/

Результат

Теоретический материал

Оценка

Группа: Ф-0

Курс: Численные методы

Выполнил:

Преподаватель: Рябов Павел Николаевич

Москва 2012 год

  1. Решаем уравнение

2. График точного решения

Метод Эйлера

h = 0,05

Метод Рунге-

Кутты 4,

c h= 0.1

Метод Рунге-Кутты 4,

c h= 0.05

Поправка Рунге ΔuР для метода Рунге –Кутты 4

Точное решение u0(x) в узлах сетки

1.00000

1.05000

1.09750

1.14225

1.18403

1.22261

1.25780

1.28945

1.31743

1.34165

1.36204

1.37859

1.39131

1.40022

1.40539

1.40690

1.40486

1.39938

1.39059

1.37864

1.36366

1.00E+00

1.09E+00

1.18E+00

1.25E+00

1.30E+00

1.34E+00

1.37E+00

1.38E+00

1.37E+00

1.35E+00

1.33E+00

1.00E+00

-1.00E-08

1.09E+00

-2.90E-08

1.18E+00

-4.20E-08

1.25E+00

-4.80E-08

1.30E+00

-4.90E-08

1.34E+00

-4.50E-08

1.37E+00

-3.90E-08

1.38E+00

-3.20E-08

1.37E+00

-2.40E-08

1.35E+00

-1.60E-08

1.33E+00

0.00E+00

2.10E-08

3.70E-08

4.70E-08

5.00E-08

4.90E-08

4.40E-08

3.80E-08

3.10E-08

2.30E-08

1.50E-08

1.0000000000

1.0487086561

1.0946728178

1.1376610255

1.1774621377

1.2138910848

1.2467932836

1.2760475322

1.3015673711

1.3233010285

1.3412301709

1.3553677330

1.3657551152

1.3724590191

1.3755681517

1.3751899777

1.3714476516

1.3644772101

1.3544250701

1.3414458443

1.3257004693

Погрешность метода в каждом узле расчётной области (шаг ):

Модуль разности решения по методу Эйлера и точного решения,

Модуль разности решения по методу РК4 с h=0.1 и точного решения,

Модуль разности решения по методу РК4 с h=0.05 и точного решения,

0.00E+00

1.30E-03

2.80E-03

4.60E-03

6.60E-03

8.70E-03

1.10E-02

1.30E-02

1.60E-02

1.80E-02

2.10E-02

2.30E-02

2.60E-02

2.80E-02

3.00E-02

3.20E-02

3.30E-02

3.50E-02

3.60E-02

3.70E-02

3.80E-02

0.00E+00

-3.30E-07

-5.90E-07

-7.50E-07

-8.10E-07

-7.80E-07

-7.00E-07

-6.00E-07

-4.90E-07

-3.70E-07

-2.40E-07

0.00E+00

-1.00E-08

-2.00E-08

-2.90E-08

-3.60E-08

-4.20E-08

-4.60E-08

-4.80E-08

-4.90E-08

-4.90E-08

-4.70E-08

-4.50E-08

-4.20E-08

-3.90E-08

-3.60E-08

-3.20E-08

-2.80E-08

-2.40E-08

-2.00E-08

-1.60E-08

-1.20E-08

0.00E+00

3.20E-10

7.10E-10

1.10E-09

1.30E-09

1.50E-09

1.70E-09

2.00E-09

2.30E-09

2.70E-09

3.00E-09

Код

uses crt, math;

Function pU(x,y,z:real):real; //funkcia posle u'=...

begin

pU:= z;

end;

Function pZ(x,y,z:real):real; //funkcia posle z'=...

begin

pZ:=2*x*tan(x)/(1+x*x)*arctan(x)-cos(x)-2*x*tan(x)/(1+x*x)*y-2*x/(1+x*x)*z;

//(x*cosh(x)*cosh(x)-tanh(x))/3-cosh(x)*cosh(x)*y+tanh(x)*z;

end;

Function U(x:real):real; //U- tochnoe reshenie

begin

U:= cos(x)+arctan(x);

end;

var

x,y,z,y2,dy:array [0..100] of real;

h,k1,k2,k3,k4,m1,m2,m3,m4:real;

i,n:integer;

output:text;

begin

Assign(output,'out2.txt');

Rewrite(output);

clrscr;

h:=0.05; //melkiy shag

n:=20; //1/h

x[0]:=0;

y[0]:=1; //u(0) dlya shaga h

y2[0]:=1; //u(0) dlya shaga 2h

z[0]:=1; //u'(0)

Writeln(output,'Tochnoe reshenie na melkoi setke (h)');

Writeln(output,u(x[0]));

For i:=1 to n do

begin

x[i]:=x[i-1]+h;

Writeln(output,u(x[i]));

end;

Writeln(output);

//Method Eulera

Writeln(output,'Euler na setke h');

//Rac4ety

For i:=0 to n do

begin

y[i+1]:=y[i]+z[i]*h;

z[i+1]:=z[i]+pZ(x[i],y[i],z[i])*h;

x[i+1]:=x[i]+h;

end;

//Vyvod rezultata

Writeln(output,' u |u-u0|');

For i:=0 to n do

Writeln(output,y[i],' ',abs(y[i]-u(x[i])):1 );

Writeln(output);

//Method Runge-Kutty 4

Writeln(output,'RK4 na setke h s uto4neniem dlya shaga 2h');

//Ras4ety dlya zadannogo shaga h

For i:=0 to n do

begin

k1:=h*pZ(x[i],y[i],z[i]);

m1:=h*pU(x[i],y[i],z[i]);

k2:=h*pZ(x[i]+h/2,y[i]+m1/2,z[i]+k1/2);

m2:=h*pU(x[i]+h/2,y[i]+m1/2,z[i]+k1/2);

k3:=h*pZ(x[i]+h/2,y[i]+m2/2,z[i]+k2/2);

m3:=h*pU(x[i]+h/2,y[i]+m2/2,z[i]+k2/2);

k4:=h*pZ(x[i]+h,y[i]+m3,z[i]+k3);

m4:=h*pU(x[i]+h,y[i]+m3,z[i]+k3);

z[i+1]:=z[i]+(1/6)*(k1+2*k2+2*k3+k4);

y[i+1]:=y[i]+(1/6)*(m1+2*m2+2*m3+m4);

end;

//Ras4ety dlya grubogo shaga 2h

h:=2*h;

i:=0;

While i<=n do

begin

k1:=h*pZ(x[i],y[i],z[i]);

m1:=h*pU(x[i],y[i],z[i]);

k2:=h*pZ(x[i]+h/2,y[i]+m1/2,z[i]+k1/2);

m2:=h*pU(x[i]+h/2,y[i]+m1/2,z[i]+k1/2);

k3:=h*pZ(x[i]+h/2,y[i]+m2/2,z[i]+k2/2);

m3:=h*pU(x[i]+h/2,y[i]+m2/2,z[i]+k2/2);

k4:=h*pZ(x[i]+h,y[i]+m3,z[i]+k3);

m4:=h*pU(x[i]+h,y[i]+m3,z[i]+k3);

z[i+2]:=z[i]+(1/6)*(k1+2*k2+2*k3+k4);

y2[i+2]:=y2[i]+(1/6)*(m1+2*m2+2*m3+m4);

i:=i+2;

end;

//Vyvod

Writeln(output,' u1 u2 |u1-u0| |u2-u0| dy |u2*-u0|');

i:=0;

While i<=n do

begin

dy[i]:=(y[i]-y2[i])/15;

Writeln(output,y2[i],' ',y[i],' ',y2[i]-u(x[i]):1,' ',y[i]-u(x[i]):1,' ',dy[i]:1,' ',abs(dy[i]+y[i]-u(x[i])):1);

i:=i+1;

Writeln(output,' ',y[i],' ',y[i]-u(x[i]):1);

i:=i+1;

end;

Writeln(output);

Close(output);

Writeln('out2.txt');

Readln;

end.

Соседние файлы в папке 2. Задача Коши для ОДУ 2 порядка