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

редактировать

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

Derivative.svg
СОДЕРЖАНИЕ
  • 1 Конечные различия
  • 2 Размер шага
  • 3 Другие методы
    • 3.1 Методы высшего порядка
    • 3.2 Высшие производные
  • 4 Методы комплексных переменных
  • 5 Дифференциальная квадратура
  • 6 См. Также
  • 7 ссылки
  • 8 Внешние ссылки
Конечные различия
Дополнительная информация: Конечные различия

Самый простой метод - использовать конечно-разностные аппроксимации.

Простая двухточечная оценка заключается в вычислении наклона ближайшей секущей линии через точки ( x, f ( x)) и ( x  +  h, f ( x  +  h)). Выбирая небольшое число h, h представляет собой небольшое изменение x, и оно может быть как положительным, так и отрицательным. Наклон этой линии равен

ж ( Икс + час ) - ж ( Икс ) час . {\ displaystyle {\ frac {f (x + h) -f (x)} {h}}.}

Это выражение Ньютон «ы разницы фактор (также известный как первый порядок разделенной разность ).

Наклон этой секущей линии отличается от наклона касательной на величину, примерно пропорциональную h. Когда h приближается к нулю, наклон секущей линии приближается к наклону касательной. Следовательно, истинная производная f в точке x является пределом значения коэффициента разности по мере того, как секущие линии становятся все ближе и ближе к касательной:

ж ( Икс ) знак равно Lim час 0 ж ( Икс + час ) - ж ( Икс ) час . {\ displaystyle f '(x) = \ lim _ {h \ to 0} {\ frac {f (x + h) -f (x)} {h}}.}

Поскольку немедленная замена 0 на h приводит к неопределенной форме, вычисление производной напрямую может быть неинтуитивным. 0 0 {\ displaystyle {\ frac {0} {0}}}

Точно так же наклон можно оценить, используя положения ( x  -  h) и x.

Другая двухточечная формула - вычислить наклон ближайшей секущей линии через точки ( x  -  h, f ( x  -  h)) и ( x  +  h, f ( x  +  h)). Наклон этой линии равен

ж ( Икс + час ) - ж ( Икс - час ) 2 час . {\ displaystyle {\ frac {f (x + h) -f (xh)} {2h}}.}

Эта формула известна как коэффициент симметричной разности. В этом случае ошибки первого порядка аннулируются, поэтому наклон этих секущих линий отличается от наклона касательной на величину, приблизительно пропорциональную. Следовательно, для малых значений h это более точное приближение к касательной, чем односторонняя оценка. Однако, хотя наклон вычисляется в x, значение функции в x не участвует. час 2 {\ displaystyle h ^ {2}}

Ошибка оценки определяется выражением

р знак равно - ж ( 3 ) ( c ) 6 час 2 {\ displaystyle R = {\ frac {-f ^ {(3)} (c)} {6}} h ^ {2}},

где какая-то точка между и. Эта ошибка не включает ошибку округления из-за представленных чисел и выполнения вычислений с ограниченной точностью. c {\ displaystyle c} Икс - час {\ displaystyle xh} Икс + час {\ displaystyle x + h}

Фактор симметричной разности используется в качестве метода аппроксимации производной в ряде калькуляторов, включая TI-82, TI-83, TI-84, TI-85, все из которых используют этот метод с h  = 0,001.

Размер шага
См. Также: Адаптивный размер шага Пример, показывающий сложность выбора из-за ошибки округления и ошибки формулы час {\ displaystyle h}

Важным моментом на практике, когда функция вычисляется с использованием арифметики с плавающей запятой, является выбор размера шага h. Если выбрано слишком маленькое значение, вычитание приведет к большой ошибке округления. Фактически, все формулы конечных разностей плохо обусловлены и из-за отмены будут давать нулевое значение, если h достаточно мало. Если оно слишком велико, расчет наклона секущей линии будет более точным, но оценка наклона касательной с использованием секущей может быть хуже.

Для основных центральных различий оптимальным шагом является кубический корень машинного эпсилона. Для формулы численной производной, оцениваемой в x и x + h, выбор h, который является малым без большой ошибки округления, равен (хотя и не при x  = 0), где машинный эпсилон ε обычно имеет порядок 2,2 × 10 −16 для двойной точности. Формула для h, которая уравновешивает ошибку округления с ошибкой секущей для оптимальной точности: ε Икс {\ Displaystyle {\ sqrt {\ varepsilon}} х}

час знак равно 2 ε | ж ( Икс ) ж ( Икс ) | {\ displaystyle h = 2 {\ sqrt {\ varepsilon \ left | {\ frac {f (x)} {f '' (x)}} \ right |}}}

(но не когда), и для его использования потребуется знание функции. ж ( Икс ) знак равно 0 {\ displaystyle f '' (x) = 0}

Для одинарной точности проблемы усугубляются, потому что, хотя x может быть представимым числом с плавающей запятой, x + h почти наверняка не будет. Это означает, что x + h будет изменено (округлением или усечением) на ближайшее машинно-представимое число, в результате чего ( x  +  h) -  x не будет равно h ; две оценки функции не будут находиться точно через h. В этом отношении, поскольку большинство десятичных дробей являются повторяющимися последовательностями в двоичной системе (точно так же, как 1/3 в десятичной системе), кажущийся округлым шагом, такой как h  = 0,1, не будет округлым числом в двоичной системе; это 0,000110011001100... 2 Возможный подход:

 h := sqrt(eps) * x; xph := x + h; dx := xph - x; slope := (F(xph) - F(x)) / dx;

Однако в случае с компьютерами средства оптимизации компилятора могут не учитывать детали реальной компьютерной арифметики и вместо этого применять математические аксиомы для вывода, что dx и h одинаковы. В C и подобных языках директива о том, что xph является изменчивой переменной, предотвратит это.

Другие методы

Методы высшего порядка

Дополнительная информация: Коэффициент конечной разности

Существуют методы высшего порядка для приближения производной, а также методы для высших производных.

Ниже приведен пятиточечный метод для первой производной ( пятиточечный шаблон в одном измерении):

ж ( Икс ) знак равно - ж ( Икс + 2 час ) + 8 ж ( Икс + час ) - 8 ж ( Икс - час ) + ж ( Икс - 2 час ) 12 час + час 4 30 ж ( 5 ) ( c ) , {\ displaystyle f '(x) = {\ frac {-f (x + 2h) + 8f (x + h) -8f (xh) + f (x-2h)} {12h}} + {\ frac {h) ^ {4}} {30}} f ^ {(5)} (c),}

где. c [ Икс - 2 час , Икс + 2 час ] {\ displaystyle c \ in [x-2h, x + 2h]}

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

Высшие производные

Используя коэффициент разности Ньютона,

ж ( Икс ) знак равно Lim час 0 ж ( Икс + час ) - ж ( Икс ) час {\ displaystyle f '(x) = \ lim _ {h \ to 0} {\ frac {f (x + h) -f (x)} {h}}}

может быть показано следующее (для n gt; 0):

ж ( п ) ( Икс ) знак равно Lim час 0 1 час п k знак равно 0 п ( - 1 ) k + п ( п k ) ж ( Икс + k час ) {\ displaystyle f ^ {(n)} (x) = \ lim _ {h \ to 0} {\ frac {1} {h ^ {n}}} \ sum _ {k = 0} ^ {n} ( -1) ^ {k + n} {\ binom {n} {k}} f (x + kh)}
Методы комплексных переменных

Классические конечно-разностные приближения для численного дифференцирования плохо обусловлены. Однако, если это голоморфная функция, действительная на вещественной прямой, которая может быть вычислена в точках на комплексной плоскости рядом, то существуют стабильные методы. Например, первая производная может быть вычислена по формуле комплексной производной: ж {\ displaystyle f} Икс {\ displaystyle x}

ж ( Икс ) знак равно ( ж ( Икс + я час ) ) час + О ( час 2 ) , я 2 знак равно - 1. {\ displaystyle f ^ {\ prime} (x) = {\ frac {\ Im (f (x + \ mathrm {i} h))} {h}} + O (h ^ {2}), \ quad \ mathrm {i ^ {2}}: = - 1.}

Эта формула может быть получена путем разложения в ряд Тейлора :

ж ( Икс + я час ) знак равно ж ( Икс ) + я час ж ( Икс ) - час 2 ж ( Икс ) / 2 ! - я час 3 ж ( 3 ) ( Икс ) / 3 ! + . {\ displaystyle f (x + \ mathrm {i} h) = f (x) + \ mathrm {i} hf ^ {\ prime} (x) -h ^ {2} f '' (x) / 2! - \ mathrm {i} h ^ {3} f ^ {(3)} (x) / 3! + \ cdots.}

Формула комплексной производной действительна только для вычисления производных первого порядка. Обобщение вышеизложенного для вычисления производных любого порядка использует многокомплексные числа, что приводит к многокомплексным производным.

ж ( п ) ( Икс ) C п 2 - 1 ( п ) ( ж ( Икс + я ( 1 ) час + + я ( п ) час ) ) час п {\ displaystyle f ^ {(n)} (x) \ приблизительно {\ frac {{\ mathcal {C}} _ ​​{n ^ {2} -1} ^ {(n)} (f (x + \ mathrm {i } ^ {(1)} h + \ ldots + \ mathrm {i} ^ {(n)} h))} {h ^ {n}}}}

где обозначают многокомплексные мнимые единицы;. Оператор извлекает й составляющую мультикомплекса числа уровня, например, извлекает реальный компонент и извлекает последнюю «большую мнимую» составляющую. Метод может применяться к смешанным производным, например к производной второго порядка. я ( k ) {\ Displaystyle \ mathrm {я} ^ {(к)}} я ( 1 ) я {\ Displaystyle \ mathrm {я} ^ {(1)} \ эквив \ mathrm {я}} C k ( п ) {\ displaystyle {\ mathcal {C}} _ ​​{k} ^ {(n)}} k {\ displaystyle k} п {\ displaystyle n} C 0 ( п ) {\ displaystyle {\ mathcal {C}} _ ​​{0} ^ {(n)}} C п 2 - 1 ( п ) {\ Displaystyle {\ mathcal {C}} _ ​​{п ^ {2} -1} ^ {(п)}}

2 ж ( Икс , у ) Икс у C 3 ( 2 ) ( ж ( Икс + я ( 1 ) час , у + я ( 2 ) час ) ) час 2 {\ displaystyle {\ frac {\ partial ^ {2} f (x, y)} {\ partial x \, \ partial y}} \ приблизительно {\ frac {{\ mathcal {C}} _ ​​{3} ^ { (2)} (е (х + \ mathrm {i} ^ {(1)} h, y + \ mathrm {i} ^ {(2)} h))} {h ^ {2}}}}

Доступна реализация мультикомплексной арифметики на C ++.

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

ж ( п ) ( а ) знак равно п ! 2 π я γ ж ( z ) ( z - а ) п + 1 d z , {\ displaystyle f ^ {(n)} (a) = {\ frac {n!} {2 \ pi i}} \ oint _ {\ gamma} {\ frac {f (z)} {(za) ^ { п + 1}}} \, \ mathrm {d} z,}

где интегрирование производится численно.

Использование комплексных переменных для численного дифференцирования было начато Лайнессом и Молером в 1967 году. Их алгоритм применим к производным более высокого порядка.

Метод, основанный на численном обращении комплексного преобразования Лапласа, был разработан Абате и Дубнером. Алгоритм, который можно использовать, не требуя знания метода или характера функции, был разработан Форнбергом.

Дифференциальная квадратура

Дифференциальная квадратура - это приближение производных с использованием взвешенных сумм значений функций. Дифференциальная квадратура представляет практический интерес, поскольку позволяет вычислять производные по зашумленным данным. Название аналогично квадратуре, что означает численное интегрирование, где взвешенные суммы используются в таких методах, как метод Симпсона или правило трапеций. Существуют различные методы определения весовых коэффициентов, например, фильтр Савицкого-Голея. Дифференциальная квадратура используется для решения уравнений в частных производных. Существуют и другие методы вычисления производных на основе зашумленных данных.

Смотрите также
использованная литература
внешние ссылки
Последняя правка сделана 2023-03-21 05:11:51
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте