- •5.Численное дифференцирование
- •5.1.Графическое дифференцирование
- •5.2.Разностные формулы
- •5.2.1.Разностные формулы для обыкновенных производных
- •5.2.2.Разностные формулы для частных производных
- •5.3.Вычисление производных с помощью интерполяционных формул
- •5.3.1.Равномерное распределение узлов
- •5.3.2.Неравномерное распределение узлов
- •5.4.Практическая оценка погрешности. Метод Рунге-Ромберга
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 |
