14.Численное дифференцирование.
Необходимость
численного дифференцирования возникает, если дифференцируемая функция задана
таблично или в виде сложного аналитического выражения, от которого по известным
правилам математически нельзя взять производную. Пусть f(x)
функция принадлежит классу непрерывных, дифференцируемых функций и представлена
на интервале [a,b] в виде некоторой реализации (таблицы) , f(xi), iÎ[0,N] причем xi+1-xi=h , iÎ[0,N-1]что, как правило, имеет место при решении
практических задач. Разложим f(x) в ряд Тейлора в окрестности точки xi f(x)=f(xi) + f ’(xi)(x-xi)/1! + f ‘’(xi)(x-xi)2/2! + … + R(x), где R(x) – остаточный член ряда Тейлора. Если на
элементарном интервале [xi,xi+1]
ограничиться двумя членами ряда Тейлора, то можно записать f(xi+1) = f(xi) + hf ‘(xi) + R(x) , откуда f ‘(xi) @
[f(xi+1) – f(xi)]/h а методическая погрешность дифференцирования,
определяемая через R(x) , может быть оценена в виде e1£(h/2) max |f ‘’(x)| где
xÎ[xi, xi+1].
Однако, поскольку реализация f(xi) , iÎ[0,N] практически всегда содержит случайные погрешности df(xi), iÎ[0,N] , дифференцированию подлежит на самом деле функция f*(xi)=f(xi)+df(xi). При этом производная вычисляется в виде f*’(xi)@(f(xi+1)-f(xi))/h + (df(xi+1)-df(xi))/h . Уменьшение шага h , с одной
стороны , приводит к увеличению точности вычисления производной ( в пределе,
при h->0 получается истинное значение _ , с другой
стороны , увеличивает близость значений f(xi+1) и f(xi) . Таким образом, при уменьшении h в первом
слагаемом будут вычитаться очень близкие друг к другу числа, в результате чего
верные значащие цифры могут привестись, а обрабатываться будут вычислительные
погрешности, а второе слагаемое при h->0 неограниченно возрастает.
Данное положение приводит к тому , что решение задачи численного
дифференцирования становится неустойчивым , что нарушает корректность
постановки задачи. Регуляризацию можно осуществить путем ограничения шага h
снизу. В частности, если не принимать во внимание вычислительную погрешность и
учитывая, что |df(xi)|£D,
iÎ[0,
N] , шаг дифференцирования рекомендуется выбирать при условии e1£(h/2) max |f ‘’(x)| где
xÎ[xi, xi+1] в виде h @ 2(D/M2)1/2, M2=max|f ‘’(x)| где xÎ[a,b] . Выражение f ‘(xi) @ [f(xi+1) – f(xi)]/h с погрешностью e1£(h/2) max |f ‘’(x)| где
xÎ[xi, xi+1]
представляет собой формулу численного дифференцирования первого порядка
точности ( относительно h ). Производные могут вычисляться по формулам
дифференцирования второго порядка точности, которые для первой и второй
производных записываются в виде f ‘(xi) @ [f(xi+1) – f(xi-1)]/(2h) , e2 £
(h2/6)max |f(3)(x)| где xÎ[xi-1, xi+1] , f ‘’(xi) @ [f(xi+1) – 2f(xi) + f(xi-1) ]/(h2) , e2 £ (h2/12)max |f(4)(x)| где xÎ[xi-1, xi+1].
Рассмотрим другой подход к получению формул численного дифференцирования, базирующийся
на замене дифференцируемой функции интерполяционным полиномом. В этом случае
для вычисления первой производной можно записать f ‘(x) = P’n(x) +R’n(x) ,
где P’n(x) – производная интерполяционного полинома, которая
может быть взята аналитически, а R’n(x) – производная остаточного члена интерполяции, xÎ[a, b].
Однако и в этом случае возникает проблема точности вычисления производной,
поскольку близость дифференцируемой f(x) и полинома Pn(x) вовсе не означает близость их производных. Тем не
менее описанный подход используется для вычисления производных, в том числе и
более первого порядка, хотя каждая производная понижает степень интерполяционного
полинома. В предположении, что дифференцируемая функция y=f(x)
имеет необходимое число производных и на интервале задана в равноотстоящих
точках xi , iÎ[0, n] , запишем для нее интерполяционный полином
Ньютона Pn(x) = y0+tDy0 + [t(t-1)D2y0]/2! + [t(t-1)(t-2)D3y0]/3! + Rn(x) , t =
(x-x0)/h , h=xi+1-xi=const, iÎ[0, n-1] . Учитывая , что dy/dx=[dy/dt]*[dt/dx]=[1/h]*[dy/dt] первую и вторую производные можно вычислять в виде
P’n(x) = [1/h]*[Dy0 + (2t-1)*(D2y0)/2
+ (3t2-6t+2)*(D3y0)/6 + R’n(x)] , P’’n(x) =
[1/h2]*[D2y0 + (t-1)*(D3y0) + R’’n(x)] . По аналогии определяются производные более высоких
порядков. Отметим, что эти выражения записаны для случая, когда производные
определяются в некоторой точке xÎ[a, b] , которая не является узлом интерполяции. В целях
увеличения точности дифференцирования в качестве точки x0 рекомендуется выбирать ближайшее к точке x
значение узла. Если дифференцирование производится в узлах xi , iÎ[0, n] , то эти формулы , существенно упрощаются. Так, полагая
x=x0 и t=0 ,
получаем P’n(x) = [1/h]*[Dy0 - (D2y0)/2 + (D3y0)/3 - (D4y0)/4 + R’n(x)]
, P’’n(x) = [1/h2]*[(D2y0) - (D3y0) +
(11/12)*(D4y0) + R’’n(x)] ,
. Погрешность дифференцирования можно определить, воспользовавшись оценкой
остаточного члена интерполяционной формулы и , например, при вычислении первой
производной, поскольку [d/dt][t(t-1)(t-2)…(t-n)]t=0=(-1)nn! , она имеет вид
ex=x0 @ [(-1)n]*[(Dn+1y0)/(h(n+1))] . В заключение отметим, что при
необходимости дифференцируемую функцию вместо интерполяционного полинома можно
приблизить в виде обобщенного ряда Фурье.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.