Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 800533

.pdf
Скачиваний:
6
Добавлен:
01.05.2022
Размер:
4.42 Mб
Скачать

3.ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ

Кчисленному дифференцированию чаще всего прибегают, когда приходится вычислять производные от функций, заданных таблично, или когда непосредственное дифференцирование функции затруднительно. Кроме того, формулы численного дифференцирования широко используются при разработке вычислительных методов решения многих задач (решение дифференциальных уравнений, поиск решений нелинейных уравнений, поиск точек экстремума функций и др.).

Пусть функция f(x) задана таблицей своих значений в точках x0, x1, …, xN. Выбрав из таблицы определенное множе-

ство n +1 узлов (n N), построим по ним интерполяционный многочлен Pn(x) для функции f(x). Тогда в определенных границах изменения x производные от многочлена Pn(x) могут быть использованы для приближенного вычисления соответствующих производных функции f(x)

f (m)(x) Pn(m)(x), m n.

Пусть заданы равноотстоящие узлы xk и значения функции f(xk) = yk. Конечными разностями первого порядка называются величины

f(xk) = yk = yk+1 yk , k = 0, 1, 2, …

Конечные разности второго порядка определяются равенствами

2yk = ( yk) = yk+1 yk , k = 0, 1, 2, …

Конечные разности n-го порядка определяются через разности (n–1)-го порядка по формуле

nyk = ( yk) = n–1yk+1 n–1yk , k = 0, 1, 2, …

Конечные разности часто вычисляются по табл. 3.1. Имеет место равенство

f (xn) yn

y0

 

n

y0

 

n(n 1)

2 y0

 

n(n 1)(n 2)

3 y0 ... n y0.

 

 

 

 

 

1!

2!

 

3!

 

60

 

 

 

 

 

 

 

 

 

Таблица 3.1

k

y

 

yk

2

yk

3

yk

4

yk

 

k

 

 

 

 

 

0

y0

y0

 

 

 

 

 

 

 

1

y1

2y0

 

 

 

 

 

y1

3y0

 

 

 

2

y2

2y1

4y0

 

y2

3y1

 

3

y3

2y2

4y1

 

y3

3y2

 

4

y4

2y3

 

 

 

y4

 

 

 

 

 

5

y5

 

 

 

 

 

 

 

Разностными отношениями первого порядка называются величины

f (x

,x )

f (x1) f (x0)

,

f (x ,x

2

)

f (x2) f (x1)

, … ,

 

 

0

1

x1

x0

 

1

 

x2

x1

 

 

 

 

 

 

 

 

узлы xk произвольные. По ним составляются разностные отношения второго порядка

f (x0,x1,x2 ) f (x1,x2) f (x0,x1) , x2 x0

f (x1,x2,x3) f (x2,x3) f (x1,x0) , … x3 x1

Разностные отношения порядка n (n = 1, 2, …) определяются при помощи разностных отношений предыдущего порядка n–1 по формуле

f (x

,x ,...,x

n

)

f (x1,x2,...,xn ) f (x0,x1,...,xn 1)

.

 

 

 

 

 

 

 

0

1

 

 

 

 

xn

x0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При любом n верно равенство

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

f (xi )

 

 

 

 

 

 

f (x0, x1,..., xn )

 

 

 

 

 

 

 

 

 

,

(x x ) (x x

 

)(x

i

x

) (x

x

)

 

i 0

 

i

0

i i 1

 

i 1

i

n

 

 

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

61

Для равноотстоящих узлов xk = x0 + kh (k = 0, 1, 2, …) имеет место соотношение между разностными отношениями и конечными разностями

k

f (x0,x1,...,xk ) ky0 , k = 0, 1, 2, … h k!

Конечная разность порядка n от многочлена степени n равна постоянной величине, и, следовательно, все разности более высокого порядка равны нулю. Аналогичное свойство имеет место для разностных отношений. Таблица разностных отношений имеет вид табл. 3.2.

Таблица 3.2

k

x

f(xk)

2

yk

3

yk

4

yk

5

yk

 

k

 

 

 

 

 

 

0

x0

f0

f(x0, x1)

 

 

 

 

 

 

 

1

x1

f1

f(x0, x1, x2)

 

 

 

 

 

f(x1, x2)

f(x0,x1,x2,x3)

 

 

 

2

x2

f2

f(x1, x2, x3)

f(x0,x1,x2,x3,x4)

 

f(x2, x3)

f(x1,x2,x3,x4)

 

3

x3

f3

f(x2, x3, x4)

f(x1,x2,x3,x4,x5)

 

f(x3, x4)

f(x2,x3,x4,x5)

 

4

x4

f4

f(x3, x4, x5)

 

f(x4, x5)

 

5

x5

f5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С помощью разностных отношений строится формула интерполяционного многочлена – интерполяционный многочлен Ньютона

Pn (x) f (x0) (x x0) f (x0,x1) (x x0)(x x1) f (x0,x1,x2 ) ...

... (x x0)(x x1)...(x xn 1) f (x0,x1,...,xn ) ,

(3.1)

где Pn(xk) = f(xk) (k = 0, 1, 2, …, n). Остаточный член rn(x) = = f(x) – Pn(x) в этом случае можно выразить через разделенную разность:

rn(x) f (x,x0,x1,...,xn )(x x0)(x x1)...(x xn).

(3.2)

62

Формулой Ньютона удобно пользоваться при интерполировании одной функции с меняющейся системой узлов: при добавлении нового узла xn+1 нужно вычислить только одно

слагаемое (x x0)…(x xn) f(x0, x1, …, xn+1) и добавить его к предыдущей сумме.

В случае равноотстоящих узлов имеется много различных формул, построение которых зависит от расположения точки интерполирования x по отношению к узлам интерполирования.

Пусть функция f(x) задана таблицей значений f(xk)=yk в равноотстоящих точках xk = x0 + kh (k = 0, 1, 2, …) и точка интерполирования x находится вблизи от начальной точки x0. Введем новую переменную t, положив x = x0 + th, t = (x x0)/h. Используя (3.2) и соотношения (3.1) между разностными отношениями и конечными разностями, получим интерполяционную формулу Ньютона для интерполирования в начале таблицы

f (x

th) y

 

 

 

t

 

y

 

 

t(t 1)

2 y

 

...

 

 

 

 

 

 

 

 

0

 

0

1!

 

0

2!

 

 

0

 

 

 

 

...

t(t 1)...(t k 1)

k y

r (x).

(3.3)

 

 

 

 

 

 

 

 

 

 

 

 

k!

 

0

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если точка интерполирования находится вблизи конца таблицы узлов, то узлы интерполирования естественно брать в порядке xn, xn h, xn – 2h, … Введя переменную t и положив x=xn + th, получим формулу Ньютона для интерполирования в конце таблицы

 

t

 

 

t(t 1)

2

 

 

 

 

f (xn th) yn

 

 

yn 1

 

 

yn 2

...

 

1!

 

2!

 

...

t(t 1)...(t k 1)

k y

n k

r (x).

(3.4)

 

 

 

 

 

 

k!

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

Если точка интерполирования лежит вблизи некоторого внутреннего узла xn, то узлы интерполирования целесообразно брать в порядке удаленности от xn: xn h, xn +h, …, xn kh, xn +kh, а сама формула (Стирлинга) имеет вид

63

 

 

 

 

 

 

 

t y

n 1

y

n

 

t2

2

 

 

 

f (xn th) yn

 

 

 

 

 

 

 

 

 

 

 

 

yn 1

...

 

1!

 

2

 

 

2!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t(t2

12 ) 3 yn 2 3yn 1

 

 

t2

(t2 12 ) 4

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yn 2

...

 

3!

 

 

 

 

 

 

 

2

 

 

 

 

 

4!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Дифференцируя эти многочлены по переменной x с учетом правила дифференцирования сложной функции, можно получить формулы для вычисления производных. Например, применяя это действие к формуле (3.3), будем иметь

y

1

 

 

 

 

2t 1

2 y

 

 

3t

2

6t 2

3y

 

 

 

y

0

 

0

 

 

0

 

 

 

 

 

 

 

h

 

 

2!

 

 

 

 

3!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4t3 18t2 22t 6

4 y

 

 

5t4 40t3 105t2 100t 24

5 y

...

 

,

4!

0

5!

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

y

1

2

 

3

 

1

 

2

 

3

 

 

 

11 4

 

 

 

 

y0

(t 1) y0

 

 

 

t

 

 

 

t

 

 

 

y0

h

2

 

 

2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

12

 

 

 

 

 

 

 

1t3

t2

 

7t

5

5y0

... .

 

 

 

 

 

 

6

 

 

 

 

 

 

4

 

 

6

 

 

 

 

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

Запишем интерполяционный многочлен Лагранжа и его остаточный член для случая трех узлов интерполяции и найдем их производные

L(x)

1

(x x )(x x

 

)y

 

 

2(x x

)(x x )y (x x

 

)(x x )y

 

,

2h2

 

 

 

 

 

 

 

1

 

2

 

 

0

0

 

 

 

1

1

 

0

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R (x)

 

y

(x x )(x x )(x x ),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

3!

 

 

0

 

 

1

 

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L (x)

(2x x

x

 

)y

 

2(2x x

 

x

 

)y

(2x x

 

x )y

 

,

2h2

 

 

 

 

 

 

 

 

1

 

 

2

 

 

0

 

 

0

 

2

 

1

 

 

 

0

1

2

 

 

 

64

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RL

(x)

y

(x x1)(x x2) (x x0)(x x2) (x x0)(x x1) .

 

 

 

 

3!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y – значение производной третьего порядка в не-

которой внутренней точке x* [x0, x2].

 

 

 

 

при

x = x0:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Запишем выражение для производной y (x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y0 L

(x) RL(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

(2x x

x

 

)y

 

2(2x x

 

x )y (2x x

 

x )y

 

 

2h2

 

 

 

 

 

 

 

 

1

 

 

2

 

 

 

0

 

 

 

0

 

 

2

 

1

 

 

0

1

 

 

2

 

 

 

 

 

 

 

 

y*

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

h2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3! (x0

x1)(x0 x2) 2h( 3y0

4y1 y2)

3

 

 

 

 

 

y .

 

Аналогичные соотношения получаются при x=x1

и x=x2

для значений y1

и y2

соответственно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

h2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2h(y2 y0)

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y1

 

 

y ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

(y0 4y1 3y2)

 

h2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y2 2h

 

y .

 

 

 

 

 

 

 

Для каждой из этих формул значения y , вообще говоря,

различны.

Используя интерполяционный многочлен Лагранжа и его остаточный член для случая четырех узлов (n=3), получим соответствующие аппроксимации производных:

y0

 

1

 

 

 

 

 

 

 

 

 

h3

IV

 

 

 

 

 

 

 

( 11y0 18y1 9y2 2y3)

 

 

 

y

,

 

6h

4

 

y1

 

1

 

 

 

 

 

h3

 

IV

 

 

 

 

 

 

 

( 2y0 3y1 6y2 y3)

 

 

y

,

 

6h

 

 

12

 

y2

 

1

 

 

 

 

h3

IV

 

 

 

 

 

 

 

(y0 6y1 3y2 2y3)

 

y ,

 

 

 

6h

 

12

 

 

y3

 

1

 

 

 

 

 

 

 

 

h3

IV

 

 

 

 

 

( 2y0 9y1 18y2 11y3)

 

 

y .

 

6h

 

 

 

4

65

В случае пяти узлов получим

y0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

h4

V

 

 

 

 

 

 

 

( 25y0 48y1 36y2 16y3 3y4)

 

 

 

 

y

,

 

12h

 

 

 

5

 

y1

 

1

 

 

 

 

 

 

 

h4

 

 

 

V

 

 

 

 

 

 

 

 

 

( 3y0 10y1 18y2 6y3 y4 )

 

 

y

,

 

 

12h

 

20

 

 

y2

 

1

 

 

 

 

h4

V

 

 

 

 

 

 

 

 

 

 

 

 

 

(y0 8y1 8y3 y4)

 

y ,

 

 

 

 

 

 

 

 

 

 

12h

30

 

 

 

 

 

 

 

 

 

y1

 

1

 

 

 

 

 

 

h4

V

 

 

 

 

 

 

 

 

 

(y0 6y1 18y2 10y3 3y4 )

 

y

 

 

,

 

 

 

 

 

12h

 

20

 

 

 

 

 

 

 

y4

 

1

 

 

 

 

 

 

 

 

 

 

 

h5

 

 

 

V

 

 

 

 

 

 

(3y0 16y1 36y2 48y3 25y4 )

 

 

 

 

 

 

 

y .

 

 

 

12h

 

 

 

 

5

 

 

 

Таким образом, используя значения функции в n+1 узле, получаем аппроксимацию производных n-го порядка точности. Эти формулы можно использовать не только для узлов x1, x2, … , но и для любых узлов xi, xi+1, …, соответствующим образом изменяя значения индексов. Нетрудно убедиться, что наиболее простые выражения, да к тому же с наименьшими коэффициентами в остаточных членах, получаются для производных в центральных узлах при четных n.

 

 

1

(y2

y0)

h2

 

,

n=2,

 

 

 

2h

6

 

 

 

y1

y

 

 

 

 

y2

 

1

 

 

 

 

 

 

 

 

 

h4

V

 

 

 

 

(y0

8y1 8y3

y4)

 

y

,

n=4.

 

12h

30

Они называются аппроксимациями производных центральными разностями и широко используются на практике.

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

66

1

y0 h2 (y2 2y1 y0) O(h) , y1 h12 (y2 2y1 y0) O(h2) ,

1

y2 h2 (y2 2y1 y0) O(h).

В случае четырехточечной аппроксимации получим y0 h12 (2y0 5y1 4y2 y3) O(h2 ),

y1 h12 (y0 2y1 y2) O(h2) , y2 h12 (y1 2y2 y3) O(h2 ) ,

y3 h12 ( y0 4y1 5y2 2y3) O(h2 ).

Для пяти узлов имеем

y0 121h2 (35y0 104y1 114y2 56y3 11y4) O(h3) , y1 121h2 (11y0 20y1 6y2 4y3 y4 ) O(h3),

y2 121h2 ( y0 16y1 30y2 16y3 y4) O(h4), y3 121h2 ( y0 4y1 6y2 20y3 11y4) O(h3),

y4 121h2 (11y0 56y1 114y2 104y3 35y4) O(h3).

Аппроксимации вторых производных с помощью центральных разностей при четных n также наиболее выгодны.

67

Пример. Продифференцировать функцию, заданную в виде таблицы с равномерным шагом.

xk

0,0

0,25

0,5

0,75

1,0

1,25

1,50

1,75

2,0

yk

1,849

1,960

2,028

2,048

2,020

1,944

1,825

1,670

1,489

Решение.

1 способ. Локальное применение интерполяционных формул типа Ньютона на соответствующих участках отрезка [a, b].

> restart;

>n:=9: X:=vector(n);Y:=vector(n);

Вводим массивы координат точек:

>X:=[0,0.25, 0.5, 0.75, 1., 1.25, 1.5, 1.75,2];

>Y:=[1.849, 1.960, 2.028, 2.048, 2.020, 1.944, 1.825, 1.670, 1.489];

Начало и конец отрезка [a, b], на котором задана функция, и шаг h изменения абсцисс {xk}:

> a:=0: b:=2: h:=(b-a)/(n-1);

Определяем конечные разности вплоть до 4-го порядка:

>dY:=[seq(Y[i+1]-Y[i],i=1..n-1)];

>dY2:=[seq(dY[i+1]-dY[i],i=1..n-2)];

>dY3:=[seq(dY2[i+1]-dY2[i],i=1..n-3)];

>dY4:=[seq(dY3[i+1]-dY3[i],i=1..n-4)];

Вблизи левой границы интервала изменения x используем интерполяционную формулу (3.3) при k = 4:

>fleft:=Y[1]+t*dY[1]+t*(t-1)/2*dY2[1]+t*(t-1)* (t-2)/6*dY3[1]+t*(t-1)*(t-2)*(t-3)/24*dY4[1];

Аналогично для конечной части интервала применяется формула (3.4):

>fright:=Y[n]+t*dY[n-1]+t*(t+1)/2*dY2[n-2]+ t*(t+1)*(t+2)/6*dY3[n-3]+ t*(t+1)*(t+2)*(t+3)/24*dY4[n-4];

Для аппроксимации центральной части промежутка [0, 2] воспользуемся формулой Стирлинга:

> m:=5; # номер узла, около которого строится аппроксимация

68

>fmid:=Y[m]+t*(dY[m]+dY[m-1])/2+t^2/2*dY2[m-1]+ t*(t^2-1)/6*(dY3[m-1]+dY3[m-2])/2+ (t^2)*(t^2-1)/24*dY4[m-2];

Внайденных функциях перейдем к переменной x

>g1:=subs(t=(x-a)/h,fleft); g2:=subs(t=(x-X[m])/h,fmid); g3:=subs(t=(x-b)/h,fright);

Определим общую аппроксимирующую функцию в виде кусочной, сшивая три найденных аппроксимации, действующие на соответствующих промежутках:

> g:=piecewise(x<X[4],g1,x<X[6],g2,g3);

т.е. на участке от x1 до x4 берется g1 (fleft), на участке от x4 до x6 – функция g2 (fmid), на остальном промежутке – g3

(fright).

Аналогично находим первую и вторую производные

>gd:=piecewise(x<X[4],diff(g1,x),x<X[6],

diff(g2,x),diff(g3,x));

>gd2:=piecewise(x<X[4],diff(g1,x$2),x<X[6], diff(g2,x$2),diff(g3,x$2));

Вычертим графики аппроксимаций заданной функции и её производной.

> plot(g,x=a..b);

Рис. 3.1

69