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

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

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

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

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

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

Программа/

Результат

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

Оценка

Группа: Ф-0

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

Выполнил:

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

Москва 2012 год

  1. Полная постановка задачи:

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

  1. Результаты, полученные при выполнении лабораторной работы:

Для шага h=0.05

Точное решение задачи,

Численное решение задачи с аппроксимацией краевых условий с первым порядком точности,

Численное решение задачи с аппроксимацией краевых условий со вторым порядком точности,

0.000000

0.051271

0.105166

0.161807

0.221313

0.283796

0.349365

0.418120

0.490159

0.565573

0.644446

0.726860

0.812890

0.902606

0.996075

1.093361

1.194521

1.299610

1.408681

1.521783

1.638961

0.0149

0.0664

0.1205

0.1773

0.2369

0.2995

0.3651

0.4339

0.5059

0.5813

0.6601

0.7425

0.8284

0.9181

1.0114

1.1086

1.2097

1.3146

1.4236

1.5366

1.6536

0.000146

0.051410

0.105297

0.161931

0.221428

0.283903

0.349462

0.418209

0.490240

0.565645

0.644510

0.726916

0.812938

0.902647

0.996109

1.093387

1.194540

1.299622

1.408687

1.521782

1.638954

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

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

0.0E+00

2.1E-03

4.1E-03

6.1E-03

8.1E-03

1.0E-02

1.2E-02

1.4E-02

1.6E-02

1.7E-02

1.9E-02

2.1E-02

2.2E-02

2.3E-02

2.5E-02

2.6E-02

2.7E-02

2.8E-02

2.9E-02

3.0E-02

3.0E-02

1.5E-04

1.4E-04

1.3E-04

1.2E-04

1.1E-04

1.1E-04

9.8E-05

8.9E-05

8.1E-05

7.2E-05

6.4E-05

5.6E-05

4.8E-05

4.1E-05

3.3E-05

2.6E-05

1.9E-05

1.2E-05

5.7E-06

7.0E-07

6.9E-06

Для шага h=0.1 приведена только вторая таблица.

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

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

3.0E-02

3.1E-02

3.1E-02

3.1E-02

3.1E-02

3.1E-02

3.1E-02

3.1E-02

3.0E-02

3.0E-02

2.9E-02

5.9E-04

5.3E-04

4.6E-04

3.9E-04

3.3E-04

2.6E-04

2.0E-04

1.4E-04

8.0E-05

2.6E-05

2.4E-05

Код с 1 порядком

//1 poryadok approximacii

function p(x:real):real; //pered u'

begin

p:= 1/(1+x);

end;

function q(x:real):real; //pered u

begin

q:= 1/(1+x)/(1+x);

end;

function f(x:real):real; //posle znaka =

begin

f:= (2+6*x+5*x*x)/(1+x)/(1+x) ;

end;

function y0(x:real):real; //to4noe reshenye

begin

y0:= x*x+sin(ln(1+x));

end;

type mat=array[0..100] of real ;

var x,h:real;

n,i:integer;

f1:text;

t,x0,a,b:mat; {zadaem matricy, t - dlya koefficientov a=t[0],b=t[1],c=t[2],d=t[3]

(a,b,c - koefficienty treh diagonal'noy matricy);

x0 - dlya resheniy v tochkah;

a - dlya koefficientov A(i);

b - dlya koefficientov B(i);

chto za koefficienty? - smotret' lekcii! }

begin

assign(f1,'out3-1.txt');

rewrite(f1);

h:=0.1; //shag

n:=10; // 1/h - chislo tochek

// approximaciya na levoi granice - zapicyvaem

// uravneniye a0*y(-1)+b0*y0+c0*y1=d0

t[0]:= 0.0; // a0 vsegda =0

t[1]:= 1+2*h; // b0

t[2]:= -1; // c0

t[3]:= -h; // d0

a[0]:=-t[2]/t[1]; //A(0) i B(0) pered pryamym hodom

b[0]:=t[3]/t[1];

// Pryamoi hod

for i:=1 to n-1 do

begin

t[0]:=(1/(h*h))-p(i*h)/(2*h);

t[1]:=-2/(h*h)+q(i*h);

t[2]:=1/(h*h)+p(i*h)/(2*h);

t[3]:=f(i*h); {ai,bi,ci,di}

a[i]:=-t[2]/(t[1]+t[0]*a[i-1]);{A(i)}

b[i]:=(t[3]-t[0]*b[i-1])/(t[1]+t[0]*a[i-1]);{B(i)}

end;

// approximaciya na pravoi granice - zapicyvaem

// uravneniye an*y(n-1)+bn*yn+cn*y(n+1)=dn

t[0]:= 1.0 ; // an

t[1]:=-1-3*h ; // bn

t[2]:= 0.0 ; // cn = 0

t[3]:=-7.3015*h; // dn

//Obratny hod

a[n]:=0; {A(n)=0! iz lekcii}

b[n]:=(t[3]-t[0]*b[n-1])/(t[1]+t[0]*a[n-1]);

x0[n]:=b[n];

for i:=n-1 downto 0 do

x0[i]:=a[i]*x0[i+1]+b[i];

// Vyvod polychennyh znacheny

writeln(f1,' y u0 y[i]-u0[i]');

for i:=0 to n do

writeln(f1,x0[i]:1:4,' ',y0(h*i):1:6,' ',abs(x0[i]-y0(h*i)):1);

close(f1);

readln;

end.

Код со 2 порядком

//2 poryadok approximacii

function p(x:real):real; //pered u'

begin

p:= 1/(1+x);

end;

function q(x:real):real; //pered u

begin

q:= 1/(1+x)/(1+x);

end;

function f(x:real):real; //posle znaka =

begin

f:= (2+6*x+5*x*x)/(1+x)/(1+x) ;

end;

function y0(x:real):real; //to4noe reshenye

begin

y0:= x*x+sin(ln(1+x));

end;

type mat=array[0..100] of real ;

var x,h:real;

n,i:integer;

f1:text;

t,x0,a,b:mat; {zadaem matricy, t - dlya koefficientov a=t[0],b=t[1],c=t[2],d=t[3]

(a,b,c - koefficienty treh diagonal'noy matricy);

x0 - dlya resheniy v tochkah;

a - dlya koefficientov A(i);

b - dlya koefficientov B(i);

chto za koefficienty? - smotret' lekcii! }

begin

assign(f1,'out3-2.txt');

rewrite(f1);

h:=0.1; //shag

n:=10; // 1/h - chislo tochek

// approximaciya na levoi granice - zapicyvaem

// uravneniye a0*y(-1)+b0*y0+c0*y1=d0

t[0]:= 0.0; // a0 vsegda =0

t[1]:= 1+2*h-1.5*h*h; // b0

t[2]:= -1; // c0

t[3]:= -h-h*h/2; // d0

a[0]:=-t[2]/t[1]; //A(0) i B(0) pered pryamym hodom

b[0]:=t[3]/t[1];

// Pryamoi hod

for i:=1 to n-1 do

begin

t[0]:=(1/(h*h))-p(i*h)/(2*h);

t[1]:=-2/(h*h)+q(i*h);

t[2]:=1/(h*h)+p(i*h)/(2*h);

t[3]:=f(i*h); {ai,bi,ci,di}

a[i]:=-t[2]/(t[1]+t[0]*a[i-1]);{A(i)}

b[i]:=(t[3]-t[0]*b[i-1])/(t[1]+t[0]*a[i-1]);{B(i)}

end;

// approximaciya na pravoi granice - zapicyvaem

// uravneniye an*y(n-1)+bn*yn+cn*y(n+1)=dn

t[0]:= 1.0 ; // an

t[1]:=-1-3*h-5/8*h*h ; // bn

t[2]:= 0.0 ; // cn = 0

t[3]:=-7.3015*h-1.603/8*h*h; // dn

//Obratny hod

a[n]:=0; {A(n)=0! iz lekcii}

b[n]:=(t[3]-t[0]*b[n-1])/(t[1]+t[0]*a[n-1]);

x0[n]:=b[n];

for i:=n-1 downto 0 do

x0[i]:=a[i]*x0[i+1]+b[i];

// Vyvod polychennyh znacheny

writeln(f1,' y u0 y[i]-u0[i]');

for i:=0 to n do

writeln(f1,x0[i]:1:4,' ',y0(h*i):1:6,' ',abs(x0[i]-y0(h*i)):1);

close(f1);

readln;

end.

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