Методы вычислительной математики. Анализ и исследование функций. Учебное пособие
.pdf
61
Таким образом, центральная разностная производная аппроксимирует производную f ′(x) со вторым порядком точности относительно h.
Вычисление второй производной. Наиболее простой и широко применяемой для приближенного вычисления второй производной является следующая формула:
′′ |
f (x − h) − 2 f (x) + f (x + h) |
. |
(4.4) |
|
|||
f (x) ≈ |
h2 |
||
|
|
|
Величину в правой части этого приближенного равенства часто называют второй разностной производной.
Подставляя в выражение для погрешности
|
|
|
|
|
|
′′ |
|
f (x − h) − 2 f (x) + f (x + h) |
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, |
|
|
|
|
|||||||||
|
r(x, h) = f (x) − |
|
|
|
|
|
|
|
h2 |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
соответствующие разложения по формуле Тейлора |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
′ |
|
|
′′ |
|
|
|
|
f |
(3) |
(x) |
|
|
|
|
|
f |
(4) |
(ξ± ) |
|
|
|||||
|
|
|
|
|
|
|
|
f (x) |
|
2 |
|
|
|
|
|
3 |
|
|
|
4 |
|
||||||||||
f (x ± h) = f (x) ± f (x)h |
+ |
|
|
h |
|
± |
|
|
|
|
|
h |
|
+ |
|
|
|
|
h |
|
, |
||||||||||
2 |
|
|
|
|
|
6 |
|
|
24 |
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
получим r(x, h) = − |
f (4) (ξ+ ) + f (4) (ξ− ) |
h2 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Следовательно, |
|
r(x, h) |
|
≤ |
M 4 |
h2 , M 4 = |
|
max |
|
|
|
f (4) (ξ ) |
|
. |
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
12 |
|
|
|
|
[x−h, x+h] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Таким образом, формула (4.4) имеет второй порядок точности. |
|
|
|||||||||||||||||||||||||||||
Использование разложения в |
ряд |
Тейлора |
не |
позволяет |
развить |
||||||||||||||||||||||||||
идею численного дифференцирования на табличные функции для целей построения производной требуемого порядка точности.
Для вычисления f ′(x) и f ′′(x) могут потребоваться формулы любо-
го порядка точности. В таких формулах с ростом порядка точности возрастает и число используемых значений функции. В качестве примера приведем формулы:
f ′(x) ≈ f (x − 2h) − 8 f (x − h) + 8 f (x + h) − f (x + 2h) ,
12h
62
f ′′(x) ≈ − f (x − 2h) + 16 f (x − h) − 30 f (x) + 16 f (x + h) − f (x + 2h) , 12h2
имеющие четвертый порядок точности.
Опишем другой подход. Пусть функция f (x) задана на отрезке
[a; b] таблицей значений в точках a = x0 < x1 < ... < xn = b . Можно решать два вида задач:
1)найти приближенное значение производной k − ого порядка функции f (x) в произвольной точке x [a; b];
2)найти таблично заданную функцию, являющуюся приближе-
нием к производной f (k ) на отрезке [x0* ; xm* ] [a; b].
Первая задача является основной. Вторая после определения аргу-
ментов xi* сводится к первой. Поэтому будем считать, что задача числен-
ного дифференцирования сводится к вычислению приближенного значения производной в точке x [a; b] и оценке ее погрешности. Для решения этой задачи функцию f (x) заменяют аналитическим приближением, кото-
рое имеет k − ую производную, то есть
f (x) ≈ p(x), x [a; b], f (k ) (x) ≈ p (k ) (x), x [a; b].
При дифференцировании приближенных формул может произойти существенная потеря точности, то есть погрешность формулы f (k ) (x) ≈ p (k ) (x), x [a; b] будет значительно больше погрешности исход-
ного приближения f (x) ≈ p(x), x [a; b]. Задача численного дифференци-
рования относится к числу задач, неустойчивых по исходным данным, т.е. таких, решение которых при малых погрешностях исходных данных приводит к большим погрешностям в результате.
63
4.1.2.Дифференцирование полинома Ньютона
Если функция задана при помощи таблицы с постоянным шагом h , а ее приближение производится первым интерполяционным полиномом
Ньютона, то для произвольной точки x |
[x |
0 |
; x |
|
] и t = |
x − x0 |
получим: |
|||||||||
|
|
|
||||||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
h |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
f ′(x) ≈ Pn′ (x) = |
1 |
|
2t − 1 |
|
|
|
|
|
3t 2 |
− 6t + 2 |
|
|
||||
|
|
y0 + |
|
|
2 y0 |
+ |
|
|
|
|
3 y0 + |
... . |
||||
|
2 |
|
|
6 |
|
|||||||||||
|
h |
|
|
|
|
|
|
|
|
|
|
|
||||
Если производная вычисляется в табличном аргументе, то |
x = x0 , |
|||||||||||||||
t = 0 и производная может быть найдена по формуле: |
|
|
||||||||||||||
|
1 |
|
|
|
′ |
|
y0 − |
||
|
||||
f (x0 ) ≈ |
|
|
||
|
h |
|
||
Погрешность найденного |
′ |
(x) |
Pn |
||
члена формулы: |
|
|
2 |
y0 |
|
3 |
y |
0 |
|
|
+ |
|
− ... . |
|||
|
|
|
|
|
||
2 |
|
3 |
|
|
||
|
|
|
||||
равна производной остаточного
f (x) ≈ P (x) = y |
|
+ t |
y |
|
+ |
t |
2 − t |
|
2 y |
|
+ |
|
|
t 3 − 3t 2 |
+ 2t |
3 y |
|
+ ... |
||||||
0 |
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
0 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
n |
|
|
|
|
|
2! |
|
|
|
|
|
|
|
|
3! |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
При малых h приближенное значение искомой погрешности будет |
||||||||||||||||||||||||
находиться по формуле: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
′ |
|
|
|
|
|
|
|
|
n+1 y0 |
|
|
|
′ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
≈ |
|
|
|
|
|
|
|
(x) , |
|
|
|
|
|||||
|
|
|
Rn (x) |
|
|
|
+ |
|
|
|
Qn+1 |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
h n+1 (n |
1)! |
|
|
|
|
|
|
|
|||||||
где Qn+1 (x) = (x − x0 )(x − x1 )...(x − xn ). |
|
|
|
|
|
|
|
|
|
|
||||||||||||||
Погрешность производной, найденной в точке |
x = x0 , |
можно вы- |
||||||||||||||||||||||
числить по формуле: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
′ |
(x) ≈ (− 1) |
n |
|
n+1 y0 |
|
, |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
Rn |
|
h(n + 1) |
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
′ |
|
|
|
|
|
n |
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
так как при этом Qn+1 (x0 ) = (− 1) |
n!h |
. |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
64
Приведем еще один подход получения производных функции на основе полинома Ньютона. Запишем полином в виде:
P(t) = a0 + a1 (t − t0 ) + a2 (t − t0 )(t − t1 ),
где a0 = f (t0 ), a1 = ( f (t1 ) − f (t0 )) /(t1 − t0 ) , и |
|
|
|
|||||||||
|
|
|
|
f (t2 ) − f (t1 ) |
− |
f (t1 ) − f (t0 ) |
|
|
|
|
||
a2 |
= |
|
|
t2 − t1 |
|
|
t1 − t0 |
. |
|
|||
|
|
(t2 |
− t0 ) |
|
||||||||
|
|
|
|
|
|
|
|
|||||
Производная P(t) равна |
|
|
|
|
|
|
|
|
||||
|
′ |
= a1 + a2 ((t |
− t0 ) + (t − t1 )) , |
|
|
(4.5) |
||||||
P (t) |
|
|
||||||||||
и если ее вычислить в точке t = t0 , то в результате можно получить |
|
|||||||||||
P′(t0 ) = a1 + a2 (t0 − t1 ) ≈ f ′(t0 ) . |
|
|
(4.6) |
|||||||||
Рассмотрим разные варианты. |
|
|
|
|
|
|
|
|||||
Если t0 = x, t1 = x + h и t2 = x + 2h , то |
|
|
|
|||||||||
a = |
|
f (x + h) − f (x) |
, |
|
|
|
||||||
|
|
|
|
|
||||||||
1 |
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a2 |
= |
f (x) − 2 f (x + h) + f (x + 2h) |
. |
|
||||||||
|
|
|||||||||||
|
|
|
|
|
2h2 |
|
|
|
||||
Затем подставив эти значения в (3.6), получим:
′ |
|
f (x + h) − f (x) |
|
− f (x) + 2 f (x + h) − f (x + 2h) |
|
||||||
P (x) = |
|
|
|
|
+ |
|
2h |
|
|
. |
|
|
h |
|
|
|
|||||||
|
|
|
|
|
|
|
|
||||
Упростим выражение и получим |
|
|
|
|
|
|
|||||
|
|
′ |
= |
− 3 f (x) + 4 f (x + h) − f (x + 2h) |
≈ |
′ |
(4.7) |
||||
|
|
P (x) |
|
|
|
2h |
f (x). |
||||
|
|
|
|
|
|
|
|
|
|
||
Это и есть формула правой разности второго порядка для |
′ |
|
|||||||||
f (x) . |
|
||||||||||
Если t0 |
= x, t1 = x + h и t2 |
= x − h , то |
|
|
|
||||||
|
|
a = |
f (x + h) − f (x) |
, |
|
|
|
||||
|
|
|
|
|
|
||||||
|
|
1 |
|
|
h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
a2 |
= |
f (x + h) − 2 f (x) + f (x − h) |
. |
|
|||
|
|
2h2 |
|
|
|
|
|
|
|
|
|
|
65 |
|
|
|
|
|
|
Затем подставим эти значения в (4.6) и получим: |
|
|
|
|
|||||||||||
′ |
f (x + h) − f (x) |
|
− f (x + h) + 2 f (x) − f (x − h) |
|
|||||||||||
P (x) = |
|
|
|
|
|
|
|
+ |
|
|
2h |
|
|
|
. |
|
|
h |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||
Упростив это выражение, получим: |
|
|
|
|
|
|
|
||||||||
|
′ |
|
|
|
|
f (x + h) − f (x − h) |
′ |
|
|
|
|
||||
|
P (x) = |
|
|
|
|
|
≈ f (x), |
|
|||||||
|
|
|
|
2h |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
′ |
|
формулу центрированной разности второго порядка для f (x) . |
|
||||||||||||||
Если t0 = x, t1 = x − h и t2 = x − 2h , то |
|
|
|
|
|
||||||||||
|
a = |
|
f (x) − f (x − h) |
, |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
||||||||
|
1 |
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
a2 |
= |
f (x) − 2 f (x − h) + f (x − 2h) |
. |
|
|
|||||||||
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
2h2 |
|
|
|
|
|
|
Подставим эти значения в (4.7) и упростим, тогда получим |
|||||||||||||||
′ |
|
3 f (x) − 4 f (x − h) + f (x − 2h) |
|
|
′ |
|
|||||||||
P (x) = |
|
|
|
|
|
|
|
|
|
|
≈ |
f (x), |
|
||
|
|
|
|
|
|
|
2h |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
формулу левой разности второго порядка для |
′ |
|
|
|
|
||||||||||
f (x) . |
|
|
|||||||||||||
4.1.3.Дифференцирование полинома Лагранжа
Для вычисления значения функции в абсциссе, которая лежит с одной стороны от точки x0 , нельзя использовать формулу центрированной разности. Формулы для равноотстоящих абсцисс, которые лежат справа (или слева) от точки x0 , называют формулами для правых (или левых) раз-
ностей. Эти формулы можно получить дифференцированием интерполяционного полинома Лагранжа. Ниже приведены некоторые общие формулы для правых и левых разностей.
f |
′ |
− 3 f0 |
+ 4 f1 |
− f2 |
(правая разность), |
||
(x0 ) ≈ |
|
|
2h |
|
|
||
|
|
|
|
|
|
|
|
|
′ |
3 f0 |
+ 4 f−1 |
− f−2 |
|
||
f |
(x0 ) ≈ |
|
|
|
|
|
(левая разность), |
|
|
2h |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
f |
′′ |
2 f0 |
− 5 f1 + 4 f2 |
− f3 |
|
(правая разность), |
|
|
|
|
|
|
|||
(x0 ) ≈ |
|
h2 |
|
|
|
||
|
|
|
|
|
|
|
|
f |
′′ |
2 f0 |
− 5 f−1 + 4 f−2 |
− f−3 |
(левая разность). |
||
|
|
|
|||||
(x0 ) ≈ |
|
h2 |
|
|
|
||
|
|
|
|
|
|
|
|
В качестве примера опишем способ построения следующей форму-
лы:
f ′′(x0 ) ≈ 2 f0 − 5 f1 + 4 f2 − f3 . h2
Начнем с интерполяционного полинома Лагранжа для f (t) , постро-
енного по точкам x0 , x1 , x2 , x3 :
f (t) ≈ f |
0 |
|
|
(t − x1)(t − x2 )(t − x3 ) |
|
|
|
+ |
f1 |
(t − x0 )(t − x2 )(t − x3 ) |
+ |
|||||||||||||||||||||||||
(x |
0 |
− x )(x |
0 |
− x |
2 |
)(x |
0 |
− x |
3 |
) |
|
(x − x |
0 |
)(x − x |
2 |
)(x − x ) |
||||||||||||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
1 |
|
1 |
|
1 |
3 |
|
||||||||||||
+ |
f2 |
|
(t − x0 )(t − x1)(t − x3 ) |
|
|
+ f3 |
|
(t − x0 )(t − x1)(t − x2 ) |
|
|
. |
|
||||||||||||||||||||||||
(x |
2 |
− x |
0 |
)(x |
2 |
− x )(x |
2 |
− x ) |
(x |
3 |
− x |
0 |
)(x |
3 |
− x )(x − x |
2 |
) |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
1 |
|
|
3 |
|
|
|
|
|
|
|
|
|
1 |
3 |
|
|
|
|
||||||||||
Продифференцируем дважды произведения в числителях и получим:
|
′′ |
≈ f0 |
|
2((t − x1 ) + (t − x2 ) + (t − x3 )) |
|
+ f1 |
|
2((t − x0 ) + (t − x2 ) + (t − x3 )) |
|
+ |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
f (t) |
|
(x0 − x1 )(x0 − x2 )(x0 − x3 ) |
|
|
(x1 − x0 )(x1 − x2 )(x1 − x3 ) |
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
+ f2 |
2((t − x0 ) + (t − x1 ) + (t − x3 )) |
+ f |
|
2((t − x0 ) + (t − x1 ) + (t − x2 )) |
|
|
|
|
|||||||||||||
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
. |
|
|
|
|
||||
|
|
(x2 |
− x0 )(x2 − x1 )(x2 − x3 ) |
|
|
(x3 |
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
− x0 )(x3 − x1 )(x3 − x2 ) |
|
|
|
|
|||||||||
Затем подстановка t = x0 и тот факт, что xi |
− x j |
= (i − j)h , дадут |
|
|
|
|
||||||||||||||||
f |
′′ |
|
2((x0 − x1) + (x0 − x2 ) + (x0 − x3 )) |
+ |
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||
(x0 ) ≈ f0 |
|
(x0 − x1)(x0 − x2 )(x0 − x3 ) |
|
|
|
|
|
|
|
|
||||||||||||
+ |
f1 |
2((x0 − x0 ) + (x0 − x2 ) + (x0 − x3 )) |
+ |
f2 |
2((x0 |
− x0 ) + (x0 − x1) + (x0 |
− x3 )) |
+ |
||||||||||||||
|
|
(x1 |
− x0 )(x1 − x2 )(x1 − x3 ) |
|
|
|
|
(x2 − x0 )(x2 − x1)(x2 − x3 ) |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
+ |
f3 |
2((x0 − x0 ) + (x0 − x1) + (x0 − x2 )) |
= |
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
(x3 |
|
− x0 )(x3 − x1)(x3 − x2 ) |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
|
|
|
|
|
|
|
|
= f |
|
2((−h) + (−2h) + (−3h)) |
+ f |
|
2((0) + (−2h) + (−3h)) |
+ |
|
|
|
|||||||||||||||||||||
|
0 |
|
(−h)(−2h)(−3h) |
|
|
|
|
|
1 |
|
|
|
|
|
(h)(−h)(−2h) |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
+ f2 |
2((0) + (−h) + (−3h)) |
+ f3 |
2((0) + (−h) + (−2h)) |
= |
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
(2h)(h)(−h) |
|
|
|
|
|
|
|
|
|
|
|
(3h)(2h)(h) |
|
|
|
|
|
|
|||||||||
= f |
|
− 12h |
+ f − 10h |
+ f |
|
|
|
− 8h |
|
+ f |
− 6h = |
2 f0 − 5 f1 + 4 f2 − f3 |
. |
|
|
|||||||||||||||
|
|
|
2 − 2h3 |
|
|
|
|
|||||||||||||||||||||||
|
0 − 6h3 |
1 2h3 |
|
|
|
|
|
3 6h3 |
|
|
h2 |
|
|
|||||||||||||||||
|
|
|
Пример. Дана сеточная функция (табл. 3), являющаяся сеточным |
|||||||||||||||||||||||||||
представлением функции y(x) = |
1 |
. |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x2 |
|
x3 |
|
|
x4 |
|
x5 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
i |
|
|
|
|
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
|
|
4 |
|
|
5 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
xi |
|
|
|
1 |
|
1,2 |
|
|
|
|
|
|
|
|
|
1,4 |
|
1,6 |
|
1,8 |
|
|
2,0 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
fi |
|
1,000000 |
0,83333333 |
|
|
|
0,7142857 |
|
0,6250000 |
0,5555555 |
0,500000 |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
Заданы также порядок t = 2 |
относительно шага h, который необхо- |
||||||||||||||||||||||||||
димо обеспечить при решении задачи, и точка x j |
= 1,4 . |
|
|
|
||||||||||||||||||||||||||
|
|
|
Требуется вычислить значение первой производной f |
′ |
||||||||||||||||||||||||||
|
|
|
(1,4) и вто- |
|||||||||||||||||||||||||||
рой производной |
′′ |
|
|
|
|
с помощью различных узлов и соответствующих |
||||||||||||||||||||||||
f (1,4) |
||||||||||||||||||||||||||||||
формул. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
Так |
как |
|
шаг |
|
задания |
сеточной |
функции |
постоянный |
|||||||||||||||||||
h = xi+1 − xi |
= 0,2 , точка x j = 1,4 находится внутри сетки Ω n , то для вычис- |
|||||||||||||||||||||||||||||
ления производной в этой точке выбирается формула центральной разностной производной, имеющая второй порядок аппроксимации относитель-
но |
шага h. При |
этом центральная точка шаблона совпадает с точкой |
x j |
= 1,4 . |
|
|
Выберем следующие узлы: |
|
|
xi |
= 1,4 (i = 2); xi−1 = 1,2 (i − 1 = 1); xi+1 = 1,6 (i + 1 = 3) . |
68
Подсчитаем искомое значение производной по формуле:
ˆ |
|
fi+1 |
− fi−1 |
|
0,6250000 - 0,8333333 |
|
fi¢,c |
= |
|
|
= |
|
. |
|
2h |
2 × 0,2 |
||||
|
|
|
|
|
||
Прежде чем выполнить вычисление, необходимо определить количество знаков, которое сохраняется при этом. Ошибка метода определяется
2
по формуле h M 3,i . Для ее вычисления необходимо сначала определить
6
M 3,i = |
max |
|
|
′′′ |
|
. |
Поэтому воспользуемся интерполяционным много- |
|
|
|
|||||
|
|
f (x) |
|
||||
|
[xi −1 , xi +1 |
] |
|
|
|
|
|
|
|
|
|
|
|
||
членом Ньютона с конечными разностями: |
|||||||
f |
¢¢¢» N ¢¢¢(x ) = |
D3 f |
, |
|
|
||||
i |
3 |
i |
h3 |
|
|
|
|
|
|
где 3 f – конечная разность третьего порядка. Эта разность может быть вычислена по значениям функции fi в четырех точках. Возьмем точки x2 , x3 , x4 , x5 . При этом будем считать, что M 3,i ≈ f ′′′(xi ) .
Вычисление дает f ¢¢¢(xi ) » - 0,005935 = -0,74405 . Тогда остаточное
0,008
слагаемое по модулю будет равно 0,04 × 0,74405 » 0,0049 < 0,01.
6
На основе полученного приближенного значения остаточного слагаемого можно заключить, что в вычислениях ожидается одна верная цифра после запятой. Обычно в расчетах оставляют еще одну или две дополнительные цифры (в нашем примере это составляет всего 3 цифры). Остав-
|
|
|
|
|
|
|
|
ˆ ′ |
|
x=1,4 |
= −0,521. |
|
|
|
|
|
|||||||||
ляя три цифры после запятой, получаем результат: f (x) |
|
|||||||||||
Фактическая абсолютная погрешность составляет: |
|
|
||||||||||
|
1 |
|
= |
|
- 0,521 + 0,5102 |
|
= 0,0108 |
, |
|
|||
|
- 0,521 + |
|
|
|
|
|||||||
|
|
|
|
|
||||||||
|
|
|||||||||||
|
1,42 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
69
т.е. относительная погрешность равна 0,0108 ×100% = 2,1% . Если эта по-
0,5102
грешность не устраивает вычислителя, необходимо повышать порядок точности относительно h, например, до t = 3.
4.1.4.Выбор оптимального шага численного дифференцирования
Общая погрешность вычисления производной может рассматриваться как сумма погрешности метода и погрешности округления. С уменьшением шага h погрешность метода убывает, а погрешность округления возрастает. Можно найти оптимальный шаг как компромисс этих двух процессов. Так для центрально-разностной производной первого порядка погрешность метода не превосходит следующей величины:
|
h2 |
M 3 |
= |
h2 |
max |
|
f ¢¢¢(x) |
|
. |
|
|
|
|||||||
|
|
|
|||||||
6 |
|
|
6 ( x−1 , x1 ) |
|
|
|
|
||
Погрешность округления для |
такой формулы оценивается величиной |
||||||||
2ε = ε , где ε – абсолютная погрешность исходных значений функции.
2h h
Суммарная погрешность ε Σ следующая:
ε Σ (h) = h2 M 3 + ε . 6 h
Величина ε Σ достигает наименьшего значения при условии:
′ |
h2 |
|
ε ′ |
|
h |
|
ε |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
M 3 + |
= M |
3 − |
|
2 = 0 . |
||||||
ε Σ (h) = |
6 |
|
h |
||||||||
|
|
|
h |
3 |
|
|
|
|
|||
Это условие дает значение h, которое называют оптимальным шагом:
h = 3 3ε .
M 3
Для каждой формулы численного дифференцирования свой оптимальный шаг.
70
5. Основы программирования на VBA
5.1. Язык VBA
Язык VBA является версией популярного языка Visual Basic, ориентированной на приложения. Его основные отличия:
1.VB предназначен для разработки приложений, VBA – для автоматизации существующих приложений;
2.VB имеет собственную среду разработки, VBA использует среду приложения;
3.для выполнения приложения, созданного в VB, не обязательно иметь
доступ к самому VB, а выполнение VBA-приложений требует доступа к родительским приложениям, в которых они были созданы.
Код VBA содержится в модуле. Модуль – совокупность объявлений (описательная часть) и процедур, хранящихся как единое целое. Существуют два типа модулей: модули классов и стандартные модули. В непосредственной работе по решению задач численных методов используются стандартные модули. Процедурами стандартных модулей являются проце- дуры-функции и процедуры-подпрограммы.
VBA позволяет создавать собственные объекты. Модули классов содержат описание таких объектов.
Процедура – любая совокупность кода VBA, рассматриваемая как единое целое, идентифицируется уникальным именем. Процедураподпрограмма выполняет один или несколько операторов и не возвращает значение, например, код макроса. Процедура-функция возвращает значение. Чтобы попасть в редактор VBA, нужно нажать комбинацию клавиш
Alt+F11.
В левом окне редактора VBA находится список модулей и форм, входящих в создаваемый проект. Модуль – лист, в котором набирается код
