Порядок аппроксимации производных.


Для упрощения оценок предположим, что . По формуле Тейлора получим:

,

где . (1.17)

Тогда для правой разности получим

т.е. окончательно

(1.18)

и имеем аппроксимацию первого порядка.

Аналогично для левой разности

,

т.е. также получаем результат (1.18) и первый порядок аппроксимации.

Рассмотрим также центральную разность.

т.е. (1.19)

и здесь имеем аппроксимацию второго порядка.

Следовательно, центральная разность является, как правило, более точной аппроксимацией первой производной.

Установим порядок аппроксимации для второй производной. Имеем:

т.е. . (1.20)

Итак, имеем аппроксимацию второго порядка. Аналогично можно установить порядок аппроксимации для любой разностной формулы.

 

1.4. Разностный аналог краевой задачи для случая .

В этом случае вид системы (1.11) упрощается, а именно

(1.21)

Приводя подобные члены, получим

 

(1.22)

 

Пример1. Методом конечных разностей решить краевую задачу

 

В этом случае

, ,

; ; ,

, , , , , .

 

Пример М-файла

function krz_odu2

a=input('ввести координату левого конца отрезка a=');

b=input('ввести координату правого конца отрезка b=');

al1=input('ввести параметр alfa1='); bt1=input('ввести параметр beta1=');

gm1=input('ввести параметр gamma1=');

al2=input('ввести параметр alfa2='); bt2=input('ввести параметр beta2=');

gm2=input('ввести параметр gamma2=');

n=input('ввести число точек n=');

l=b-a; h=l/(n-1); xi=(a:h:b)'; x=xi(2:n-1);

P=3*x;

q=2+abs(x);

f=2-x;

tm=1/h^2-P/(2*h);

t0=q-2/h^2;

tp=1/h^2+P/(2*h);

A=diag([tm;-bt2/h],-1)+diag([al1-bt1/h;t0;al2+bt2/h])+diag([bt1/h;tp],1);

disp('матрица системы разностных уравнений'),disp(A)

b=[gm1;f;gm2];

disp('вектор правой части системы разностных уравнений'),disp(b)

y=A\b;

disp('решение:'),disp(y)

plot(xi,y),grid on,title('reshenie krajevoj zadachi y=y(x)')

 

Результаты решения при n=9

ввести координату левого конца отрезка a=-3

ввести координату правого конца отрезка b=3

ввести параметр alfa1=1

ввести параметр beta1=2

ввести параметр gamma1=0

ввести параметр alfa2=1

ввести параметр beta2=0

ввести параметр gamma2=2

ввести число точек n=9

 

матрица системы разностных уравнений

-1.67 2.67 0 0 0 0 0 0 0

6.28 0.69 -2.72 0 0 0 0 0 0

0 4.78 -0.06 -1.22 0 0 0 0 0

0 0 3.28 -0.81 0.28 0 0 0 0

0 0 0 1.78 -1.56 1.78 0 0 0

0 0 0 0 0.28 -0.81 3.28 0 0

0 0 0 0 0 -1.22 -0.06 4.78 0

0 0 0 0 0 0 -2.72 0.69 6.28

0 0 0 0 0 0 0 0 1.00

 

 

вектор правой части системы разностных уравнений

4.25

3.5

2.75

1.25

0.5

-0.25

решение:

-1.0629

-0.66432

-4.1819

-5.2704

43.962

44.862

7.6812

11.67

>>

 

 

Результаты решения при n=17

ввести координату левого конца отрезка a=-3

ввести координату правого конца отрезка b=3

ввести параметр alfa1=1

ввести параметр beta1=2

ввести параметр gamma1=0

ввести параметр alfa2=1

ввести параметр beta2=0

ввести параметр gamma2=2

ввести число точек n=17

матрица системы разностных уравнений

………………………………………………

вектор правой части системы разностных уравнений

…………………………………………………………..

решение:

0.58

0.47

0.32

0.09

-0.14

0.81

5.26

13.34

20.52

22.21

17.38

10.81

6.50

4.44

3.32

2.56

2.00

>>

 

Результаты решения при n=31

ввести координату левого конца отрезка a=-3

ввести координату правого конца отрезка b=3

ввести параметр alfa1=1

ввести параметр beta1=2

ввести параметр gamma1=0

ввести параметр alfa2=1

ввести параметр beta2=0

ввести параметр gamma2=2

ввести число точек n=31

матрица системы разностных уравнений

………………………………………………

вектор правой части системы разностных уравнений

…………………………………………………………..

решение:

0.57

0.51

0.44

0.36

0.27

0.16

0.07

0.06

0.30

1.06

2.65

5.33

9.06

13.41

17.60

20.76

22.34

21.95

19.83

16.65

13.24

10.21

7.85

6.15

4.96

4.12

3.50

3.01

2.62

2.28

2.00

>>

 

 

Пример 2. Решить краевую задачу методом конечных разностей.

; ; ; ,

где – номер группы; – номер студента по журналу.

 

В этом случае

, ,

; ; ,

, , , , , .

 

Пример М-файла (для случая s=12, g=3)

a=input('ввести координату левого конца отрезка a=');

b=input('ввести координату правого конца отрезка b=');

al1=input('ввести параметр alfa1='); bt1=input('ввести параметр beta1=');

gm1=input('ввести параметр gamma1=');

al2=input('ввести параметр alfa2='); bt2=input('ввести параметр beta2=');

gm2=input('ввести параметр gamma2=');

n=input('ввести число точек n=');

l=b-a; h=l/(n-1); xi=(a:h:b)'; x=xi(2:n-1);

 

s=12;g=3;

P=zeros(n-2,1);

q=-s./(l^2+4*x.*(l-x));

f=-(s+g)/25*(2-q.*x.*(l-x));

tm=1/h^2-P/(2*h);

t0=q-2/h^2;

tp=1/h^2+P/(2*h);

A=diag([tm;-bt2/h],-1)+diag([al1-bt1/h;t0;al2+bt2/h])+diag([bt1/h;tp],1);

disp('матрица системы разностных уравнений'),disp(A)

b=[gm1;f;gm2];

disp('вектор правой части системы разностных уравнений'),disp(b)

y=A\b;

disp('решение:'),disp(y)

plot(xi,y),grid on,title('reshenie krajevoj zadachi y=y(x)')

 

 

Результаты решения при n=9

ввести координату левого конца отрезка a=0

ввести координату правого конца отрезка b=1

ввести параметр alfa1=1

ввести параметр beta1=0

ввести параметр gamma1=0

ввести параметр alfa2=1

ввести параметр beta2=0

ввести параметр gamma2=0

ввести число точек n=9

матрица системы разностных уравнений

1.0000 0 0 0 0 0 0 0 0

64.0000 -136.3478 64.0000 0 0 0 0 0 0

0 64.0000 -134.8571 64.0000 0 0 0 0 0

0 0 64.0000 -134.1935 64.0000 0 0 0 0

0 0 0 64.0000 -134.0000 64.0000 0 0 0

0 0 0 0 64.0000 -134.1935 64.0000 0 0

0 0 0 0 0 64.0000 -134.8571 64.0000 0

0 0 0 0 0 0 64.0000 -136.3478 64.0000

0 0 0 0 0 0 0 0 1.0000

вектор правой части системы разностных уравнений

-1.7478

-1.9714

-2.0710

-2.1000

-2.0710

-1.9714

-1.7478

решение:

0.0000

0.0656

0.1125

0.1406

0.1500

0.1406

0.1125

0.0656

>>

 

 

 



Дата добавления: 2016-10-26; просмотров: 3069;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.026 сек.