Численное дифференцирование

Материал из testwiki
Перейти к навигации Перейти к поиску

Численное дифференцирование — совокупность методов приближённого вычисления значения производной некоторой функции, заданной таблично или имеющей сложное аналитическое выражение.

Конечные разности

Шаблон:Основная статья Производная функции f в точке x определяется с помощью предела:

f(x)=limh0f(x+h)f(x)h.

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

f(x+h)f(x)h

приближает производную функции f в точке x с точностью до величины, пропорциональной h. Использование выражения

f(x+h)f(xh)2h

позволяет сократить ошибку приближения до величины, пропорциональной h2.

Конечными разностями можно также приближать производные высших порядков.

Интерполяция

Если известны значения функции f в некоторых узлах x0,x1,,xN, то можно построить интерполяционный полином PN(x) (например, в форме Лагранжа или в форме Ньютона) и приближенно положить

f(r)(x)PN(r)(x),0rN.

Такие выражения называются формулами численного дифференцирования.

Иногда наряду с приближенным равенством удаётся (например, используя формулу Тейлора) получить точное равенство, содержащее остаточный член R(x), называемый погрешностью численного дифференцирования:

f(r)(x)=PN(r)(x)+R(x),0rN.

Такие выражения называются формулами численного дифференцирования с остаточными членами. Степень, с которой величина h=max{xixi1|i=1,,N} входит в остаточный член, называется порядком погрешности формулы численного дифференцирования.

Далее приводятся несколько формул численного дифференцирования с остаточными членами для первой (r=1) и второй (r=2) производных для равноотстоящих узлов с постоянным шагом h>0, полученных с использованием формулы Лагранжа:

  • r=1,N=1 (два узла):
f(x0)=f1f0hh2f(ξ),
f(x1)=f1f0h+h2f(ξ).
  • r=1,N=2 (три узла):
f(x0)=3f0+4f1f22h+h23f(ξ),
f(x1)=f2f02hh26f(ξ),
f(x2)=f04f1+3f22h+h23f(ξ).
  • r=2,N=2 (три узла):
f(x0)=f02f1+f2h2hf(ξ),
f(x1)=f02f1+f2h2h212f(4)(ξ),
f(x2)=f02f1+f2h2+hf(ξ).
  • r=2,N=3 (четыре узла):
f(x0)=2f05f1+4f2f3h2+11h212f(4)(ξ),
f(x1)=f02f1+f2h2h212f(4)(ξ),
f(x2)=f12f2+f3h2h212f(4)(ξ),
f(x3)=f0+4f15f2+2f3h2+11h212f(4)(ξ).

Здесь fi=f(xi), i=0,,N, а ξ — некоторая промежуточная точка между наибольшим и наименьшим из узлов.

В общем случае коэффициенты формул численного дифференцирования можно вычислить для произвольной сетки узлов и любого порядка производной.

Неустранимая погрешность

В формулах численного дифференцирования с постоянным шагом h значения функции f делятся на hr, где r — порядок вычисляемой производной. Поэтому при малом h неустранимые погрешности в значениях функции f оказывают сильное влияние на результат численного дифференцирования. Таким образом, возникает задача выбора оптимального шага h, так как погрешность собственно метода стремится к нулю при h0, а неустранимая погрешность растет. В результате общая погрешность, которая возникает при численном дифференцировании, может неограниченно возрастать при h0. Поэтому задача численного дифференцирования считается некорректно поставленной.

Комплексные числа

Классические приближения конечными разностями содержат неустранимую погрешность и являются плохо обусловленными. Однако, если функция f является голоморфной, принимает вещественные значения на вещественной прямой и может быть оценена в любой окрестности любой вещественной точки комплексной плоскости, то её производная может быть вычислена устойчивыми методами. Например, первую производную можно сосчитать по формуле с комплексным шагом[1]:

f(x)=Im(f(x+ih))h+O(h2),

где iмнимая единица. Эту формулу можно получить из следующего разложения в ряд Тейлора:

f(x+ih)=f(x)+ihf(x)h2f(x)2!ih3f(x)3!+.

В общем случае производные произвольного порядка можно вычислить с помощью интегральной формулы Коши:

f(n)(a)=n!2πiγf(z)(za)n+1dz.

Интеграл можно вычислять приближённо.

Литература

Примечания

Шаблон:Примечания

См. также

Шаблон:Дифференциальное исчисление

Шаблон:Rq