Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 Численное дифференцирование.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
750 Кб
Скачать
☆

5.3.2.Неравномерное распределение узлов

Пусть известны значения yi функции в узлах xi:

x0 < x1 < x2 < … < xn – 1 < xn.

В этом случае для вычисления производных используют интерполяционный многочлен. Предположим, что точка x расположена ближе к начальному узлу x0, тогда мы можем применить первый интерполяционный многочлен Ньютона

Здесь использованы обозначения для разделенных разностей:

Обозначим через ξi разность (x – xi) и запишем многочлен Ньютона в виде

(5.37)

Теперь можем вывести формулы для производных:

(5.38)

Оставляя в (5.38) несколько слагаемых, получим формулы для приближенного вычисления производных. При этом порядок погрешности по отношению к шагу разбиения h равен числу оставленных членов, или разности между числом узлов интерполяции и порядком производной [9].

Приведем некоторые простые формулы (h = max hi):

1. Первая производная по двум точкам:

(5.39)

Первая производная по трем точкам:

(5.40)

2. Вторая производная по трем точкам:

(5.41)

Вторая производная по четырем точкам:

(5.42)

3. Третья производная по четырем точкам:

(5.43)

Пример 5.5. Вычислить производную второго порядка функции y = sin πx в точке x = 0,4, пользуясь таблицей значений (см. табл.5.8).

Решение в Excel. Воспользуемся формулами (5.41) и (5.42).

Для формулы (5.41) необходимы только три точки. Создадим в программе Excel макрос — функцию для вычисления производной по формуле (5.41).

Для этого выберем меню «Сервис — Макрос — Редактор Visual Basic» и в открывшемся окне выполним команду «Insert — Module», затем введем:

Function pr_541(x0, x1, x2, y0, y1, y2)

pr_541 = 2 * ((y0 - y1) / (x0 - x1) - (y1 - y2) / (x1 - x2)) / (x0 - x2)

End Function

Перейдем в Excel и в ячейке D4 запишем формулу =pr_541(B2;B3;B4;C2;C3;C4), и скопируем D4 в D5, D6.

Таблица 5.8

A

B

C

D

1

i

xi

yi

2

0

0

0

3

1

0,1

0,309017

4

2

0,3

0,809017

-3,93447

5

3

0,5

1

-7,72542

6

4

0,6

0,951057

-9,629

Наиболее точно вторую производную приближает значение в D6. Это объясняется тем, что в формуле, записанной в D6 «=pr_541(B4;B5;B6;C4;C5;C6)» точка x = 0,4 близка к начальному узлу x0 =0,3.

5.4.Практическая оценка погрешности. Метод Рунге-Ромберга

Рассмотрим метод Рунге для повышения порядка точности формул для вычисления производных на примере формулы (5.11):

. (5.44)

Предполагая, что функция четырежды дифференцируема, погрешность разностной формулы для второй производной можно представить в виде

. (5.45)

Вычислим по формуле (5.44) вторую производную в той же точке xi, но используя сетку с шагом 2h:

. (5.46)

Погрешность формулы (5.46) имеет вид:

. (5.47)

Вычитая (5.45) из (5.47), получим

. (5.41)

Отсюда для погрешности получим первую формулу Рунге:

(5.42)

Теперь вторую производную в точке xi можно вычислить по уточненной формуле (второй формуле Рунге):

. (5.43)

Пример 5.6. Вычислить производную второго порядка функции y = sin πx в точке x = 0,4 по второй формуле Рунге, используя разностные формулы с шагом 0,1 и 0,2.

Решение. Воспользуемся приближенными значениями второй производной, найденными с помощью разностных формул в примере 5.2:

Очевидно, что полученное значение более точно приближает вторую производную, чем разностная формула с шагом 0,1 или 0,2.

Пример 5.7. Вычислить производную функции y = sin πx в точке x = 0,574 с точностью 0,01.

Решение. Создадим в программе Excel макрос — функцию для вычисления производной функции f(x) в произвольной точке x с заданной точностью ε при помощи формулы (5.34):

(5.44)

Для оценки погрешности будем использовать правило Рунге. Шаг h будет подбираться автоматически так, чтобы выполнялось условие

. (5.45)

Значение производной будем вычислять по уточненной формуле

(5.46)

Выберем меню «Сервис — Макрос — Редактор Visual Basic», в открывшемся окне выполним команду «Insert — Module», и введем описания функций:

Function f(ByVal x)

f = Sin(3.1415926 * x)

End Function

Function f_deriv(ByVal x, ByVal eps)

h = 0.1

errd = 1

h2 = h * 2

d = (f(x + h) - f(x - h)) / h2

While Abs(errd) > eps

h2 = h

h = h / 2

d2 = d

d = (f(x + h) - f(x - h)) / h2

errd = (d - d2) / 3

Wend

f_deriv = d + errd

End Function

В таблице 5.10 приведены результаты расчетов. Поясним заполнение таблицы. В ячейках B2, C2, D2 и E2 соответственно введем формулы, как показано в табл. 5.9.

Таблица 5.9

A

B

C

D

E

1

x

sin(π*x)

π*cos(π*x)

f_deriv(x; 0,01)

Погрешность

2

0

=f(A2)

=ПИ()*COS(ПИ()*A2)

=f_deriv(A2;0,01)

=ABS(C2-D2)

Выделим диапазон A2:E2 и маркером заполнения протягиваем эти ячейки до строки 12.

Заполняем столбец A2:A12, как в табл. 5.10.

Таблица 5.10

A

B

C

D

E

1

x

sin(π*x)

π*cos(π*x)

f_deriv(x; 0,01)

Погрешность

2

0,00

0

3,1415926

3,141588618

3,98171E-06

3

0,10

0,309016989

2,987832119

2,987828332

3,78683E-06

4

0,20

0,587785244

2,541601823

2,541598601

3,22127E-06

5

0,30

0,809016985

1,84658184

1,846544476

3,73638E-05

6

0,40

0,95105651

0,970805567

0,970785924

1,96433E-05

7

0,50

1

8,41786E-08

8,41769E-08

1,70305E-12

8

0,60

0,951056526

-0,970805407

-0,970785763

1,96433E-05

9

0,70

0,809017016

-1,846581704

-1,84654434

3,73638E-05

10

0,80

0,587785287

-2,541601724

-2,541598502

3,22127E-06

11

0,90

0,30901704

-2,987832067

-2,98782828

3,78683E-06

12

1,00

5,35898E-08

-3,1415926

-3,141588618

3,98171E-06

Замечание. Погрешность в столбце E получилась намного меньше, чем 0,01 из-за того, что вместо формулы (5.44) использовали уточненную формулу (5.46).

Задачи для самостоятельного решения

1. Записать формулы для следующих разностных производных

2. Оценить погрешность разностных формул для смешанных производных (5.20) — (5.22).

3. Вычислить приближенные значения производных первого порядка для функции, заданной таблично (табл.5.9):

Таблица 5.9

xi

Варианты значений yi

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

-0,4

-6,0

-0,8

-0,5

1,9

-1,8

-6,7

1,0

-3,0

0,0

1,0

-3,0

0,0

1,0

-3,0

0,1

0,2

-5,1

-0,6

-0,3

0,7

0,6

-5,2

1,0

-2,7

0,1

0,5

-1,5

0,5

1,0

-2,7

0,2

0,7

-4,2

-0,4

-0,2

-1,8

-1,5

-3,1

0,9

-2,4

0,2

-0,4

0,0

0,8

0,9

-2,4

0,3

1,0

-3,3

-0,1

0,0

-1,0

0,3

-0,8

0,8

-2,1

0,3

-1,0

1,5

1,0

0,8

-2,1

0,4

0,9

-2,4

0,2

0,1

1,7

-1,1

1,6

0,7

-1,8

0,4

-0,7

3,0

0,9

0,7

-1,8

0,5

0,5

-1,5

0,5

0,2

1,2

-0,1

3,8

0,5

-1,5

0,5

0,3

4,5

0,6

0,5

-1,5

0,6

0,0

-0,6

0,7

0,4

-1,5

-0,7

5,7

0,4

-1,2

0,6

1,0

6,0

0,1

0,4

-1,2

0,7

-0,6

0,3

0,9

0,5

-1,4

-0,5

7,1

0,2

-0,9

0,6

0,8

7,5

-0,4

0,2

-0,9

0,8

-0,9

1,2

1,0

0,6

1,3

-0,3

7,9

0,0

-0,6

0,7

-0,1

9,0

-0,8

0,0

-0,6

0,9

-1,0

2,1

1,0

0,8

1,6

-0,9

7,9

-0,2

-0,3

0,8

-0,9

10,5

-1,0

-0,2

-0,3

1,0

-0,7

3,0

0,9

0,8

-1,1

0,1

7,3

-0,4

0,0

0,8

-0,8

12,0

-1,0

-0,4

0,0

4. Для функции u(x, y), заданной в прямоугольной области ,

а) вычислить таблицу значений на сетке с шагом hx по переменной x, hy — по переменной y;

б) найти с помощью разностных формул указанные частные производные. Результаты сравнить с точными значениями производной.

Табл.5.10

№

Функция

[a, b]

hx

[c, d]

hy

Вычислить

1

[0, 1]

0,1

[0, 2]

0,2

2

[0, 1]

0,2

[0, 1]

0,1

3

[0, 1]

0,1

[0, 2]

0,2

4

[0, 1]

0,1

[0, 2]

0,2

5

[0, 1]

0,1

[0, 2]

0,2

6

[0, 1]

0,1

[0,1]

0,2

7

exy

[0, 1]

0,2

[0, 2]

0,1

8

ex+y

[0, 1]

0,1

[0, 1]

0,2

9

ln(1 + xy)

[0, 1]

0,2

[0, 2]

0,1

10

[0, 1]

0,1

[0, 1]

0,2

11

[0, 1]

0,2

[0, 2]

0,1

12

[0, 1]

0,1

[0, 1]

0,2

13

[0, 1]

0,2

[0, 2]

0,1

14

[0, 1]

0,1

[0, 1]

0,2

15

[0, 1]

0,2

[0, 2]

0,1

16

[0, 1]

0,1

[0, 1]

0,2

17

[0, 1]

0,2

[0, 2]

0,1

18

[0, 1]

0,1

[0, 1]

0,2

19

[0, 1]

0,2

[0, 2]

0,1

20

[0, 1]

0,1

[0, 1]

0,2

5. Вычислить первую и вторую производные в узлах интерполяции для таблично заданной функции.

Табл.5.11

xi

Варианты значений yi

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

-0,4

-6,0

-0,8

-0,5

1,9

-1,8

-6,7

1,0

-3,0

0,0

1,0

-3,0

0,0

1,0

-3,0

0,1

0,2

-5,1

-0,6

-0,3

0,7

0,6

-5,2

1,0

-2,7

0,1

0,5

-1,5

0,5

1,0

-2,7

0,3

0,7

-4,2

-0,4

-0,2

-1,8

-1,5

-3,1

0,9

-2,4

0,2

-0,4

0,0

0,8

0,9

-2,4

0,5

1,0

-3,3

-0,1

0,0

-1,0

0,3

-0,8

0,8

-2,1

0,3

-1,0

1,5

1,0

0,8

-2,1

0,8

0,9

-2,4

0,2

0,1

1,7

-1,1

1,6

0,7

-1,8

0,4

-0,7

3,0

0,9

0,7

-1,8

1,0

0,5

-1,5

0,5

0,2

1,2

-0,1

3,8

0,5

-1,5

0,5

0,3

4,5

0,6

0,5

-1,5